Bygga ett nätverk klocka (NCLK) med Microduino-RTC (3 / 3 steg)

Steg 3: Programvara del



Programvara del:
Ladda upp program på din Microdino-Core + genom Microduino-FT232R.

----------------------------------

#include "U8glib.h"

U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NONE); HW SPI Com: CS = 10, A0 = 9 (hårdvara stift är SCK = 13 och MOSI = 11)
---teckenstorlek, big|medium|small
#define setFont_L u8g.setFont(u8g_font_7x13)
#define setFont_M u8g.setFont(u8g_font_fixed_v0r)
#define setFont_S u8g.setFont(u8g_font_chikitar)
/*
teckensnitt:
U8G.setFont(u8g_font_7x13)
U8G.setFont(u8g_font_fixed_v0r);
U8G.setFont(u8g_font_chikitar);
U8G.setFont(u8g_font_osb21);
*/

#include < Wire.h >
#include < Rtc_Pcf8563.h >

Rtc_Pcf8563 rtc;
int time_nian, time_yue, time_ri, time_shi, time_fen, time_miao, time_zhou;

#include < EtherCard.h >

#define SECONDS_IN_DAY 86400
#define START_YEAR 1900
#define TIME_ZONE + 8
statisk int days_in_month [] = {
31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};

statiska byte mymac [] = {
0x00, 0x1A, 0x4B, 0x38, 0x0C, 0x5C};
byte Ethernet::buffer [700];

statiska byte ntpServer [] = {
193,204,114,232}.
statiska byte k = 0;

uint32_t tidsstämpel;

booleska NET_TIME_reply;

#define NET_TIME_INTERVAL 1000
#define TIME_OUT 10000
#define intervall 100000
osignerade långa lastTime = 0, TIME_cache = 0;

Ogiltiga inställningar () {
Serial.BEGIN(57600);

volcdsetup ("belastning nätverk", 0, 15);
Delay(1000);
om (! ether.begin (sizeof Ethernet::buffer, mymac))
Serial.println ("kunde inte komma åt Ethernet controller");
annat
Serial.println ("Ethernet-styrenhet initieras");
om (! ether.dhcpSetup())
{
Serial.println ("kunde inte få konfiguration från DHCP");
volcdsetup ("DHCP-fel", 0, 15);
Delay(1000);
}
annat
{
Serial.println ("DHCP-konfiguration gjort");
volcdsetup ("DHCP lyckas", 0, 15);
Delay(1000);
}
ether.printIp ("IP-adress: \t", ether.myip);
ether.printIp ("Netmask:\t", ether.mymask);
ether.printIp ("Gateway: \t", ether.gwip);

//-------------------------------------------------------
volcdsetup ("last netto tid", 0, 15);
Delay(1000);
NET_TIME_reply = sant;
vonettime();
IF(NET_TIME_reply)
{
volcdsetup "(tid Sync. Fel", 0, 15);
Delay(1000);
}
annat
{
vosettime();
volcdsetup "(tid Sync. Lyckas", 0, 15);
Delay(1000);
}

//-------------------------------------------------------
Serial.println();
}

void loop() {
IF(Millis() - lastTime > intervall)
{
NET_TIME_reply = sant;
vonettime();
IF(!NET_TIME_reply)
{
vosettime();
}
lastTime = millis();
}

volcd();

}

void volcd()
{
U8G.firstPage();
göra {
setFont_M;
U8G.setPrintPos (0, 9);
U8G.Print("Time:");
U8G.Print(RTC.formatDate());

U8G.setPrintPos (0, 20);
U8G.Print(RTC.formatTime());

//-----------------------------------------
U8G.setPrintPos (0, 34);
U8G.Print("Time:");
U8G.Print("20");
U8G.Print(RTC.getYear());
U8G.Print("/");
U8G.Print(RTC.getMonth());
U8G.Print("/");
U8G.Print(RTC.getDay());

U8G.setPrintPos (0, 45);
U8G.Print(RTC.getHour());
U8G.Print(":");
U8G.Print(RTC.getMinute());
U8G.Print(":");
U8G.Print(RTC.getSecond());

Sträng vecka = "";
Switch(RTC.getWeekday())
{
fall 1:
VECKA = "Måndag";
bryta;
fall 2:
VECKA = "Tisdag";
bryta;
fall 3:
VECKA = "Onsdag";
bryta;
fall 4:
VECKA = "Torsdag";
bryta;
fall 5:
VECKA = "Fredag";
bryta;
fall 6:
VECKA = "Lördag";
bryta;
fall 7:
VECKA = "Söndag".
bryta;
}
U8G.setPrintPos (60, 45);
U8G.Print(Week);

setFont_S;
U8G.drawFrame (0, 54,128,10);
U8G.setPrintPos (3, 62).
U8G.Print ("Microduino-RTC v1.0 201307");
}
samtidigt (u8g.nextPage());
}

void vosettime()
{
rtc.initClock(); ställa in en tid till att börja med.
rtc.setDate (time_ri, time_zhou, time_yue, 0, time_nian % 100); dag, veckodag, månad, århundradet (1 = 1900, 0 = 2000), year(0-99)
rtc.setTime (time_shi, time_fen, time_miao); HR, min, SEK

}

void volcdsetup (char * zi, unsigned int x, unsigned int y)
{
U8G.firstPage();
göra {
setFont_L;
U8G.setPrintPos (x, y);
U8G.Print(Zi);
}
samtidigt (u8g.nextPage());
}

void vonettime()
{
uint32_t timeout = millis(); //
medan (NET_TIME_reply == true & & millis() - timeout < TIME_OUT) / /
{
ether.packetLoop(ether.packetReceive());
IF(Millis() - TIME_cache > NET_TIME_INTERVAL) / /
{
ether.ntpRequest (ntpServer, k);
TIME_cache = millis();
NET_TIME_reply = sant; 标记发送
}

om (NET_TIME_reply & & ether.ntpProcessAnswer (& timeStamp, k)) / /
{
printDate (timeStamp + 3600 * TIME_ZONE); //
TIME_cache = millis();
NET_TIME_reply = false; //
}
}
}

Annullera printDate (uint32_t tidsstämpel) {

osignerade långa veckan = (((timeStamp/3600/24)+1)%7);

Serial.Print ("aktuellt datum och tid:");
Serial.println(timeStamp);

unsigned int år = START_YEAR;
While(1) {
uint32_t sekunder.
IF(isLeapYear(Year)) sekunder = SECONDS_IN_DAY * 366;
annat sekunder = SECONDS_IN_DAY * 365;
om (timeStamp > = sekunder) {
timeStamp-= sekunder.
år ++;
}
annan semester.
}

unsigned int månad = 0;
While(1) {
uint32_t sekunder = SECONDS_IN_DAY * days_in_month [månad].
IF(isLeapYear(Year) & & månad == 1) sekunder = SECONDS_IN_DAY * 29;
om (timeStamp > = sekunder) {
timeStamp-= sekunder.
månad ++;
}
annan semester.
}
månad ++;

unsigned int dag = 1;
While(1) {
om (timeStamp > = SECONDS_IN_DAY) {
timeStamp-= SECONDS_IN_DAY;
dagen ++;
}
annan semester.
}

unsigned int timme = tidsstämpel / 3600;
unsigned int minut = (timeStamp - (uint32_t) timme * 3600) / 60;
unsigned int näst = (timeStamp - (uint32_t) timme * 3600) - minut * 60;

Serial.Print ("veckan:");
Serial.println(Week);

IF(Day < 10) Serial.print("0");
Serial.Print(Day);
Serial.Print("/");

IF(Month < 10) Serial.print("0");
Serial.Print(month);
Serial.Print("/");

Serial.println(Year);

IF(Hour < 10) Serial.print("0");
Serial.Print(Hour);
Serial.Print(":");

IF(Minute < 10) Serial.print("0");
Serial.Print(Minute);
Serial.Print(":");

IF(Second < 10) Serial.print("0");
Serial.println(Second);

Serial.println();

time_nian = år.
time_yue = månad.
time_ri = dag;
time_shi = timme;
time_fen = minut.
time_miao = andra.
time_zhou = vecka;
}

booleska isLeapYear (unsigned int år) {

tillbaka (år % 4 == 0 & & (år % 100! = 0 || år % 400 == 0));
}
---------------------------

Se Steg
Relaterade Ämnen

Bygga ett soffbord/TV-ställ med återvunnet trä

Titta runt i frakt och ta emot områden av vissa företag och om du har tur nog du kan frigöra några trä i gott skick kan användas för att göra något intressant.Du kan också hitta trä från pallar på platser som åkeriet.Här är stegen för att bygga ett s...

Bygga ett småbarn Bed Timelapse | Med barn

hur man bygger ett barn säng....

Bygga ett dubbla justerbara nätaggregat med begagnad laptop laddare

De senaste åren jag har fokuserat på Arduino projekt där en USB stickkontakt med 5V utgång är nästan den enda makten leverans att jag behövde. När jag startat ett projekt för några månader sedan att generera ljud vågor med en Arduino jag behövde ett...

Bygga ett hög-nå verktyg med husgeråd

du har problem att nå grejer på den översta hyllan? Detta Instructable kommer att lösa det problemet. Jag gjorde detta på mindre än tio minuter, och det kostade mig ingenting!Steg 1: Saker som behövs... Behöver du:1-broms hävarm w/abborre1-broms kabe...

Bygga ett verktyg väggfäste med en gammal lagring Rack tillbaka

med mina verktyg liggande hela min arbetsbänk jag alltid haft svårt att hitta vad jag behövde. Men luckly jag hade lämnat några metall tillbaka väggar från en gammal lagring rack, rostiga orange skit delarna på den första bilden. Av pintig hot dem me...

Bygga ett sandslott med din pappa

min pappa är inte en särskilt händig pappa. Växa upp, han vill hjälpa fixa den tillfälliga trasiga sak eller hjälpa ett visst projekt när de har, men handiness, craftyness, DIY... de som verkligen inte var hans områden. Min mamma och min morfar hade...

Hur man bygger ett hem bibliotek i källaren med hjälp av bokhyllor och tusentals böcker

följer min Youtubekanal: http://www.youtube.com/user/educatetowin?feature=mheeHemsida: http://www.educatetube.comVärd: SipskiHur man bygger ett hem bibliotek i källaren. Du behöver bara minst 5 till 7 bokhyllor (beroende på hur stor din källaren vägg...

Hur man bygger ett Fort med 3d tryckt Fort loopar

enkelt fråga, och det finns inte många människor som inte njuta av att bygga fästningar under deras barndom. Jag har en 6-åriga systerson som frågar nästan varje gång jag ser honom, "kan vi bygga ett fort?" Jag erkänna skamligt att jag ibland ha...

Bygga ett Portal torn med rörelse kontrollerade ljud och belysning

i detta Instructable jag ska visa dig hur jag gick om att bygga min egen liv storlek talar Portal torn från början till slut. Detta är ett ganska ingående projekt som kommer att omfatta varje konstruktionsfasen samt alla tekniker jag använde längs vä...

Med en HP T5700 tunn klient att se Video över ett nätverk

i detta Instructable kommer jag visa dig hur man gör en liten Set top box som gör att du kan titta på videofiler som kan nås i nätverket. Tunn klient med bara några minuter av programvara ändring av laddar VLC i permanent flash-enheten på en HP T5700...

Hur man bygger ett Ultimaker Original + med en dubbel storlek utskrift säng (180 X 460)

speciellt för skaparna bland oss (Fablabers, lärare, lära-by-doing elever och nördar) i syfte att inspirera alla att inte bara se den 3D-skrivaren är en fantastisk att göra maskinen samt en maskin kan du också (åter) gör. På internet hittar du många...

Bygga ett batteri med hjälp av PVC-rör

använda en 1 1/4 PVC rör, göra en D-cell batteripack för 7,2 V på 17.000 millamp timmar. Detta är en trevlig tubulär ackumulatorn packe.Detta instructables gjordes på Tech butik, besök techshop.wsSteg 1: Stycklista PVC-rör, 1 1/4 "x 60 cm längd1 1/4&...

Hur att köra ett batteri elektrisk klocka på solenergi--del jag

Denna första del visar hur ett konventionellt batteri elektrisk klocka kan drivas med hjälp av en enda 2 Volt solcell och en super kondensator. I vissa delar av världen året runt drift är möjligt men säsongsbetonade brist på solljus kan begränsa drif...

Bygga ett Linux-kluster - inskickad av BayLab för Instructables Sponsring programmet

någonsin ville ha en Linux-kluster att kritan siffrorna? Denna guide kommer att komma igång om att inrätta ett kluster som kan automatiskt ladda balans trådar och hjälp du lära dig hur superdatorer fungerar. Denna bild är hur mitt rum såg ut när jag...

Bygga ett leksakståg till kampen för vad som är rätt

SammanfattningI en ren teknisk documenation stil, brutalt enkelt, jag hoppas att reflektera:(1) hur byggandet av personliga och personlig leksaker hjälper dig att bekämpa det stora kommersiell/industriell komplexet av sameinizing som våra barn genomg...

Bygga ett inbyggt Linux System i några steg

När du har gått igenom processen att diskutera över vilken Linuxdistribution att använda, vad järnvaror etc. och på saker och verktyg som du behöver, kommer nästa steg – faktiskt bygga Embedded Linux system. Igen, det finns en hel del likheter mellan...

Bygga ett stort Piano

många läsare kommer ihåg en Tom Hanks film från 1988 kallas "Big".I filmen blir en ung pojke övernaturligt förvandlas till en tjugo-något man och får reda på vad det är som för att bli stor.Kanske den mest ikoniska scenen i filmen har två av kar...

Android bära Apps med en iPhone: en omfattande Guide till installation av 3: e parts program på Android bära klocka ihopkopplad med en iPhone

Äger en Android bära klocka med en iPhone?Lär dig hur du kan utöka sina förmågor genom att installera 3: e parts apps nedan!Smart klockor är bra. De har en hel del andra användbara funktioner som en vanlig klocka inte kan erbjuda. Dessutom, finns de...

Streaming Video över ett nätverk

Hej alla!Detta är min första instructable, så snälla ha tålamod med mig.Det finns många sätt att få video över ett nätverk som färdiga programvara, fånga med med färdiga programvara är att du är begränsad till vad du kan göra med programvaran, så i d...