Étape 5: Code
Charger le code suivant à votre arduino.
J’espère que cela fonctionne correctement !
Lorsque les températures ne sont pas stables suffisant, vous pouvez modifier ' un = 0,5 ' dans par exemple « un = 0,8'
/*
Psychromètre
Lit une entrée analogique sur la broche 0 et sur la broche 1. Convertit en température. Convertit la température à une humidité relative.
Et affiche le résultat à l’écran LCD.
*/
inclure le code de bibliothèque :
#include
initialiser la bibliothèque avec les numéros des broches interface
Innovente lcd (12, 11, 5, 4, 3, 2) ;
donner de la valeur initiale pour la température sèche et humide
float averagedry = 20 ;
float averagewet = 16 ;
donner une constante qui détermine le poids des anciennes valeurs dans déterminer la nouvelle valeur
flotteur a = 0,5 ;
la routine d’installation s’exécute une fois que lorsque vous appuyez sur reset :
void setup() {}
Cet exemple utilise la tension qui vient Aref comme référence
LORSQUE VOUS LAISSEZ DE CÔTÉ LES RÉSISTANCES AUSSI LAISSER DE CÔTÉ
analogReference(EXTERNAL) ;
mis en place nombre de l’écran LCD de colonnes et de lignes :
LCD.Begin (16, 2) ;
Imprimer un message à l’écran LCD.
LCD.Print("RelativeHumidity") ;
initialiser la communication série avec ordinateur :
Serial.Begin(9600) ;
}
la routine de la boucle s’exécute maintes et maintes fois pour toujours :
void loop() {}
lire l’entrée sur la broche analogique 1 0 et broche, c’est la température de base sèche/base humide :
les retards de delay(1000) avec une seconde, il s’agit de stabiliser l’arduino
analogRead(A0) ;
Delay(1000) ;
int sensorValuedry = analogRead(A0) ;
analogRead(A1) ;
Delay(1000) ;
float sensorValuewet = (float) analogRead(A1) ;
Convertir le sensorvalue à une température
Le sensorvalue mesurée sans une faible tension de référence est calibré avec un thermomètre
Le sensorvalue mesurée avec une faible tension de référence est corrigé avec 149.7/828.3.
149,7 est le sensorvalue sans basse tension de référence
828.3 est le sensorvalue à basse tension de référence.
Ces deux valeurs seront probablement différents avec d’autres résistants
LORSQUE VOUS LAISSEZ DE CÔTÉ LES RÉSISTANCES AUSSI LAISSER DE CÔTÉ LA PARTIE CONVERSION (149.7/828.3)
float temperaturedry = sensorValuedry * (149.7/828.3) * 0.5304-53.926 ;
Prendre une moyenne en cours d’exécution avec le facteur de pondération a
averagedry = a * averagedry + (1-a) * temperaturedry ;
Convertir le sensorvalue à une température
float temperaturewet = sensorValuewet * (149.7/828.3) * 0.5181-50.889 ;
Prendre une moyenne mobile
averagewet = a * averagewet + (1-a) * temperaturewet ;
utiliser des formules pour déterminer l’humidité relative
flotteur Es = 0,61 * exp ((19.9 * averagewet) /(273 + averagewet)) ;
flotteur Ea = Es-0.067 * (averagedry-averagewet) ;
flotteur H = Ea / Es ;
{
régler le curseur sur la colonne 0, ligne 1
(Remarque : la ligne 1 est la seconde ligne, puisque le décompte commence par 0) :
lcd.setCursor (0, 1) ;
imprimer l’humidité relative :
LCD.Print(H) ;
}
}