Arduino tid & Temp Display sköld (5 / 6 steg)
Steg 5: kod
Och här är min exempelkod som läser de 3 termistorer, datum och tid från modulen RTC och visar dem på LCD-skärmen. Det finns några funktioner i botten som hjälp allt visas som jag ville (stoppning tid att 2 siffror och konvertera midnatt timme till 12 0). Det finns en video på nästa sida som visar hur allt visas på skärmen.
#include < LiquidCrystal.h >
#include < Wire.h >
#include "RTClib.h"
#include < math.h >
RTC_DS1307 rtc;
initiera bibliotek med numrerar av gränssnittet stiften
LiquidCrystal lcd (7, 8, 9, 10, 11, 12);
att vissa anpassade tecken:
byte fan1 [8] = {B00000, B01100, B01011, B10101, B11010, B00110, B00000, B00000};
byte fan2 [8] = {B00000, B00110, B11010, B10101, B01011, B01100, B00000, B00000};
byte fan3 [8] = {B00000, B11011, B11011, B00100, B11011, B11011, B00000, B00000};
int ikonen = 1;
int fördröjningstid = 100;
void setup() {
Serial.BEGIN(57600);
skapa en ny karaktär
lcd.createChar (1, fan1);
lcd.createChar (2, fan2).
lcd.createChar (3, fan3).
Ange den LCD antal kolumner och rader:
LCD.BEGIN(20,4);
#ifdef AVR
Wire.BEGIN();
#else
Wire1.BEGIN(); Shield I2C stift ansluter till alt I2C bussen på Arduino vederbörlig
#endif
RTC.BEGIN();
om (! rtc.isrunning()) {
Serial.println ("RTC körs inte!");
följande rad anger RTC till datum & tid denna skiss sammanställdes
RTC.ADJUST (DateTime (__DATE__, __TIME__));
}
}
void loop() {
Formatera datum...
DateTime nu = rtc.now();
Läs temperaturerna...
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);
Timmar
lcd.setCursor (8, 1);
LCD.Print(pad(ClockHours(Now.Hour()));
Minuter
lcd.setCursor (10, 1);
LCD.Print(':');
lcd.setCursor (11, 1);
LCD.Print(pad(Now.Minute()));
Sekunder
lcd.setCursor (13, 1);
LCD.Print(':');
lcd.setCursor (14, 1);
LCD.Print(pad(Now.Second()));
FanSpinFn();
Delay(delayTime);
}
dubbel Thermister (int RawADC) {
dubbel härda;
Temp = log(((10240000/RawADC) - 10000));
Temp = 1 / (0.001129148 + (0.000234125 + (0.0000000876741 * Temp * Temp)) * Temp);
Temp = Temp - 273.15; Konvertera Kelvin till Celcius
Temp = (Temp * 9.0) / 5.0 + 32,0; Konvertera grader Celsius till Fahrenheit
returnera härda;
}
void FanSpinFn() {
lcd.setCursor (19, 3);
LCD.write(Icon);
om (ikonen < 3) {ikonen ++;}
annat {ikonen = 1;}
}
Sträng Pad (int Time_Segment) {
om (Time_Segment < 10) {return "0" + sträng (Time_Segment, DEC);}
annat {returnera sträng (Time_Segment, DEC);}
}
int ClockHours (int timmar) {
om (timmar < 1) {return 12.}
annat {return timmar;}
}