Omet navegació

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:

esquema del semafor polsador

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