Internet de les coses amb ESP32 i ESP8266

Exemples Referència Plaques   Recursos CITCEA
Projectes Programació Perifèrics   Inici

Entrades i sortides binàries

Per fer servir les entrades i sortides binàries cal fer dues coses: definir si seran entrades o sortides (normalment al setup) i llegir les entrades i activar o desactivar les sortides (normalment al bucle de programa).

Les potes poden ser entrades (INPUT) o sortides (OUTPUT) i poden tenir dos valors: activat (HIGH) o desactivat (LOW).

Per triar si serà entrada o sortida, fem servir la funció pinMode que té dos paràmetres. El primer és el número d'entrada que estem definint i el segon indica si és entrada o sortida.

Molts elements d'entrada, com els polsadors, defineixen l'estat de l'entrada quan estan activats (premut, en el cas del polsador) però no ho fan quan estan desactivats. Per això és habitual acompanyar aquests elements d'una resistència (típicament del 10 kΩ) que els connecta a l'altre extrem de l'alimentació; com, per exemple, en el cas dels polsadors. Normalment aquesta resistència es connecta entre l'entrada i GND i el polsador entre l'alimentació de 3,3 V i l'entrada. Així l'entrada està a LOW quan el polsador no està premut i a HIGH quan si ho està. Alguns microcontroladors disposen de resistències internes per a aquesta funció i les podem activar posant INPUT_PULLUP quan definim que la pota és entrada. En aquest cas, però, la resistència està connectada entre el positiu i l'entrada i, per tant, caldria connectar el sensor entre l'entrada i el negatiu. Llavors llegirem un valor HIGH quan el sensor estigui desactivat i un LOW quan estigui activat. Atès que les resistències són molt barates, és habitual posar-les i això és també el que farem en aquest web. Però si en algun moment no teniu resistències a mà sempre podeu recórrer a aquest altre mètode.

Per a les entrades, fem servir la funció digitalRead que té com a paràmetre el número d'entrada i que dóna com a resultat el valor d'aquiesta. Per a les sortides s'empra la funció digitalWrite que té dos paràmetres. El primer és el número de sortida i el segon indica el valor que hi posem.

En la inicialització del següent programa es defineix la pota 3 com a entrada i la pota 13 com a sortida. En la part repetitiva del programa es mira si l'entrada està activa o no. Si ho està, s'encén el LED; en cas contrari, s'apaga.

void setup() {
	pinMode(3, INPUT);
	pinMode(13, OUTPUT);
}
void loop() {
	if (digitalRead(3) == HIGH) {
		digitalWrite(13, HIGH);
	}
	else {
		digitalWrite(13, LOW);
	}
}

També podem fer copiar directament l'estat de l'entrada sobre la variable; com en aquest exemple:

	int valor;
void setup() {
	pinMode(3, INPUT);
	pinMode(13, OUTPUT);
}
void loop() {
	valor = digitalRead(3);
	digitalWrite(13, valor);
}

 

 

 

En aquest web, les fotografies marcades amb [AF] són del web d'Adafruit, les marcades amb [SF] del web d'Sparkfun i les marcades amb [AU] del web d'Arduino.

 

 

 

 

 

 

 

 

 

 

Licencia de Creative Commons
Esta obra de Oriol Boix está licenciada bajo una licencia no importada Creative Commons Reconocimiento-NoComercial-SinObraDerivada 3.0.