Arduino Uno menymall (3 / 3 steg)
Steg 3: Programmering knappar till aktiviteter
Denna LCD sköld har 6 knappar, endast 4 som jag använder i mitt program. Det finns en select, upp, ner, vänster, höger, och lägga rätt knapp. Återställ är svårt kabelansluten till Arduino Uno Återställ så det finns inget vi kan göra med den. Knappen Välj lämnas bort av mitt program och jag använde bara den högra knappen istället. Av någon anledning att ha knappen Välj vara så långt till vänster om upp och ner kändes onaturlig för menynavigering.
Den funktion som avgör vilken knapp du bara tryckt kallas evaluateButton(). Precis innan du anropa funktionen måste du läsa den analoga signalen från A0 ingång på Uno och spara den till variabeln readKey. När du anropar funktionen evaluateButton() göra det evaluateButton(readKey). Detta kommer att skicka att funktionen signalen från A0 och funktionen kommer att avgöra vilken knapp som är associerad med och returnerar numret på knappen i heltal form.
Här är ett exempel på efterlyser en knappen check:
int knappen; Deklarerar en variabel färska knappen
readKey = analogRead(0); Läser den analoga signalen från A0 och sparar det till readKey
om (readKey < 790) {/ / om signalen sjunker under 790 som innebär att en knapp var
är nedtryckt. Den om uttalande förseningar i programmet för 100 mikrosekunder
Dämpningstid du trycker på knappen och låta spänning stabilisera
Delay(100);
readKey = analogRead(0); När spänningen har stabiliserats läser signalen igen
}
knappen = evaluateButton(readKey); Anropa funktionen evaluateButton och skicka den readKey data
Oavsett heltal kommer tillbaka spara den till variabeln knapp
Funktionen evaluateButton() ser ut så här:
int evaluateButton(int x) {
int resultatet = 0;
om (x < 50) {
resultat = 1; höger
} else om (x < 195) {
resultat = 2; upp
} else om (x < 380) {
resultat = 3; ned
} else om (x < 790) {
resultat = 4; vänster
}
returnera resultat;
}
Det enklaste och renaste sättet att använda den knapp variabeln är med en switch/fall. En switch/fall funktion i huvudsak ser på den knapp variabeln och matchar det till "fallet". Programmering i så fall utförs om det matchar knappen intryckt. Till exempel:
Växla (knappen) {
fall 0: / / när knappen återgår som 0
bryta;
fall 1: / / när knappen återgår som 1
LCD.Clear();
LCD.Print ("framåt");
bryta;
fall 2: / / när knappen återgår som 2
LCD.Clear();
LCD.Print ("upp knappen");
bryta;
fall 3: / / när knappen återgår som 3
LCD.Clear();
LCD.Print ("ner knappen");
bryta;
}
Idealiskt ska du kapsla knappen utvärdering samtalet och switch/fallet i en do / medan eller medan slinga som kommer att fortsätta att köra tills en knapp trycks.