Force Feedback met LCD-scherm (3 / 4 stap)

Stap 3: Gedetailleerd programma overzicht

Hier gaan we over de vier nieuwe functies die zijn toegevoegd, en elk wordt uitgelegd. Als de andere delen van de code u verwarren, controleert de controle de belasting Feedback Instructable voor een gedetailleerde uitleg van de rest van de code.

Ten eerste, de read_LCD_buttons()-functie. Deze functie doet een analogRead() op de knop pin van het LCD-scherm, en vergelijkt de waarde die deze naar de knop Voorinstelling waarden wordt gelezen. Als de waarde valt binnen de geprogrammeerde waarde (plus of minus de drempel), is resultaat het welke knop werd ingedrukt. Als het niet overeenkomt met een van de geprogrammeerde waarden, die wordt geretourneerd als geen knop wordt ingedrukt.

 adc_key_in = analogRead(A0); // read the value from the sensor delay(20); if (adc_key_in > none - threshold && adc_key_in < none + threshold) return btnNONE; if (adc_key_in > btnup - threshold && adc_key_in < btnup + threshold) return btnUP; if (adc_key_in > btndown - threshold && adc_key_in < btndown + threshold) return btnDOWN; if (adc_key_in > btnleft - threshold && adc_key_in < btnleft + threshold) return btnLEFT; if (adc_key_in > btnright - threshold && adc_key_in < btnright + threshold) return btnRIGHT; if (adc_key_in > select - threshold && adc_key_in < select + threshold) return btnSELECT; return btnNONE; // when all others fail, return none 

Ten tweede, de updateTrip()-functie. Dit controleert de Up en Down knoppen, en Hiermee vergroot of verkleint de limiet van de reis dienovereenkomstig. Het heeft debouncing ook, zodat de waarde van de reis niet te snel bijwerken. U kunt updateTime als u wilt wijzigen hoe snel de reis waarden bijwerken. U kunt Houd de knop reis waarden snel veranderen. Door het veranderen van updateTime, kunt u wijzigen hoe snel (of langzaam) de reis waarde verandert wanneer u omhoog houden of omlaag knop naar beneden. Als de waarde 0 raakt en u verder naar beneden, zal het rollen op 999. Als u 999 raken en blijven, zal het rollen op 0.

 if (button == btnUP) { currentTimetrip = millis() - lastUpdate; if (currentTimetrip > updateTime) { maxAmps = maxAmps + 1; if (maxAmps > 999) maxAmps = 0;//check for rollover lastUpdate = millis(); }//end if }//end if btnUP else if (button == btnDOWN) { currentTimetrip = millis() - lastUpdate; if (currentTimetrip > updateTime) { maxAmps = maxAmps - 1; if (maxAmps < 0) maxAmps = 999;//check for rollover lastUpdate = millis(); }//end if }//end else if btnDOWN 

Ten derde is de updateLCD() functie. Dit schrijft nieuwe waarden naar het LCD-scherm, zodat u kunt zien wat er gebeurt in uw programma. Het setCursor() gebruikt om de cursor rond het scherm, en de berichten op de juiste plaats zetten. de eerste waarde in setCursor() is de rijpositie waarin de cursor zich bevindt, de tweede waarde is of de cursor in de bovenste of onderste rij. Omdat de limiet van de reis tussen 0-999 worden kan, wordt de cursor verplaatst naar verschillende plekken afhankelijk van als een waarde van 1, 2 of 3 cijfers is. Er zijn afgedrukte spaties ("") die worden gebruikt om de plek waar het nummer is gedrukt. Als de plek niet gewist was, wanneer u van een 2 cijferige waarde tot een waarde van 1 cijfer, zal niet het tweede cijfer krijgen uitgeschakeld wanneer het eerste cijfer wordt bijgewerkt, wat betekent dat uw LCD-scherm rare getallen wilt weergeven.

 lcd.setCursor(0, 1); lcd.print("Amps: 0"); lcd.setCursor(8, 1); lcd.print("Trip: 0"); lcd.setCursor(13, 1); lcd.print(" ");//clear old value if (maxAmps > 99) lcd.setCursor(13, 1); else if (maxAmps > 9) lcd.setCursor(14, 1); else lcd.setCursor(15, 1); lcd.print(maxAmps);//write new value 

Laatste is de printFeedback() functie. Het is zeer vergelijkbaar met de updateLCD() functie, het is gewoon aparte zodat de waarde van de huidige amp loting wordt bijgewerkt in real-time, liever dan eens elke keer dat het programma een lus. Deze functie wordt aangeroepen voor het bijwerken van het amp trekt wanneer de functie getFeedback() wordt aangeroepen om te lezen wat het amp tekent is.

 lcd.setCursor(5, 1); lcd.print(" "); if (CRaw > 99) lcd.setCursor(5, 1); else if (CRaw > 9) lcd.setCursor(6, 1); else lcd.setCursor(7, 1); lcd.print(CRaw); 

Gerelateerde Artikelen

Hoe maak je een Emoticon vest met LCD-scherm

Hoe maak je een Emoticon vest met LCD-scherm

Concept:Ik zou graag een jasje dat een kleine LCD-scherm heeft voor het maken van subteksten voor interpersoonlijke menselijke interactie. De gebruiker zou een beperkte "toetsenbord" met krachtsensors en knoppen onder zachte silicone toetsen geb
Ultrasone afstandsmeter met LCD-scherm van Arduino UNO

Ultrasone afstandsmeter met LCD-scherm van Arduino UNO

In deze tutorial gaan we zien een ander gebruik van de HC-SR04 ultrasone module. In deze module wordt vaak gebruikt op robots en speelgoedauto's te vinden van belemmeringen, maar het kan worden gebruikt voor het meten van afstanden ook.Afstanden geme
Raspberry Pi + Arduino Serial met LCD-scherm

Raspberry Pi + Arduino Serial met LCD-scherm

IntroDit is mijn Raspberry Pi info LCD, ik wilde proberen en krijgen de Arduino en de Raspberry Pi met elkaar praten via USB seriële en ik maakte dit kleine project.De Raspberry Pi een python-script gebruikt om de gegevens en stuurt het als tekenreek
Draagbare Arduino Uno temperatuur en luchtvochtigheid Sensor met LCD-scherm

Draagbare Arduino Uno temperatuur en luchtvochtigheid Sensor met LCD-scherm

Hey iedereen. Ik heb een heleboel geweldige ideeën uit instructables gekregen door de jaren heen. Aangezien dit mijn eerste ' ible, ik figuur ik iets wat ik zo goed gemaakt zou delen. Ik ben het invoeren van dit in het volledige Spectrum Laser wedstr
Arduino draagbare Weather Monitor, hoogtemeter, temperatuur, vochtigheid, met behulp van DHT11 en BMP85 met LCD-scherm met behulp van slechts 3 pins

Arduino draagbare Weather Monitor, hoogtemeter, temperatuur, vochtigheid, met behulp van DHT11 en BMP85 met LCD-scherm met behulp van slechts 3 pins

ik heb dit project, omdat ik vaak bergen zoals in de afbeelding beklimmen en ik moet weten de hoogte, de temperatuur en ook wijzigingen in de weersomstandigheden, soms in slechts enkele minuten het weer krijgen zeer slecht, met een zeer dichte mist,
Digitale oscilloscoop met LCD-scherm

Digitale oscilloscoop met LCD-scherm

Ik heb geprobeerd om eenvoudige en goedkope oscilloscoop met behulp van gemeenschappelijke delen van hedendaagse component retailers. Bij het maken, ik heb geprobeerd om het verminderen van het aantal delen, met behoud van het minimum nodig voor de f
Ultrasone sensor robot auto met gebruikte motorfiets accu met LCD-scherm

Ultrasone sensor robot auto met gebruikte motorfiets accu met LCD-scherm

Deze robot auto werkt met ultrasone sensor HC-SR04 en met gebruikte 12V motorfiets accu aangedreven.Stap 1: Lichaam van de robot-auto De robot-lichaam met behulp van triplex en een vlak stuk van hout te maken. Snijd de multiplex in een 9 inch door 6
Thermohygrometer met klok en LCD-scherm van Arduino UNO

Thermohygrometer met klok en LCD-scherm van Arduino UNO

Deze 7 stappen rijdt u door de "bouw" van een thermo-hygrometer met klok op Arduino UNO.Gegevens en de tijd, de vochtigheid en de temperatuur worden getoond op een LCD 16 x 2 weergeven. Als u een LCD-scherm hebt aangeschaft en wilt weten hoe goe
Arduino-Bit mappig op LCD-scherm met LOGO

Arduino-Bit mappig op LCD-scherm met LOGO

Dit project van Arduino wordt gebruikt voor weergave Arduino LOGO op LCD-scherm met behulp van de functie van de createChar van LiquidCrystal bibliotheek.In dit is het LOGO een teken van de aangepaste ontworpen door een binaire waarde te geven aan el
Netduino GPS met LCD Display

Netduino GPS met LCD Display

OverzichtIk vond een ongebruikte Netduino V1 kaartje in mijn vak delen dus wilde iets die kon ik draag het te vinden. Het was al aangesloten op een Nokia 5110 LCD display voor een eerder onvoltooide project. Het omhoog het aandrijven, vond ik dat bei
DS18B20 temperatuursonde met LCD

DS18B20 temperatuursonde met LCD

De DS18B20 komt in een temperatuur sonde formulier, dat waterdicht is. Ik had een echte harde tijd proberen om dit één werkend te krijgen en ik dacht dat ik zou delen hoe ik op het einde kreeg het werkend. Geniet van!Stap 1: onderdelenDe onderdelen d
Arduino HC-SR04 (met LCD)

Arduino HC-SR04 (met LCD)

HalloIn deze tutorial ga ik je laten zien hoe 1. De HC-SR04 verbinden met een arduino en afdrukken van de afstand tot de seriële monitor, 2. Verbind een LCD en de resultaten er in plaats daarvan afdrukken. De sensor werkt door pingen een ultrasone ge
Hookup een LCD-scherm aan een Arduino in 6 seconden met 3, niet 6 pins

Hookup een LCD-scherm aan een Arduino in 6 seconden met 3, niet 6 pins

het toevoegen van een LCD-scherm aan de Arduino projecten kan echte waarde toevoegen de kosten doen dus kan echter aanzienlijk. Niet een financiële kosten - u kunt oprapen 16 (tekens) x 2 (rijen) LCD voor zo weinig zoals £3,50. De kosten is het telle
Magic 8 Ball Esp8266 en I2c LCD-scherm met

Magic 8 Ball Esp8266 en I2c LCD-scherm met

Ik dacht dat het zou een beetje leuk om te maken een Magic 8 Ball met behulp van een Arduino en een i2c LCD-scherm, dus hier zijn sommige instructies op hoe dit te doen.Stap 1: Spullen die je zal nodigVan een soort Arduino (ik gebruik een esp8266 maa