Stap 6: Meer programmering...
Het probleem met de schets (boven) we hebben tot nu toe is dat we onze inch met een live update niet veranderen. De bovenstaande code alleen de hoeveelheid inch eenmaal afgedrukt. Nu dit fijn voor de voeten, of wat we converteert naar, maar onze variabele is, is dit verschrikkelijk! We kunnen niet zelfs kiezen welk nummer we voor inches willen! Ik gebruikte om te bevestigen dit, een procedure voor geringe om afdrukken van de gegevens (inch) op het LCD-scherm en schakel het 50 keer, dat me een goede nummer veranderen volgens mijn draaien van de pot geeft. De onderstaande code herhaalt alle code tussen de blokken 50 keer, en met de vertraging ingesteld op 100, dat ongeveer 5 seconden (50 * 100).<pre> for(int i=0; i<50; ++i) { int sensorValue = analogRead(A0); // read the input on analog pin 0: float inches = sensorValue * (500 / 1023.0); lcd.print("Adjust the knob"); lcd.setCursor(0,1); lcd.print(inches); delay(100); lcd.clear(); }
In de tekening hierboven, zal in plaats daarvan alleen zien van het bedrag van inch eens, het herhalen dit vaak, zodat u om het te zien als het updates (in unisono met het draaien van de tweede pot).
De onderstaande code uploaden moet dit doen:
- "Welcome to de Convertor van de eenheid!"
- "De knop aanpassen" met het aantal inch eronder. Dit zal worden weergegeven voor 5 seconden. Zet uw pot!
- Print het bedrag van de duim
- Duidelijk
- Print het bedrag voeten
- Terug naar "Pas de knop"
<pre>#include <LiquidCrystal.h> LiquidCrystal lcd(12, 11, 5, 4, 3, 2); int lcdbl = 10; // lcdbl=LCD Backlight: hooking up the lcdbacklight to pin 10 int feet; int wait = 3000; // assign the word "wait" to 3000 milliseconds void setup() { lcd.begin(16,2); digitalWrite(lcdbl, HIGH); pinMode(lcdbl, OUTPUT); // set pin 11 to output lcd.print("Welcome to the"); lcd.setCursor(0,1); // the cursor is like the rows on your LCD. After this, it will print // the text on the bottom line of your LCD screen. lcd.print("unit converter!"); delay(wait); /* if you look here, intead of the usual time in milliseconds it says "wait". If we look what "wait" is, at the beginning of the code, we see that "wait" is assigned to 3000 milliseconds, so whenever I type in delay(wait); it wil have a delay of 3000 milliseconds, or 3 seconds. */ lcd.clear(); delay(1000); } void loop() { for(int i=0; i<50; ++i) { int sensorValue = analogRead(A0); // read the input on analog pin 0: float inches = sensorValue * (500 / 1023.0); lcd.print("Adjust the knob"); lcd.setCursor(0,1); lcd.print(inches); delay(100); lcd.clear(); } int sensorValue = analogRead(A0); // read the input on analog pin 0: float inches = sensorValue * (500 / 1023.0); delay(1000); lcd.print(inches); lcd.print(" inches:"); delay(wait); lcd.clear(); delay(1000); feet = (inches / 12); // conversion from feet to inches Here this is telling Arduino that // feet is equal to inches divided by 12 lcd.print(feet); lcd.print(" feet:"); delay(wait); lcd.clear(); delay(1000); }