Bygga själv en klocka och termometer (3 / 4 steg)
Steg 3: Skapa en skiss eller arduino
Jag använde LCD, matematik och DS1307 bibliotek,
Här är koden, jag antar att du vet om hur man lägga upp det i din styrelse:
=====================
/*
* LCD RS stift till digital stift 12
* LCD aktivera stift till digital stift 11
* LCD D4 stift till digital stift 5
* LCD D5 stift till digital stift 4
* LCD D6 stift till digital stift 3
* LCD D7 stift till digital stift 2
* LCD R/W pinnen till jord
* 10K motstånd:
* avslutar till + 5V och jord
* torkar till LCD-VO pin (stift 3)
*/
#include < LiquidCrystal.h >
#include < DS1307.h >
#include < math.h >
Init DS1307
DS1307 rtc (20, 21);
Init LCD
LiquidCrystal lcd (22, 24, 26, 28, 30, 31);
LiquidCrystal lcd (12, 11, 5, 4, 3, 2);
void setup()
{
Ställa in klockan till run-läge
RTC.halt(false);
Serial.BEGIN(9600);
Setup LCD till 16 x 2 tecken
LCD.BEGIN (16, 2);
Följande rader kan kommenteras ut för att använda värden redan lagrade i DS1307
rtc.setDOW(SATURDAY); Inställd söndag dagen av veckan
rtc.setTime (13, 21, 0); Ställa in tiden till 12:00:00 (24hr format)
rtc.setDate (11, 05, 2013); Ställ in datum till 3: e oktober 2010
Ange SQW/ut pris till 1Hz och aktiverar SQW
rtc.setSQWRate(SQW_RATE_1);
rtc.enableSQW(true);
}
dubbel Thermister (int RawADC) {
dubbel härda;
Se http://en.wikipedia.org/wiki/Thermistor för förklaring av formel
Temp = log(((10240000/RawADC) - 10000));
Temp = 1 / (0.001129148 + (0.000234125 * Temp) + (0.0000000876741 * Temp * Temp * Temp));
Temp = Temp - 273.15; Konvertera Kelvin till Celcius
returnera härda;
}
void loop()
{
Visa tid centrerad på den övre raden
lcd.setCursor (4, 0);
lcd.setCursor (0, 0);
LCD.Print(RTC.getTimeStr());
Läs temp sensor
dubbel temp = Thermister(analogRead(0)); Läs sensor
avtrycken skärm
lcd.setCursor(10,0);
LCD.Print(temp);
LCD.Print("C/");
Visa förkortat dagen av veckan i det nedre vänstra hörnet
lcd.setCursor (0, 1);
LCD.Print(RTC.getDOWStr(FORMAT_SHORT));
Visa datum i det nedre högra hörnet
lcd.setCursor (6, 1);
lcd.setCursor (3, 1);
LCD.Print(",");
lcd.setCursor (4, 1);
LCD.Print(RTC.getDateStr());
}
================