Étape 5: Code
Et voici mon exemple de code qui lit les 3 thermistances, la date et l’heure du module RTC et les affiche sur l’écran LCD. Il y a quelques fonctions en bas qui aident tout afficher comme je le voulais (rembourrage de l’époque à 2 chiffres et conversion de l’heure de minuit 12 de 0). Il y a une vidéo sur la page suivante qui montre comment tout affiche sur l’écran.
#include < LiquidCrystal.h >
#include < Wire.h >
#include « RTClib.h »
#include < math.h >
RTC_DS1307 CCF ;
initialiser la bibliothèque avec les numéros des broches interface
Innovente lcd (7, 8, 9, 10, 11, 12) ;
faire certains caractères personnalisés :
fan1 octet [8] = {B00000, B01100, B01011, B10101, B11010, B00110, B00000, B00000} ;
fan2 octet [8] = {B00000, B00110, B11010, B10101, B01011, B01100, B00000, B00000} ;
fan3 octet [8] = {B00000, B11011, B11011, B00100, B11011, B11011, B00000, B00000} ;
icône int = 1 ;
int delayTime = 100 ;
void setup() {}
Serial.Begin(57600) ;
créer un nouveau personnage
lcd.createChar (1, fan1) ;
lcd.createChar (2, fan2) ;
lcd.createChar (3, fan3) ;
mis en place nombre de l’écran LCD de colonnes et de lignes :
LCD.Begin(20,4) ;
#ifdef AVR
Wire.Begin() ;
#else
Wire1.Begin() ; Bouclier I2C broches connect Alt bus I2C sur Arduino Due
#endif
RTC.Begin() ;
Si (! rtc.isrunning()) {}
Serial.println ("RTC n'est pas running!") ;
suivant ligne définit le CCF à la date et l’heure de que cette esquisse a été compilée
RTC.Adjust (DateTime (__DATE__, __TIME__)) ;
}
}
void loop() {}
Le format de la Date...
DateTime maintenant = rtc.now() ;
Lire les températures...
lcd.setCursor (0, 0) ;
LCD.Print("Temp.") ;
lcd.setCursor (0, 1) ;
LCD.Print("1:") ;
LCD.Print(int(Thermister(analogRead(0))) ;
LCD.Print((Char)223) ;
LCD.Print('F') ;
lcd.setCursor (0, 2) ;
LCD.Print("2:") ;
LCD.Print(int(Thermister(analogRead(1))) ;
LCD.Print((Char)223) ;
LCD.Print('F') ;
lcd.setCursor (0, 3) ;
LCD.Print("3:") ;
LCD.Print(int(Thermister(analogRead(2))) ;
LCD.Print((Char)223) ;
LCD.Print('F') ;
lcd.setCursor (8, 0) ;
LCD.Print(Now.month(), DEC) ;
LCD.Print('/') ;
LCD.Print(Now.Day(), DEC) ;
LCD.Print('/') ;
LCD.Print(Now.Year(), DEC) ;
Heures
lcd.setCursor (8, 1) ;
LCD.Print(PAD(ClockHours(Now.Hour())) ;
Minutes
lcd.setCursor (10, 1) ;
LCD.Print(':') ;
lcd.setCursor (11, 1) ;
LCD.Print(PAD(Now.minute())) ;
Secondes
lcd.setCursor (13, 1) ;
LCD.Print(':') ;
lcd.setCursor (14, 1) ;
LCD.Print(PAD(Now.second())) ;
FanSpinFn() ;
Delay(delayTime) ;
}
double réflectomètres (int RawADC) {}
double Temp ;
Temp = log(((10240000/RawADC) - 10000)) ;
Temp = 1 / (0.001129148 + (0.000234125 + (0.0000000876741 * Temp * Temp)) * Temp) ;
Temp = Temp - 273.15 ; Convertir Kelvin en Celcius
Temp = (Temp * 9.0) / 5,0 + 32.0 ; Convertir les degrés Celsius en degrés Fahrenheit
Return Temp ;
}
void FanSpinFn() {}
lcd.setCursor (19, 3) ;
LCD.Write(Icon) ;
Si (icône < 3) {icône ++;}
else {icon = 1;}
}
String Pad (int Time_Segment) {}
Si (Time_Segment < 10) {return « 0 » + String (Time_Segment, DEC);}
else {return String (Time_Segment, DEC);}
}
int ClockHours (int heures) {}
Si (heures < 1) {return 12;}
else {return heures;}
}