En aquesta pràctica encendrem, de nou, LEDs però ara amb un nou element: els polsadors. Amb aquests interruptors podrem controlar quan i quan no encendrem aquests LEDs
POLSADORS
Un polsador és un component electrònic el qual impedeix el pas del corrent quan és polsat. Només ho fa quan és polsat, ja que quan deixa de ser polsat el botó torna a la seva posició inicial.
ESQUEMA ELÈCTRIC
Aquest és un dels esquemes elèctrics més complexes d'ençà que fem circuits de manera que ho intentarem explicar de la manera més entenedora possible:
Primerament, comptarem amb dos polsadors, però hi ha un problema: els polsadors poden tenir dues o quatre potes i a l'hora d'orientar-los amb els de quatre potes es pot complicar una mica. Els polsadors poden tenir una o dues unions per les quals passarà l'electricitat. Si el polsador té dues potes, significa que només hi ha una unió i, per tant, només es poden connectar d'una manera possible perquè el circuit quedi tancat. Per altra banda, si el polsador té dues unions, és a dir, quatre potes, es poden connectar de dues maneres possibles i per saber quina és la forma correcta utilitzarem un "tester" o polímetre digital mitjançant el qual, connectant els ports d'electricitat a les potes del polsador i clicant-lo, si les potes són les correctes, el "tester" indicarà que detecta corrent i sinó, doncs serà l'altra opció. Un cop explicat això, i agregant que només utilitzarem una unió dels polsadors, la resta és senzill, primerament, els polsadors estaran connectats, primer a una resistència cadascun que anirà connectada als 5V i, per altra banda, al "pin 2" i al "pin 3" respectivament. Per altra banda, les altres potes operatives dels polsadors aniran connectades les dues a "Ground" i a una resistència connectada a un LED que ha sigut prèviament connectat al "pin 13". Per entendre-ho millor teniu l'esquema elèctric a l'esquerra.
Codi 1 (un sol polsador)
En aquest primer codi només utilitzarem un polsador que quan sigui clicat s'encendrà el LED i quan no, no.
Primer, declarem la variable "Int ledPin = 9" que assigna el número del "pin 9" a la variable "ledPin", que és on està connectat el LED. Seguidament, amb la instrucció "int inputPin = 2" s'assigna el número del pin 2 a la variable "inputPin", on està connectat l'interruptor.
Com heu pogut veure, en aquesta pràctica, a més d'utilitzar l'output utilitzarem l'input, és a dir, no només nosaltres treballarem amb la informació deixem anar pels "pins" sinó que també treballarem amb la informació que rebem dels pins.
Un cop fet això, amb la instrucció "int val = 0" declarem una variable anomenada "val" i li assigna un valor inicial de 0. Seguidament, creem un "setup" amb la instrucció "void setup() { ...}" que serà la funció principal del programa i s'executarà en bucle contínuament.
D'aquesta manera, amb la instrucció "digitalRead(inputPin)" fem que l'Arduino llegeixi l'estat del pin ("inputPin") i el guarda a la variable "val". Un cop fet això, amb un "if (val == HIGH) { ... } else { ... }" farem el següent:
Si el valor de "val" és 'HIGH" (és a dir, si l'interruptor està activat), farem que el LED s'apagui ("digitalWrite(ledPin, LOW)"), per altra banda ("else") farem que s'encengui el LED (digitalWrite(ledPin, HIGH)).
int ledPin = 9;
int inputPin = 2;
int val = 0;
void setup() {
pinMode(ledPin, OUTPUT);
pinMode(inputPin, INPUT);
}
void loop(){
val = digitalRead(inputPin);
if (val == HIGH) {
digitalWrite(ledPin, LOW);
} else {
digitalWrite(ledPin, HIGH);
}}
Codi 2 (ENCENDRE I APAGAR UN LED AMB DOS POLSADORS)
int ledPin = 13;
int inputPin1 = 3;
int inputPin2 = 2;
void setup() {
pinMode(ledPin, OUTPUT);
pinMode(inputPin1, INPUT);
pinMode(inputPin2, INPUT);
}
void loop(){
if (digitalRead(inputPin1) == LOW) {
digitalWrite(ledPin, LOW);
} else if (digitalRead(inputPin2) == LOW) {
digitalWrite(ledPin, HIGH);
}
}
En aquest programa, variant de l'anterior, aconseguirem encendre i apagar un LED amb dos polsadors basant-nos en l'estat d'aquest
Les tres primeres línies del codi declaren tres variables de tipus integer: "ledPin = 13" establint el número de pin per al LED, "inputPin1 = 3" que és el "pin" on haurà d'anar connectat el polsador 1 i, finalment, "inputPin2 = 2" que és el "pin" on haurà d'anar connectat el polsador 2.
Seguidament, amb la funció "void setup()" creem el "setup i es declara els "pinMode" de les variables anteriors fent que "ledPin" sigui output i les altres imput
A continuació, amb la funció "void loop()" es crea el bucle que es repetirà en aquest programa. Aquest, comprova l'estat dels pins "inputPin1" i "inputPin2". Si el pin inputPin1 està polsat (LOW), s'apaga el LED.
if (digitalRead(inputPin1) == LOW) {digitalWrite(ledPin, LOW);
Per altra banda ("else"), si el "pin 2" ("inputPin2") està polsat (LOW), s'encendrà el LED
else if (digitalRead(inputPin2) == LOW) {digitalWrite(ledPin, HIGH);
En resum, aquest codi fa que el LED s'encengui si el botó 2 està premut i que s'apagui quan el botó 1 està premut
CODI 3 (s'encen el led gradualment)
Amb aquest programa farem que el LED s'encengui gradualment prement un dels dos polsadors i que s'apagui gradualment prement l'altre.
Primerament, declararem tres variables de tipus integer: "ledPin = 9" que és el número de pin per al LED que es vol controlar, "inputPin1 = 3" que és el número de pin on connectarem el primer polsador i "inputPin2 =2" que és el número de pin on connectarem el segon polsador
Un cop fet això crearem el "setup" ("void setup () {...}") i escriurem els "pinMode" especificant que la variable "ledPin" serà una sortida (output) i les altres seran entrades (input).
A continuació es crearà una variable ("value = 0") que serà el valor d'intensitat que tindrà el LED
Seguidament, crearem el "void loop (){...}" on primerament es comprovarà l'estat dels "pins" Si el "pin" "inputPin1" està polsat (LOW), es resta 1 a la variable "value". Per altra banda, si el "pin" "inputPin2" està polsat (LOW), s'hi suma 1. Així, si es prem el botó 1 es redueix la lluminositat del LED, i si es prem el botó 2, s'incrementa.
Després de les instruccions anteriors, s'ha d'escriure la funció "constrain()" que, resumidament, assegurarà que el valor de "value" estigui dins dels límits de 0 i 255, que són els límits per als valors que es poden assignar a la funció analogWrite().
A continuació, escriurem la funció analogWrite() que s'utilitza perquè la lluminositat del LED variï. El valor que s'envia a analogWrite() serà el valor de "value". I per últim, escriurem la funció "delay(10)" s'encarregarà de fer una pausa de 10 mil·lisegons abans que el programa torni a executar la funció loop().
En resum, aquest programa permet controlar la lluminositat d'un LED mitjançant dos botons, augmentant-la o disminuint-la segons el botó que es premi.
int ledPin = 9;
int inputPin1 = 3;
int inputPin2 = 2;
void setup() {
pinMode(ledPin, OUTPUT);
pinMode(inputPin1, INPUT);
pinMode(inputPin2, INPUT);
}
int value = 0;
void loop(){
if (digitalRead(inputPin1) == LOW) { value--; }
else if (digitalRead(inputPin2) == LOW) { value++; }
value = constrain(value, 0, 255);
analogWrite(ledPin, value);
delay(10);
}