1.2.2. fejezet, Alapfunkciók 2. - Led villogtatás nyomógombbal
A kapcsolás célja, hogy a D2-es digitális bemenetre kötött nyomógombbal kapcsolhassuk be/ki a D13-as lábra kötött Led-et (kapcsolódó Arduino IDE projekt itt). Szükségünk lesz 3 vezetékre, egy 3k3 ohmos ellenállásra, és egy mikrokapcsolóra. Ez esetben a D2-es lábról történik a bemenő jel olvasásra, a D13-as lábat pedig kimenetnek használjuk a LED vezérlésére, mint az első alapfunkciónál is tettük. A digitális áramkörökben alkalmazott mikrokapcsoló felépítése kicsit más, mint a mindennapokban használt lámpakapcsoló. Ennek négy lába van. A kapcsoló felülről nézve négyszög alakú. A lábak két szemközti oldalon helyezkednek el párosával. Az áramot párhuzamosan vagy keresztbe vezeti, a nyomógomb állapotától függően. Ha nincs megnyomva a gomb, akkor az egymással szemközti párokat kapcsolja össze. Ha megnyomjuk a gombot, akkor a szemközti oldalakon sréhen elhelyezkedő ellenoldalak közt létesít kapcsolatot, mint ha keresztbe kötnénk a két-két lábat. Vagyis a D2-es láb két értéket vehet fel, a +5 volt és a föld között lehet választani vele. Ez azért fontos, mert a digitális lábon a feszültség változásától lesz jel, nem attól, hogy csatlakoztatjuk vagy leválasztjuk a vezetéket, mint azt tesszük egy hagyományos háztartási lámpakapcsolóval. A program forráskódja:
// constants won't change. They're used here to set pin numbers: const int buttonPin = 2; // the number of the pushbutton pin const int ledPin = 13; // the number of the LED pin // variables will change: int buttonState = 0; // variable for reading the pushbutton status void setup() { // initialize the LED pin as an output: pinMode(ledPin, OUTPUT); // initialize the pushbutton pin as an input: pinMode(buttonPin, INPUT); } void loop() { // read the state of the pushbutton value: buttonState = digitalRead(buttonPin); // check if the pushbutton is pressed. If it is, the buttonState is HIGH: if (buttonState == HIGH) { // turn LED on: digitalWrite(ledPin, HIGH); } else { // turn LED off: digitalWrite(ledPin, LOW); } }
Mondhatnánk, hogy ezt egy sima lámpakapcsolóval is meg lehet csinálni, mi ebben a különleges? Következő lépés, hogy a led gombnyomásra kezdjen villogni, és a villogtatást frekvenciáját egy további gombnyomással változtathassuk. Ezt bonyolítsuk azzal, hogy ezt bármikor megtehessük. Vagyis a várakozási szakaszt bármikor félbeszakíthassuk egy gombnyomással, és új frekvenciát állíthassunk be. Erre használják az interrupt (megszakítás) műveletet. A villogtatás előtt nézzük meg egy mintaprogramban hogyan is működik ez.
const byte ledPin = 13; const byte interruptPin = 2; volatile byte state = LOW; void setup() { pinMode(ledPin, OUTPUT); pinMode(interruptPin, INPUT_PULLUP); attachInterrupt(digitalPinToInterrupt(interruptPin), blink, CHANGE); } void loop() { digitalWrite(ledPin, state); } void blink() { state = !state; }
- A hozzászóláshoz be kell jelentkezni