Eines de l'usuari

Eines del lloc


tutorials:arduino:00_arduino_basic:05_polsador

Polsadors

Per connectar polsadors podem fer-ho de dues maneres amb resistència i sense resistència.

Polsador amb resistència

8-O Exercici 1: Per comprovar el funcionament del polsador farem que el un LED estigui engegat i mentre polsem el polsador es pari. Farem que el LED estigui sempre en marxa així, comprovem que el circuit del LED es correcte.

El circuit a muntar es el següent. Normalment per posar polsadors als microcontrolador posem una resistència a +5V, anomenada PULLUP. També podríem posar una resistència fins a massa(0V), però no es menys utilitzada (problemes de consum elèctric, immunitat electromagnètica etc…).

PULLUP PULLDOWN(no utilitzat)
PULLUP PULLDOWN(no utilitzat)

Si posem el polsador al pin 4 i el LED el intern 13.

A la protoboard conectem així el polsador pullup:

Normalment en electrònica qualsevol entrada sempre te tres cables. Els colors normals a l'industria, marron(BN) al positiu(+), blau(Bu) al negatiu(-) i la senyal d'entrada al dispositiu el negre(BK), on invertida blanc(WH), com aquest cas normalment activat.

void setup() {
 pinMode(4, INPUT);
 pinMode(13, OUTPUT);
}

void loop() {
 if (digitalRead(4)==LOW) digitalWrite(13,LOW);
  else digitalWrite(13,HIGH); 
}

El programa fa el següent; quan polsem posem la entrada 4 LOW, normalment hi es a HIGH. Si la entrada 4 esta a LOW(pulsada) el LED s'apaga(LOW), si no hi ha pulsació el LED està engegat(HIGH).

8-O Exercici 2: Fer el mateix utilitzant la sortida 7 i un LED+220R.

8-O Exercici 3: Fer que el LED s'aturi durant 3 segons després de la polsacio. Pasats els tres segons torna a engefar-se

Polsador sense resistència

Podem estalviar-nos aquesta resistència perquè la placa ja la te integrada, només cal activar-la al programa amb INPUT_PULLUP

senseRes.ino
void setup() {
 pinMode(4, INPUT_PULLUP);
 pinMode(13, OUTPUT);
}
 
void loop() {
 if (digitalRead(4)==LOW) digitalWrite(13,LOW);
  else digitalWrite(13,HIGH); 
}

La connexió es molt fàcil un cable a GND(-)(0V), l'altra a l'entrada en aquest cas el pin 4.

8-O Exercici 4: Cal polsar dos polsadors a la vegada perquè s'apagui el LED.

Per fer l'exercici 4 cal utilitzar la lògica a la comparació del if,

|| OR

&& AND

! NOT

Exemple; les instruccions s'executaran si x es major de 10 AND y menor de 3.

if ((x>10) && (y<3)) {
// instruccions
}

Podem posar totes les operacions lògiques que vulguem, associar-les amb parèntesi, però sempre hem de tenir en compte de posar l'últim parèntesi, que ho envolti tot i que doni com a resultat TRUE o FALSE.

8-O Exercici 5. Fer un llum d'escala. Dos polsadors, qualsevol dels dos engega un LED durant 3 segons, després s'aturarà tot sol.

8-O Exercici 6. Per aquest exercici utilitzarem un dels recursos mes importats de la programació els estats. Estat engegat, estat apagat. Amb dos polsadors un engega l'altre atura un LED.

Estat 1: Engegat. Transició 1: Si està engegat i polsem s'apaga. Transició 2: Si està apagat i polsem s'engega. Estat 2: Apagat.

Simbòlicament:

Programa:

Si està en l'estat apagat i polsem 1 passa al estat engegat.

Si està en l'estat engegat i polsem 2 passa al estat apagat.

Després depenent del estat posarem el LED a HIGH o a LOW

8-O Exercici 7. El mateix amb un sol polsador. Necessitem 4 estats per detectar quan deixem de polsar:

Programació:

//estat inicial
  definir la variable estat (int estat) 
  estat=1 al principi del programa

//evolució dels estats  
  Si Estat==1 i polsem estat=2
  Si Estat==2 i deixem de polsar estat=3
  Si Estat==3 i polsem estat=4
  Si Estat==4 i deixem de polsar estat=1
  
//accions o sortides de cada estat
  Si estat==2 o estat==3 led engegat
    si no apagat
    
Per evitar rebots podem posar un delay de 50 a 100 ms

Filtre teclat sense delay https://www.arduino.cc/en/Tutorial/Debounce o pots utiltzar el que varem fer per l'intermitent i substituir al loop() la intermitencia del led per la lectura del polsador.

8-O Exercici 8. Amb tester

Quan definim el pin 4 com INPUT, Quin voltatge te respecte 0V(GND)?

Quan definim el pin 5 com INPUT_PULLUP, Quin voltatge te respecte 0V(GND)?

Quan definim el pin 7 com OUTPUT, Quin voltatge te respecte 0V(GND)?

TREBALL

(circuit+programa)

1. Codi secret amb tres polsadors i un LED:

a. Només una combinació secreta de 3 polsadors “simultanis”. Per exemple el 1 i el 3 i no el 2. Engega el LED durant 3 segons(obri porta)(6 punts).

b. Tres pulsacions seqüencials. Per exemple, cal polsar amb l'orde 1-3-2 cada vegada un, amb un temps entre ells màxim de 2 segons. Si es fa correctament el LED s'engega durant 3 segons(obri porta)(8 punts).

2. Joc Simon: Un patró de LEDs que cal memoritzar,per exemple 1-3-2-3, i després repetir als polsadors. Si es correcte s'engegen tots el LED's durant 3 segons, has guanyat.(10 punts)

MATRIU TECLAT

tutorials/arduino/00_arduino_basic/05_polsador.txt · Darrera modificació: 2018/10/29 17:52 per crevert