Étape 10 :
> ~ 30° c / 86° F chaud 2 relais chanel éteindre les deux chaînes.
nouveau croquis 13 septembre 2013 addet le relais
/*
13 septembre 2013
12 septembre 2013
25 octobre 2012
Basée hors d’un projet par DJ Mentzik comprend http://www.arduino.cc/en/Tutorial/SwitchCase
Amélioré et modifié par WWC, citin
Des pièces justificatives peuvent être trouvé à wwwc
Citin
Utilisation et modife au besoin.
Affiche le courant, 8sec moyenne, Max et Min température, 2 commutateur de relais de chanel
marche / arrêt par atteindre min/max de données brutes du capteur et met en garde contre le froid/chaud/ok.
Pour connecter votre écran LCD à votre Arduino, connecter les points suivants :
LCD 6 broche Broche numérique 12
LCD 4 broche à broche numérique 11
Écran LCD Pin 11 à la broche numérique 5
Écran LCD Pin 12 à la borne numérique 4
13 broches LCD à la broche numérique 3
14 Pin LCD à la broche numérique 2
LCD 15 PIN +
LCD de broche 16 au GNd
*/
ces constantes ne changeront pas :
const int sensorMin = 160 ; capteur needet minimale pour obtenir la temprature minimum, découverte grâce à l’expérience
const int sensorMax = 230 ; capteur maximale, 41, 9celsius = 248 rawdata découvert grâce à l’expérience
#include < LiquidCrystal.h > / / inclure la bibliothèque de pilote LCD
déclarer des variables
flotteur NC = 0 ; Variable pour la tenue de temp Celsius (flottant pour une précision décimale)
flotteur tempf = 0 ; variable pour la tenue de Fareghneit temp
int tempPin = 0 ; Déclarer l’entrée analogique est 0 (A0) de la carte Arduino.
échantillons de flotteur [8] ; Tableau pour contenir 8 échantillons pour le calcul de la température moyenne
maxi de flotteur = 0, mini = 100 ; Variables de température Max/Min avec des valeurs initiales. LM35 en configuration simple ne mesure que Temp supérieur à 0.
int i ;
Innovente lcd (12, 11, 5, 4, 3, 2) ; initialiser la bibliothèque avec les numéros des broches interface
void setup()
{
Serial.Begin(9600) ; Ouvre le port série, établit le taux de données à 9600 bits/s
LCD.Begin (16, 2) ; Mis en place nombre de l’écran LCD de colonnes et de lignes :
lcd.setCursor (2, 0) ; Définir la position du curseur LCD (colonne, ligne)
LCD.Print("Bartagamen") ; Imprimer un texte à l’écran LCD
lcd.setCursor (3, 1) ; Définir la position du curseur LCD (colonne, ligne)
LCD.Print("Thermometer") ; Imprimer un texte à l’écran LCD
Delay(1000) ; attendre 500ms / / retard pour lire le texte
LCD.Clear() ; Désactivez l’affichage à cristaux liquides / / efface l’écran
lcd.setCursor (2, 0) ; Définir la position du curseur LCD (colonne, ligne)
LCD.Print ("LCD affiché") ; Imprimer un texte à l’écran LCD
lcd.setCursor (1, 1) ; Définir la position du curseur LCD (colonne, ligne)
LCD.Print ("moyenne Temp") ; Imprimer un texte à l’écran LCD
Delay(5000) ; Retard pour lire le texte
LCD.Clear() ; Clear LCD
}
void loop()
{
Serial.println("") ; Ligne vide pour l’espacement dans le moniteur de la série
Serial.println ("vous regardez un projet construit par WWC, Citin") ; Imprimez du texte Serial monitor
Serial.Print ("Feal libre d’utilisation et modife suff.") ;
Serial.println("") ; Ligne vide pour l’espacement dans le moniteur de la série
Serial.Print ("données brutes TMP36GZ:") ; Imprimez du texte Serial monitor
Serial.println(analogRead(tempPin)) ; Affiche sur le moniteur de la série la valeur échantillonnée avant la conversion à la lecture de la température réelle
Début des calculs pour la boucle.
pour (i = 0; j’ai < = 7; i ++) {/ / gets 8 échantillons de température
les échantillons [i] = (4,7 * analogRead(tempPin) * 27) / 1024.0 ; mathématiques de la conversion de tmp26gz dois contre-vérifier déjà vérifié
5 v est la tension d’alimentation du tmp26gz. Changer appropriatelly pour avoir une mesure correcte. Mon cas est 4.4Volts.
Si alimenté par USB, puis utiliser valeur de 4.4v à 4.6v. Si la puissance est 7v < à l’Arduino, puis utilisez 4.9v à 5.1V
La tension est essentielle pour une lecture précise
Serial.println(Samples[i]) ; Imprimer les échantillons [i] à sertiual monitor
(Note de LCD: la ligne 1 est la seconde ligne, puisque le décompte commence par 0) :
lcd.setCursor (0, 0) ; Définir la position du curseur LCD (colonne 0, ligne 0)
LCD.Print ("Temp actuel est:") ; Imprimer un texte à l’écran LCD
lcd.setCursor (1, 1) ; Définir la position du curseur LCD (colonne 1, ligne 1)
LCD.Print ("c") ; Imprimer un texte à l’écran LCD
lcd.setCursor (12, 1) ; Définir la position du curseur LCD (colonne 12, ligne 1)
LCD.Print(Samples[i]) ; imprimer l’échantillon actuel de Temp pour LCD
NC = NC + échantillons [i] ; faire l’addition pour la température moyenne
Delay(4000) ; attendre 800ms
lire le capteur :
int sensorReading = analogRead(A0) ; obtenir les données brutes du capteur pour définir le mode actuel
carte la plage du capteur à une gamme de quatre options :
gamme int = carte (sensorReading, sensorMin, sensorMax, 0, 3) ; changement de capteur sortie don t.
faire quelque chose de différent selon la
valeur de la plage :
commutateur (gamme) {}
case 0: / / kalt / / display froid et commutateur les deux chaines sur de relais d’État relais thermique.
analogWrite(8,HIGH) ;
analogWrite(10,HIGH) ;
Serial.println("Dark") ;
lcd.setCursor (1, 1) ; Définir la position du curseur LCD (colonne 0, ligne 1)
LCD.Print("Cold") ; Imprimer un texte à l’écran LCD
lcd.setCursor (1, 1) ;
Delay(800) ; attendez donc vous pouvez voir le message
rupture ;
cas 1: / / ok, rien à faire les deux relais chanels sont OFF
Serial.println("Dim") ;
analogWrite(8,LOW) ;
analogWrite(10,LOW) ;
lcd.setCursor (1, 1) ;
LCD.Print("Rise") ; Imprimer un texte à l’écran LCD
lcd.setCursor (1, 1) ;
Delay(800) ; attendez donc vous pouvez voir le message
rupture ;
case 2: / / votre main est de quelques pouces du capteur / / ok, rien à faire les deux relais chanels sont en dernière stat
Serial.println("medium") ;
lcd.setCursor (1, 1) ;
LCD.Print("OK") ; Imprimer un texte à l’écran LCD
lcd.setCursor (1, 1) ;
Delay(800) ; attendez donc vous pouvez voir le message
rupture ;
case 3: / / votre main n’est nulle part près du capteur
Serial.println("Bright") ; à chaud sur tous les relais chanels off arrêt chauffage.
digitalWrite (8, faible) ; à chaud sur tous les relais chanels off arrêt chauffage. vérifier l’état du relais
digitalWrite (10, faible) ; à chaud sur tous les relais chanels off arrêt chauffage. vérifier l’état du relais
lcd.setCursor (1, 1) ;
LCD.Print("Hot") ; Imprimer un texte à l’écran LCD
lcd.setCursor (1, 1) ;
Delay(800) ; attendez donc vous pouvez voir le message
rupture ;
}} // END of FOR loop
Serial.println("") ; Ligne vide pour l’espacement dans le moniteur de la série
Serial.println("") ; Ligne vide pour l’espacement dans le moniteur de la série
NC = NC/8.0 ; calculer l’averare de 8 échantillons en Celcius
tempf = (NC * 9) / 5 + 32 ; convertit en degrés fahrenheit
if(tempC > maxi) {maxi = NC;} régler la température max
if(tempC < mini) {mini = NC;} température min Set
Envoyer les résultats vers Serial Monitor
Serial.println ("nouvelle mesure:") ;
Serial.Print ("température moyenne en Celcius est") ; Imprimez du texte Serial monitor
Serial.println (NC); //send les données de l’ordinateur / / envoyer les données à l’ordinateur
Serial.Print ("moyenne température en Farenheit est") ; Imprimez du texte Serial monitor
Serial.println (tempf); //send les données de l’ordinateur / / envoyer les données à l’ordinateur
Serial.Print ("MAX température en Celsius est") ; Imprimez du texte Serial monitor
Serial.println (maxi); //send les données de l’ordinateur / / envoyer les données à l’ordinateur
Serial.Print ("MIN température en Celsius est") ; Imprimez du texte Serial monitor
Serial.println (mini); //send les données de l’ordinateur / / envoyer les données à l’ordinateur
Envoyer les résultats à l’écran LCD.
lcd.setCursor (0, 1) ; Définir la position du curseur LCD (colonne 0, ligne 1)
LCD.Print (« Fahrenheit ») ; Imprimer un texte à l’écran LCD
lcd.setCursor (12, 1) ; Définir la position du curseur LCD (colonne 12, ligne 1)
LCD.Print(tempf) ; Envoyer les données à l’écran LCD
Delay(6000) ; Attendre 3 secondes pour afficher la Fahrenheit temp et 3 secondes pour afficher les résultats pour LCD écran befor à partir de la boucle encore = 6 secondes.
NC = 0 ; La valeur NC 0 alors les calculs peuvent être refaits
}