Arduino 101 grunderna (5 / 7 steg)
Steg 5: Om uttalande
Jag kommer att använda samma krets som i föregående exempel och slå på den LED med en if/else uttalande. Den om uttalande är ett mycket effektivt sätt att införa villkor till koden. Jag kommer att använda den skiss kallas IfStatementConditional Funna i Arduino IDE under File/Examples/05.Control.
Du behöver en Arduino, en potentiometer, en LED och några hoppare ledningar. Ansluta den mellersta pin av potentiometern till stift A0 (analoga 0) på Arduino, då den + ve leda till 5v på Arduino och - ve leda till GND på Arduino. Och Anslut den + ve bly led till D5 på Arduino och -ve leda till GND.
I denna skiss värdet av stiftet ska A0 skrivas på den seriella bildskärmen och på samma gång LED ljusstyrka ändras när vi vrider potentiometern.
Skissen
CONST int analogPin = A0; PIN-kod som sensorn är kopplad till
CONST int ledPin = 5; PIN-kod som LED är kopplad till
CONST int tröskel = 400. en godtycklig tröskelvärdesnivå som är i spänna av analog ingång
void setup() {
pinMode (ledPin, produktionen); initiera LED stift som en utgång:
Serial.BEGIN(9600); initiera seriell kommunikation:
}
void loop() {
int analogValue = analogRead(analogPin); läsa värdet på potentiometern:
om (analogValue > tröskel) {/ / om det analoga värdet är tillräckligt högt, slå på lampan:
digitalWrite (ledPin, hög);
}
annat {
digitalWrite (ledPin, låg);
}
Serial.println(analogValue); skriva ut analoga värdet:
Delay(1); dröjsmål i mellan läser för stabilitet
}
Låt oss dissekera skissen:
CONST int analogPin = A0;
CONST int ledPin = 5;
CONST int tröskel = 400.
Som vanligt börjar vi med variablerna, den här gången valde jag för att använda "const int" som en typ, vilket innebär att värdet av variablerna som aldrig kommer att förändras.
- analogPin ska alltid bifogas analoga pin 0
- ledPin ska alltid bifogas digital stift 5
- tröskeln blir alltid vid 400
void setup() {
pinMode (ledPin, produktionen);
Serial.BEGIN(9600);
}
Det är inget nytt i void setup, vi satt stift 5 till utgång eftersom det finns en LED fäst vid den och vi börjar seriella bildskärmen på 9600bps
void loop() {
int analogValue = analogRead(analogPin);
om (analogValue > tröskel) {
digitalWrite (ledPin, hög);
}
annat {
digitalWrite (ledPin, låg);
}
Serial.println(analogValue);
Delay(1);
}
Den första raden i void slingan är deklarationen av en lokal variabel av typen int kallas analogValue och vi tilldela det värdet vi läser från variabeln analogPin.
Om och om/else uttalanden:
Syntax:
- om (villkor) {exekvera kommando om villkoret är uppfyllt}
Syntax
- om (villkor) {exekvera kommando om villkoret är uppfyllt}
- annat {använda ett annat kommando om villkoret inte är uppfyllt}
exempel:
om (en > b) {digitalWrite (ledPin, hög);}
eller
om (en > b) {digitalWrite (ledPin, hög);}
annat {digitalWrite (ledpin2, hög);}
Varje gång vi använder en if-sats, vi ser för att uppfyller ett visst villkor, exempel "en" är större än "b". Och om resultatet är sant då vi kan utföra vad är mellan klammerparenteserna. Om resultatet inte är sant så gör ingenting.
Nu om du använder en if/else uttalande, och resultatet är inte sant, så vad är under "annat" kommer att utföra.
Det bästa sättet att ange ett villkor är att använda jämförelse och logiska operatorer.
Jämförelseoperatorer:
De används för att jämföra variabler och konstanter mot varandra för att kontrollera om ett visst villkor är uppfyllt.
== Är lika med en == b kontroller om ett är lika med b
! = Inte lika med att en! = b kontroller om en är inte lika med b < mindre än en < b kontrollerar om en är mindre än b > större än en > b kontrollerar om en är större än b < = mindre tack eller är lika med ett < = b kontroller om en är mindre än eller är lika med b > = större än eller lika med att en > = b kontroller om en är större än eller lika med b
Obs: skillnaden mellan = och ==. = används för att tilldela en variabel ett nummer eller ett värde, medan == används för att jämföra två variabel.
Logiska operatorer:
Logiska operatorer används för att jämföra två uttryck och returnerar sant eller falskt. Logiska operatorer är AND(&&), OR(||), och inte (!).
Logiska och om (en > b & & c < d) enda sant om båda uttrycken är sanna
Logiska eller om (en > b || c < d) sant om en eller båda av uttryck är sant
Logiska inte om (! en > b) sant endast om uttrycket är false
Låt oss gå tillbaka till skiss
om (analogValue > tröskel) {
digitalWrite (ledPin, hög);
}
annat {
digitalWrite (ledPin, låg);
}
- Här testar vi om analogValue är större än tröskelvärdet: om (analogValue > tröskel)
- om så då slår på lampan: digitalWrite (ledPin, hög);
- Om inte: annat {
- Sedan stänga av lampan: digitalWrite (ledPin, låg);
Serial.println(analogValue): skriva ut värdet av analogValue på den seriella monitorn
Delay(1): en mycket liten försening på 1 millisekund att stabilisera behandlingen