Étape 12 : Télécharger ce croquis pour ajouter le CCF à le projekt. doit être poursuivi.
< ~25°c/77° F froid 2 chanel relais connecte les deux chaînes.
> ~ 30° c / 86° F chaud 2 relais chanel éteindre les deux chaînes.
Montre le temps réel.
/*
22 septembre 2013 ajouté RTC
2 relais de chanel a ajouté 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 = 215 ; capteur maximale, 41, 9celsius = 248 rawdata découvert grâce à l’expérience
#include < LiquidCrystal.h >
#include < Time.h >
#include < Wire.h >
#include < DS1307RTC.h > / / une base bibliothèque DS1307 qui retourne le temps comme un time_t
#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
setSyncProvider(RTC.get) ; la fonction permettant d’obtenir le temps du CCF
if(timeStatus()! = timeSet)
Serial.println ("Impossible de synchroniser avec le CCF") ;
d’autre
Serial.println ("CCF a définir l’heure système") ;
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(500) ; 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(2000) ; Retard pour lire le texte
LCD.Clear() ; Clear LCD
}
void loop()
{
digitalClockDisplay() ;
Delay(1000) ;
}
Sub digitalClockDisplay()
{
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,4 * analogRead(tempPin) * 26) / 1024.0 ; mathématiques de conversion de tmp26gz dois vérifier la Croix.
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 (« Celsius ») ; 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 ("moyenne température en degrés Celsius est") ; Imprimez du texte Serial monitor
Serial.println (NC); //send les données de l’ordinateur / / envoyer les données à l’ordinateur
Serial.Print ("température moyenne dans Fareneit 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 degrés 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 degrés 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(1000) ; Patientez pour afficher la Fahrenheit temp et secondes pour afficher les résultats pour LCD écran befor à partir de la boucle encore = 6 secondes.
LCD.Clear() ; Désactivez l’affichage
NC = 0 ; La valeur NC 0 alors les calculs peuvent être refaits
Serial.Print(Hour()) ; imprimer le texte de série (PC)
printDigits(minute()) ;
printDigits(second()) ;
Serial.Print("") ;
Serial.Print(Day()) ;
Serial.Print("") ;
Serial.Print(month()) ;
Serial.Print("") ;
Serial.Print(Year()) ;
Serial.println() ;
lcd.setCursor (2, 0) ; Définir la position du curseur LCD (colonne, ligne)
LCD.Print(Hour()) ; imprimer un texte à l’écran LCd
LCD.Print(":") ;
LCD.Print (minute()) ;
LCD.Print("") ;
LCD.Print(second()) ;
LCD.Print("") ;
LCD.Print("Uhr") ;
lcd.setCursor (3, 1) ; Définir la position du curseur LCD (colonne, ligne)
LCD.Print(Day()) ;
LCD.Print(".") ;
LCD.Print(month()) ;
LCD.Print(".") ;
LCD.Print(Year()) ;
Delay(6000) ; retard pour lire le texte
}
void printDigits (int chiffres) {}
fonction d’utilité pour l’affichage de l’horloge numérique : tirages précédents du côlon et menant 0
Serial.Print(":") ;
if(digits < 10)
Serial.Print('0') ;
Serial.Print(digits) ;
}