Misurazione di temperatura e umidità con Arduino: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
Nessun oggetto della modifica
Etichetta: Editor wikitesto 2017
Riga 55:
Ricapitolando, la realizzazione di questo circuito, permette di visualizzare sullo schermo LCD 16x2 la temperatura e l'umidità misurata dal sensore DHT11, realizzando quindi un termometro digitale.
 
 
== Motore DC regolabile tramite potenziometro ==
Il '''progetto''' che segue è pensato per la realizzazione di una ventola, realizzata con un motore DC controllato da un transistor, in grado di azionarsi tramite un pulsante e regolabile attraverso un potenziometro.
 
=== Descrizione del progetto ===
 
 
Il sistema è composto da:
 
* Motore DC, che ruotando fa girare una ventola;
* Transistor NPN, che svolge la funzione di un interruttore;
* Pulsante, che aziona o ferma il motore;
* Potenziometro, che regola la velocità del motore DC.
 
=== Schema elettrico ===
lo schema elettrico del circuito effettuato è il seguente.
[[File:Schema_elettrico_n2.png|link=https://it.wikiversity.org/wiki/File:Schema_elettrico_n2.png|alt=schema elettrico|bordo|nessuno|miniatura|500x500px|schema elettrico]]
Alla scheda di Arduino vengono collegati i componenti utilizzando sia i pin analogici, per il potenziometro, sia i pin pwm, per il motore DC
 
=== Schema di montaggio ===
[[File:Schema_di_montaggio_n2.png|link=https://it.wikiversity.org/wiki/File:Schema_di_montaggio_n2.png|bordo|senza_cornice|500x500px]]
 
=== Codice ===
Per la realizzazione del progetto è stato utilizzato il seguente codice:<syntaxhighlight lang="arduino" line="1">
int pinMotore = 3;
int pinPulsante = 4;
int pinPotenziometro = A0;
int bootTime = 300;
</syntaxhighlight>Definisco le variabili e i pin dei componenti, più il boot time, ossia la velocità massima del motore alla sua accensione, indipendentemente dal potenziometro.<syntaxhighlight lang="arduino" line="1" start="5">
bool enabled = false;
int lastEnableValue = LOW;
unsigned long startTime = 0;
</syntaxhighlight>Creo delle variabili per la lettura dello stato del pulsante, e utilizziamo "unsigned long" per memorizzare il tempo in cui il motore è rimasto acceso.<syntaxhighlight lang="arduino" line="1" start="8">
int velocitàMotore = map(analogRead(pinPotenziometro), 0, 1023, 70, 255);
int enableValue = digitalRead(pinPulsante);
 
</syntaxhighlight>La velocità del motore viene impostata attraverso la lettura del potenziometro. I pin però restutiscono un valore da 0 a 1023, non compatibili con i pin pwm (da 0 a 255) quindi attraverso la funzione map effettuo una conversione proporzionale (70 è il valore minimo sotto il quale il motore smette di girare).<syntaxhighlight lang="arduino" line="1" start="10">
void setup(){
pinMode(pinMotore, OUTPUT);
pinMode(pinPulsante, INPUT);
}
 
void loop(){
if(enableValue != lastEnableValue && enableValue == HIGH){
if(!enabled){
startTime = millis();
}
enabled = !enabled;
}
</syntaxhighlight>Leggo il valore del pulsante, se esso è cambiato ed è uguale a HIGH, impostiamo il tempo attuale nella variabile startTime<syntaxhighlight lang="arduino" line="1" start="24">
 
lastEnableValue = enableValue;
 
if(enabled){
if((millis()-startTime) > bootTime){
analogWrite(pinMotore, velocitàMotore);
}else{
analogWrite(pinMotore, 255);
}
}else{
analogWrite(pinMotore, 0);
}
delay(50);
}
 
</syntaxhighlight>Dopo aver aggiornato la variabile che verrà utilizzata nella if successiva, se il motore era acceso, dopo il tempo di accensione, viene letto il valore del potenziometro e si imposta la velocità del motore. Se siamo ancora nella fase inziale impostiamo il valore a 255 indipendentemente dal potenziometro. Se invece viene premuto il pulsante di nuovo impostiamo la velocità a 0.
 
=== Conclusioni2 ===
In conclusione, la realizzazione di questo circuito permette, grazie ad un pulsante, l'accensione e lo spegnimento del motore DC; la velocità del motore DC è regolata da un potenziometro, realizzando così una ventola.
 
''Progetto è stato realizzato da Daniel Gostoli e Sasha Fasolo Massoli.''
 
== Motore DC regolabile tramite potenziometro ==