arduino: dalla teoria alla pratica impariamo a collegare i sensori
Passi Riassunto giornata precedente Condizioni “if” e “for” Colleghiamo un pulsante al led Leggiamo in analogico Colleghiamo il sensore di temperatura Costruiamo un termometro
riassunto giornata precedente La volta scorsa abbiamo imparato: cosa sono le variabili; come si inseriscono le funzioni; la struttura del programma! MICA MALE PER ESSERE LA PRIMA LEZIONE
funzioni if e for if(variabile condizione variabile) { } esempio: if(pippo = 10) digitalWrite(led, HIGH);
la funzione FOR è praticamente uguale alla funzione LOOP, cioè ripete sempre quello che scriviamo alle parentesi graffe fino al conseguimento di un azione. for(i ; i<10 ; i++) { } esempio: for(i;i<10;i++) digitalWrite(led, HIGH); delay(1000); digitalWrite(led, LOW);
colleghiamo un pulsante al led int pulsante = 2; int led = 13 int statoPulsante = 0; void setup() { pinMode(led, OUTPUT); pinMode(pulsante, INPUT); } void loop(){ statoPulsante = digitalRead(pulsante); if (statoPulsante == HIGH) digitalWrite(led, HIGH); digitalWrite(led, LOW);
leggiamo in analogico Finora abbiamo utilizzato le funzioni digitalRead e digitalWrite per leggere o scrivere il valore su un pin digitale di arduino, praticamente vediamo se arrivano 5V oppure 0, e mandiamo 5V piuttosto che 0. Se invece volessimo leggere un valore analogico dovremmo innanzitutto collegare il nostro sensore su uno dei pin che iniziano con A (A0, A1, A2, ecc…) Il nostro pin analogico ci permette di inserire valori che sono compresi tra 0 e 5V come per esempio 3,7V.
Per fare questo utilizziamo la funzione: analogRead() esempio: pippo= analogRead(A0); all’interno di pippo abbiamo il valore del pin A0. Se noi mettiamo 3,7V sul pin A0 però non troviamo il valore 3,7 all’interno di pippo… e cosa troviamo? Troviamo un valore compreso tra 0 e 1024. Se diamo 0 sul pin A0 troviamo 0 su pippo Se diamo 5V sul pin A0 troviamo 1024 su pippo Se diamo 3,7V sul pin A0 troviamo (1024/5)*3,7= 758 su pippo
colleghiamo il sensore di temperatura float tempC; int tempPin = 0; void setup() { Serial.begin(9600); } void loop() tempC = analogRead(tempPin); tempC = (5.0 * tempC * 100.0)/1024.0; Serial.println(tempC); Serial.print(" Celsius, "); delay(1000);
COSTRUIAMO UN TERMOMETRO Oggetti: - 3 led (1 verde, 1 giallo, 1 rosso); - 1 sensore di temperatura LM35DZ. Scopo: SE la temperatura è < 24°C si accende il led verde, SE la temperatura è compresa tra 24°C e 28°C si accende quello giallo, SE la temperatura è >28°C si accende il led rosso.
suggerimenti if(temp < 24) // 24°C = 49 come valore di ingresso { } if(28 > temp > 24) // 28°C = 57 come valore di ingresso if(temp > 28)