Arduino DS3231 realtidsklocka med färg TFT (4 / 4 steg)
Steg 4: Ladda upp koden till Arduino
< #include < Adafruit_ST7735.h >
#include < Adafruit_GFX.h >
#include < Wire.h >
#include "Sodaq_DS3231.h"
#include < SPI.h >
#define TFT_CS 10
#define TFT_RST 8
#define TFT_DC 9
Adafruit_ST7735 tft = Adafruit_ST7735 (TFT_CS, TFT_DC, TFT_RST);
Alternativ 2: använda några stift men lite långsammare!
#define TFT_SCLK 13 / / ange att dessa ska vara oavsett pins som du!
#define TFT_MOSI 11 / / ange att dessa ska vara oavsett pins som du!
flyta maxTemperature = 0;
flyta minTemperature = 200.
char charMinTemperature [10].
char charMaxTemperature [10].
char timeChar [100].
char dateChar [50];
char temperatureChar [10].
flyta temperatur = 0;
flyta previousTemperature = 0;
Sträng dateString;
int minuteNow = 0;
int minutePrevious = 0;
Ogiltiga inställningar)
{
tft.initR(INITR_BLACKTAB);
tft.fillScreen(ST7735_BLACK);
Serial.BEGIN(57600);
Wire.BEGIN();
RTC.BEGIN();
printText ("Temperatur", ST7735_GREEN, 30, 65, 1); Temperaturen statisk Text
printText ("MAX", ST7735_RED, 18, 130, 1);
printText ("MIN", ST7735_BLUE, 95, 130, 1);
setRTCTime();
}
uint32_t old_ts;
Ogiltig loop)
{
flyta temperatur = rtc.getTemperature();
DateTime nu = rtc.now(); få aktuellt datum och tid
uint32_t ts = now.getEpoch();
om (old_ts == 0 || old_ts! = ts) {
old_ts = ts;
minuteNow = now.minute();
IF(minuteNow!=minutePrevious)
{
dateString = getDayOfWeek(now.dayOfWeek()) + ",";
dateString = dateString+String(now.date())+"/"+String(now.month());
dateString = dateString + "/" + String(now.year());
minutePrevious = minuteNow;
Sträng timmar = String(now.hour());
IF(Now.Minute() < 10)
{
timmar = hours+":0"+String(now.minute());
} annat
{
timmar = hours+":"+String(now.minute());
}
hours.toCharArray(timeChar,100);
tft.fillRect(10,0,160,65,ST7735_BLACK);
printText (timeChar, ST7735_WHITE, 20, 25, 3);
dateString.toCharArray(dateChar,50);
printText (dateChar, ST7735_GREEN, 8, 5, 1);
}
om (temperatur! = previousTemperature)
{
previousTemperature = temperatur;
String temperatureString = String(temperature,1);
temperatureString.toCharArray(temperatureChar,10);
tft.fillRect(10,80,128,30,ST7735_BLACK);
printText (temperatureChar, ST7735_WHITE, 10, 80, 3);
printText ("o", ST7735_WHITE, 90, 75, 2);
printText ("C", ST7735_WHITE, 105, 80, 3);
IF(temperature>maxTemperature)
{
maxTemperature = temperatur;
dtostrf (maxTemperature, 5, 1, charMaxTemperature);
tft.fillRect(3,142,33,20,ST7735_BLACK);
printText (charMaxTemperature, ST7735_WHITE, 3, 145, 1);
printText ("o", ST7735_WHITE, 35, 140, 1);
printText ("C", ST7735_WHITE, 41, 145, 1);
}
IF(temperature < minTemperature
{
minTemperature = temperatur;
dtostrf (minTemperature, 5, 1, charMinTemperature);
tft.fillRect(75,140,36,18,ST7735_BLACK);
printText (charMinTemperature, ST7735_WHITE, 80, 145, 1);
printText ("o", ST7735_WHITE, 112, 140, 1);
printText ("C", ST7735_WHITE, 118, 145, 1);
}
}
}
Delay(1000);
}
void setRTCTime()
{
DateTime dt (2015, 8, 27, 9, 35, 30, 4); År, månad, dag, timme, minuter, sekunder, veckodag
rtc.setDateTime(dt); Justera datum och tid som definierade "dt" ovan
} void printText (char * text, uint16_t färg, int x, int y, int textstorlek)
{
tft.setCursor (x, y);
tft.setTextColor(color);
tft.setTextSize(textSize);
tft.setTextWrap(true);
TFT.Print(text);
}
Sträng getDayOfWeek(int i)
{
Switch(i)
{
fall 1: returnera "Måndag", bryta;
fall 2: returnera "Tisdag", bryta;
fall 3: returnera "Onsdag", bryta;
fall 4: returnera "Torsdag", bryta;
fall 5: returnera "Fredag", bryta;
mål 6: returnera "Lördag", bryta;
fall 7: returnera "Söndag", bryta;
standard: returnera "Måndag", bryta;
}
}
Få koden som en fil här: http://educ8s.tv/arduino-real-time-clock/
Efter uppladdning koden, måste första gången du kör skissen du ställa in tiden. Avkommentera raden av koden här:
< p > / / setRTCTime(); < /p >
Nästa Ange aktuellt datum och tid på följande funktion.
< p > < br > void setRTCTime() {
DateTime dt (2015, 8, 27, 9, 35, 30, 4); År, månad, dag, timme, minuter, sekunder, veckodag
rtc.setDateTime(dt); Justera datum och tid som definierade "dt" ovan
} < /p >
När du har tid, ladda upp skissen och köra det en gång.
Nästa, kommentar raden set tid och updload skissen gång.
setRTCTime();
Programmet kan nu hålla tiden med inbyggda batteriet för år!
Njut av din färg realtidsklocka!
Aldrig missa ett projekt genom att prenumerera på min YouTube-kanal: