5.- Entrades digitals
Entrada digital es qualsevol variable externa que rep un valor de forma aliena al programa, és una altre qui en modifica el valor, exemples en són finals de carrera, polsadors, o interruptors per controlar el funcionament dels mecanismes.
1) Definim al començament del programa la variable que siga, en este cas puls, com una entrada digital pinMode(puls, INPUT) , i posarem un condicional per esbrinar si s'ha activat el pulsador puls amb l'ordre
void loop() { // cicle del programa, fixeu-vos on comença i on acaba en blau
if(digitalRead(puls)==HIGH) { // instruccions de dins del condicional, fixeu-vos on comença i on acaba en roig
ordres que s'executaran si
s'activa el polsador puls
}
ordres que s'executaran si no es polsa
el polsador puls
}
2) El polsador té una Resistència de 10 KOhms connectada en pull up per assegurar-nos que la entrada val 5V (estat lògic 1) o val 0V (estat lògic 0) i no pot tindre valors intermijos, fixat en el circuit de baix.
Exemple:
Mira un exemple fet amb aquest circuit:
// Copyleft (C) 2007 Carles Ferrando // SemaforRGV-Polsador // Semafor Roig si premem el polsador ( final de carrera) // és posa en groc i despres en verd si polsem // al final torna al estat roig // int ledPinR = 12; // led roig connectat al pin 12 int ledPinG = 11; // led groc connectat al pin 11 int ledPinV = 10; // led verd connectat al pin 10 int puls=8; // polsador al pin 8 void setup() { pinMode(ledPinR, OUTPUT); // defineix la funció digital pin roig pinMode(ledPinG, OUTPUT); // defineix la funció digital pin groc pinMode(ledPinV, OUTPUT); // defineix la funció digital pin verd pinMode(puls, INPUT); // defineix la funció digital polsador } void loop() { if(digitalRead(puls)==HIGH){ //Condicional que s'executa quan detecta el polsador pressionat delay(200); // retard per evitar errors al polsar varies vegades digitalWrite(ledPinG, HIGH); // engega el led groc delay(1000); // espera 1 segons amb el led engegat digitalWrite(ledPinG, LOW); //apaga el led groc digitalWrite(ledPinV, HIGH); // engega el led verd delay(10000); // espera 10 segons amb el led engegat digitalWrite(ledPinV, LOW); // apaga el led verd } //instruccions que s'executen si no esta presionat el polsador digitalWrite(ledPinR, HIGH); //engega el led roig delay(1000); // espera 1 segons amb el led engegat digitalWrite(ledPinR, LOW); //apaga el led roig delay(200); //espera 0,2 segons } |
Llicenciat sota la Llicència Creative Commons Reconeixement NoComercial CompartirIgual 3.0