Nybörjare Arduino (15 / 15 steg)

Steg 15: Knappen som toogle

Ibland kommer du vara intresserad av precis när en knapp trycks ned och släpps, så du kan utlösa en händelse i din skiss. I detta fall måste du lagra currentState om knappen och jämföra det med den senast inspelade tillståndet. Om currentState är hög och lastState är låg, då vet du bara har tryckt på knappen. Ta en titt på koden nedan:

Knappen Press detektion - enda meddelande

int buttonPin = 7.
booleska currentState = låg, //stroage för aktuella knappläge
booleska lastState = låg, //storage för sista knappen stat

void setup() {
pinMode (buttonPin, ingång); //this tid vi kommer att ange PIN-koden som indata
Serial.BEGIN (9600); //initialize seriell anslutning
}

void loop() {
currentState = digitalRead(buttonPin);
om (currentState == hög & & lastState == låg) {//if-knappen bara har tryckt
Serial.println("Pressed");
fördröjning (1), //crude form av knappen debouncing
} else om (currentState == låg & & lastState == hög) {
Serial.println("Released");
fördröjning (1), //crude form av knappen debouncing
}
lastState = currentState;
}

Jag använde något nytt i min om uttalande:

om (currentState == hög & & lastState == låg)

Detta läser som "om currentState är hög och lastState är låg", & & tillåter oss att kontrollera sanningshalten i många saker i samma om uttalande. Du kan också använda || ("eller") att testa är en sak eller andra är sant. Läs mer här.

Du märker också följande rad visas två gånger i koden ovan:

Delay(1);

Denna försening sattes i det för att ge knappen tid sedimentera till stadig spänning innan vi börjar mäta det igen, detta kallas knappen debouncing; Det hindrar oss från att räkna en enda tryckning som två pressar på grund av knappen chattare. Använda en fördröjning att knappen debouncing är bra för detta enkla exempel, men om du mäter en massa knappar förseningar kommer att lägga upp och göra din kod att köra mycket långsamt. Detta kan hamna ger din hårdvara en eftersläpande känsla. Jag ska ta några bättre tekniker för att göra debouncing senare i denna klass.

Denna kod införs också en ny datatyp: boolean. Booleans används för att lagra 1 bit bitar av information, saker som sant/falskt, på/av, 1/0, för hög/låg. I min koden använde jag den att lagra aktuell och senaste delstaten knappen (högt eller lågt).

Här är hur vi kan använda detta för att växla en LED på och av varje gång knappen trycks:

Knappen Växla LED

int ledPin = 9;
int buttonPin = 7.
booleska currentState = låg, //stroage för aktuella knappläge
booleska lastState = låg, //storage för sista knappen stat
booleska ledState = låg, //storage för det aktuella läget för LED (av/på)

void setup() {
pinMode (buttonPin, ingång); //this tid vi kommer att ange PIN-koden som indata
pinMode (ledPin, produktionen);
Serial.BEGIN (9600); //initialize seriell anslutning
}

void loop() {
currentState = digitalRead(buttonPin);
om (currentState == hög & & lastState == låg) {//if-knappen bara har tryckt
Serial.println("Pressed");
fördröjning (1), //crude form av knappen debouncing

växla mellan statligt av LED
om (ledState == hög) {
digitalWrite (ledPin, låg);
ledState = låg;
} annat {
digitalWrite (ledPin, hög);
ledState = hög;
}
}

lastState = currentState;
}

I koden ovan jag satt upp en variabel som kallas "ledState" för att spara det aktuella läget för LED, sedan varje gång knappen trycktes, jag använde digitalWrite ska LED den motsatta och sparat en ny ledState.

Du kan använda knappen Växla koden med fader koden från exemplet RGB LED för följande går ännu längre:

Knappen Press detektion - enda meddelande

PIN-anslutningar
int rött = 9.
int grön = 10;
int blå = 11;
int buttonPin = 7.

booleska currentState = låg, //stroage för aktuella knappläge
booleska lastState = låg, //storage för sista knappen stat
int currentColor = röd; //storage för nuvarande färg

void setup() {
pinMode (buttonPin, ingång); //this tid vi kommer att ange PIN-koden som indata
pinMode (röd, produktionen);
pinMode (blå, OUTPUT);
pinMode (grön, utgång);
Serial.BEGIN (9600); //initialize seriell anslutning
digitalWrite (currentColor, hög), //initialize med currentColor på (full ljusstyrka)
}

void loop() {
currentState = digitalRead(buttonPin);
om (currentState == hög & & lastState == låg) {//if-knappen bara har tryckt
Serial.println("Pressed");
fördröjning (1), //crude form av knappen debouncing

int nextColor = getNextColor(currentColor);
fader (currentColor, nextColor);
currentColor = nextColor;

}

lastState = currentState;

}

int getNextColor(int color) {//helper funktion som ger oss nästa färg att blekna till
om (färg == red) returnera grön;
om (färg == green) returnera blå;
om (färg == blå) returnera röd;
}

{Ogiltig fader (int color1, int color2)
för (int ljusstyrka = 0; ljusstyrka < 256; ljusstyrka ++) {
analogWrite (color1, 255-ljusstyrka);
analogWrite (color2, ljusstyrka);
Delay(2);
}
}

Jag la en extra hjälpare funktion i koden ovan för att välja nästa färg att blekna till:

int getNextColor (int färg) {

om (färg == red) returnera grön;
om (färg == green) returnera blå;
om (färg == blå) returnera röd;

}

Jag förklarade funktionen med en int att berätta Arduino att det bör förvänta sig funktionen returnerar ett tal (i detta fall antalet Arduino stift som har anslutits till en av RGB LED stift. De uttalanden ser lite annorlunda att vad vi har sett förut, jag kunde ha skrivit funktion så här:

int getNextColor (int färg) {
om (färg == red) {
returnera grönt;
}
om (färg == green) {
returnera blå;
}
om (färg == blå) {
returnera röda;
}
}

.. .och det skulle fungera på exakt samma sätt. Om du bara behöver köra en rad i en if-sats, kan du använda stenografi:

om (något) EnMetod;

utan klammerparenteser eller linebreaks.

Fortsätta att del 2 i denna serie här, eller lära dig att ansluta MIDI till Arduinos in- och utgångar.

Se Steg
Relaterade Ämnen

Trafikljus [nybörjare Arduino projekt]

detta är en nybörjare projekt för Arduino. Jag använder Arduino Uno men bör fungera med liten eller ingen förändring på andra arduino modeller.Ställa in hårdvaran är mycket enkelt. Detta projekt är mer av ett verktyg för att lära sig hur man programm...

Blinky dumskalle (nybörjare Arduino projekt)

Detta är bara en kul liten tillägg till ditt skrivbord.Tack till min syster för att göra papper kub och hår!Steg 1: Samla dina leveranser.Steg 2: Rita en rektangel som är 2 1/2 X 10 "Steg 3: Rita linjer som är 2 1/2 apart.Steg 4: Dra 2 mer rutor och...

En nybörjare Arduino projekt: Tri Colour by en Bi färg LED

Hej och Välkommen till min 7th instructable. Denna gång jag leker med min nya TRduino duemilanove. Faktiskt det är en klon av Arduino görs av Thinnkware och har ATMega 328.Arduino är en mycket bra programmerare och det är också öppen källkod (sak jag...

Nybörjare Arduino - med en 1,8 tums TFT-skärm

Detta är din inledande guide till att använda en 1.8 i TFT-skärm med en Arduino. Jag gillar 1,8 i displayen för dess liten storlek och låg kostnad. Jag fick min för ca $10 på ebay, här. Det kommer inte med instruktioner men med lite forskning och mix...

DIY Home Automation för nybörjare. Absolut ingen kodning eller lödning behövs. Android/Arduino för att växla saker på och av

Denna instructiable är att den absoluta nybörjaren. Om du kan hantera en vass kniv utan att skära kan fingrarna av dig göra och anpassa denna hemautomation controller.Dessa instruktioner är också on-line på www.pfod.com.au under Android / Arduino för...

Arduino och LM35 baserade temperaturvakt för nybörjare

IntroduktionGör din egen temperaturövervakningssystem genom att använda Arduino och LM35 analoga temperatursensor. Detta är en mycket enkel DIY projekt för Arduino nybörjare. Alla åtgärder och krav som nämns i detalj nedan.Obs:- Denna handledning är...

Färg sensorer och Arduino seriell kommunikation för nybörjare

Hej alla, jag ska prata om färg sensorer: hur man bygger och kalibrera en och hur man använder det med seriell kommunikation genom en Arduino ombord.Det sista steget förklarar hur jag använde detta projekt för en Gimp (står för "GNU Image Manipulatio...

Arduino Intel Edison - nybörjare vattning Guide - Uncomplete

Hej alla,Här är min lilla guide för mitt projekt Intel IOT "Växt Rehab Installation".Min huvudsakliga koncept är att föra växter de bästa förutsättningarna att växa tack vare en Automatisk installation, drivs av Arduino - Intel Edison. Jag är ny...

Arduino trafikljus för nybörjare

setup() { // code in here runs once } voidloop() { // after the setup function, code in here runs over and over }T/FE5GXM7HKHPPROUTPUTT.MEDIUM.jpg"> * pinMode 8 / pinMode(3, OUTPUT); 4 / 3 HIGH 1 digitalWrite - uppdaterad till att omfatta trafiklj...

Handledning en: Arduino Switch ljus (nr Arduino programmering behövs) [nybörjare]

i detta Instructable syftar till nybörjare i magin i Arduino, kommer jag visa dig hur man gör en enkel krets som kräver ingen programmering att bygga. Jag att detta för barn som jag, som är förvånad med världen av datorer och elektronik och är ivriga...

Arduino projekt - E-Dice! (Nybörjare)

Tja, jag fick just min Arduino kit med posten igår, och jag var mycket glad att komma igång! Efter ungefär en timme eller två, jag bestämde mig att börja göra något roligt:En elektronisk tärning. Jag var tvungen att göra detta själv, eftersom det fan...

Kodgenerator för anpassade Android/Arduino menyer att slå Arduino utgångar på och av. Android/Arduino för nybörjare. Absolut ingen programmering krävs

Uppdatering: användare frågade för undermeny support. pfodApp alltid stött sub-menyerna men jag har lagt undermenyer till pfodDesigner. Den instructable Design A Custom menysystemet visar hur du använder pfodDesigner för att bygga en meny med underme...

Arduino för nybörjare, nu med data plottning, kontrolleras av Android, utan kodning, ingen lödning behövs.

IntroductionDetta instructable visar dig hur du kan läsa och skriva digital stiften på din Arduino Uno och läsa värden från de analoga pins alla styrs från din Android mobil utan att göra någon kodning. Hela projektet är plug and play. Ingen lödning...

Enkelklick på/av från din Android mobil med hjälp av Arduino och pfodApp. Arduino för nybörjare

IntroduktionDetta instructable visar hur du kan byta en Arduino utgång på och bort från din Android mobil med bara ett klick på ikonen pfodApp . Lägga till ett relä som drivs av denna utgång för att växla den riktig hårdvaran. Ingen Android kodning k...

SUPER ENKEL NYBÖRJARE ROBOT II (ARDUINO UNO VER.)

Detta "vänners kompatibla är baserad på min ganska populära SUPER enkel nybörjare ROBOT" vänners kompatibla. Efter många, många förfrågningar att tillhandahålla en uppdaterad version Arduino, är här det!Jag skapade detta Instructable, och dess f...

Arduino OLED termometer och Hygrometer med DHT11 för nybörjare

Hej! Jag ska visa dig hur man gör en Arduino OLED termometer och hygrometer * med DHT11.OLED vi använder idag är 1.3″ tum i storlek, funktioner 128 × 64 pixlar och använder SPI bussen. På nästa steg hittar du mer nyttig information om OLED tech och d...

Hemautomation (för nybörjare) med Arduino och Bludrinodroid

Detta är ett bra projekt för nybörjare på hemautomation. Bludrinodroid är en fantastisk app som inte många vet om id bra för nybörjare till proffs. Jag hoppas du njuta av projektet!Steg 1: Delarna De delar du behöver är:1) en Arduino2) en Bluetooth-e...

En nybörjares guide till Arduino

Efter några år av experimentera med Arduino, beslutade jag att det är dags att dela den kunskapen har jag fått. Så jag här går, en guide till Arduino, med nakna grunderna för nybörjare och lite mer avancerade förklaringar för personer som är något me...

Arduino nybörjare och grundläggande elektronik Kit Primer

lärde jag mig att en av mina systerdöttrar hade ett intresse för programmering. Hon arbetade med robotics på gymnasiet och har en sommar praktikplats där de hade Arduinos. Jag tror att hon kunde låna en Arduino för att experimentera med hemma men var...