Zápisník experimentátora
Hierarchy: WS2812
V poslednom článku zo série o vytváraní hodín pripojíme ku obvodu hodiny reálneho času. Využijeme na to obvod DS1307, ktorý obsahuje v sebe hodiny reálneho času. Na jeho spojazdnenie budeme potrebovať iba niekoľko externých súčiastok.
Voči predchádzajúcej schéme sa dopĺňa I2C pripojenie hodín reálneho času. I2C používa dva konkrétne piny a dva pull-up rezistory. Hodiny tvorí obvod DS1307. Podrobnosti o jeho používaní nájdete v samostatnom článku.
Reálny čas potrebujeme pri štarte programu. Podľa neho nastavíme počiatočné polohy pre hodinové, minútové a sekundové ručičky.
#include <Time.h>
#include <DS1307RTC.h>
///
/// Program configuration
///
struct Configuration
{
ClockState cs;
bool show_millis;
int hour;
int minute;
int second;
Configuration()
: show_millis(SHOWMILLIS), cs(csClock), hour(STARTHOUR), minute(STARTMINUTE), second(0) {}
};
Configuration cfg;
///
/// Update all positions
///
void NeoClock::Update()
{
// we use fake time
uint32_t m=millis()+1000L*cfg.second+60000L*cfg.minute+3600000L*cfg.hour;
second = map ((m % 60000), 0, 60000, 0, CNT);
milli = map ((m % 1000), 0, 1000, 0, CNT);
minute = map (((m/60000) % 60), 0, 60, 0, CNT);
hour = map (((m/60000/60) % 12), 0, 12, 0, CNT);
}
///
/// Setup
///
void setup()
{
Serial.begin(9600);
while (!Serial) ; // wait for serial
Serial.println("NeoPixel Clock v. 1.4");
Serial.println("-------------------");
tmElements_t tm;
if (RTC.read(tm)) {
Serial.print("Time = ");
print2digits(tm.Hour);
Serial.write(':');
print2digits(tm.Minute);
Serial.write(':');
print2digits(tm.Second);
Serial.print(", Date (D/M/Y) = ");
Serial.print(tm.Day);
Serial.write('/');
Serial.print(tm.Month);
Serial.write('/');
Serial.print(tmYearToCalendar(tm.Year));
Serial.println();
cfg.second=tm.Second;
cfg.minute=tm.Minute;
cfg.hour=tm.Hour;
}
strip.begin();
strip.show(); // Initialize all pixels to 'off'
strip.setBrightness(0); // disable flickering
}
V tejto sérii článkov sme prešli postupne niekoľkými bodmi a navrhli sme si hodiny so všetkými základnými funkciami. Stále máme priestor na vylepšovanie, ale to už je motiváciou pre vás, aby ste sa v prípade záujmu pohrali so zdrojovými textami a doplnili alebo vylepšili jeho správanie.
10.09.2015