Non tutti hanno mai notato che i loro orologi (se non sei orologi radio) stanno andando avanti o dopo? Al più tardi alla prossima volta cambiamento in estate o in autunno, tutti gli orologi sono arretrati al momento giusto.
Il computer sincronizza regolarmente il proprio orologio interno con un cosiddetto server NTP. Il server NTP è, per così dire, un orologio radio per il computer.
Possiamo utilizzare un server NTP per ottenere la nostra strada e accedervi tramite WI-Fi con un modulo ESP8266-01S. Quindi visualizziamo questa volta su un display OLED.
Quello di cui abbiamo bisogno:
1 x ESP8266-01S
1 x 0.96" Display OLED
Pochi Linee ponticello
1 x portabatterie per 2 batterie
1 x Adattatore di programmazione Adattatore USB O FTDI FT232RL
Alloggiamento stampato in 3D per thingiverse
Il cablaggio dell'hardware:
Per poter utilizzare l'orologio indipendentemente dal computer, utilizziamo 2 batterie con 1,5V ciascuna. Con una tensione totale 3V siamo al limite inferiore dell'hardware.
La massa (meno il palo) della batteria è collegata ai connettori GND sul display ESP8266-01S e OLED. > Linea nera
Il 3V (più-polo) della batteria è collegato con VCC all'ESP8266-01S e display, inoltre il CH_PD (chip enable) deve essere impostato su alto (3V). > Linea rossa
Infine, le due linee i2c dal display sono collegate all'ESP8266-01S, per questo dobbiamo utilizzare i 2 GPIO disponibili. Le Linea gialla sCK ed è collegato a GPIO2. Le Leadership verde è SDA ed è collegato a GPIO0.
Se tutto è collegato, possiamo passare alla programmazione. Per programmare, il GPIO0 deve essere impostato a terra durante l'avvio!
Il software:
#include "ESP8266WiFi.h" #include <WiFiUdp.H> #include <Filo.H> #include "font.h" WiFiClient (Client WiFi) Client; Char* Ssid = "SSID Wi-Fi"; Char* Password = "WI-FI-PW"; Char Buffer[20]; # define OLED_address 0x3c (in modo 0x3c) Unsigned Int Localport = 2390; Ipaddress timeServerIP (avviEServerIP); Const Char* nomeserver ntp = "pool.ntp.org"; Const Int NTP_PACKET_SIZE = 48; Byte packetBuffer (buffer)[ NTP_PACKET_SIZE]; WiFiUDP Udp; Statico Vuoto reset_display(Vuoto) { displayOff (Disattivato)(); clear_display(); displayOn (Visualizzazione)(); } Vuoto StartUp_OLED() { init_OLED(); reset_display(); displayOff (Disattivato)(); setXY (in nome(0,0); clear_display(); displayOn (Visualizzazione)(); } Vuoto displayOn (Visualizzazione)(Vuoto) { comando di invio(0xaf); } Vuoto displayOff (Disattivato)(Vuoto) { comando di invio(0xae); } Statico Vuoto clear_display(Vuoto) { Unsigned Char Ho.,K; Per(K=0;K<8;K++) { setXY (in nome(K,0); { Per(Ho.=0;Ho.<128;Ho.++) { SendChar (informazioni in stato di e(0); } } } } Statico Vuoto SendChar (informazioni in stato di e(Unsigned Char Dati) { Filo.beginTransmission(OLED_address); Filo.Scrivere(0x40 (in questo 0x40)); Filo.Scrivere(Dati);font.h (Datei als neuer Tab)
Filo.endTransmission();
} Statico Vuoto sendCharXY (informazioni in stato instato di un'azione(Unsigned Char Dati, Int X, Int Y) { setXY (in nome(X, Y); Filo.beginTransmission(OLED_address); Filo.Scrivere(0x40 (in questo 0x40)); Per(Int Ho.=0;Ho.<8;Ho.++) Filo.Scrivere(pgm_read_byte(Myfont[Dati-0x20 (in questo 0x20)]+Ho.)); Filo.endTransmission(); } Statico Vuoto comando di invio(Unsigned Char Com) { Filo.beginTransmission(OLED_address); Filo.Scrivere(0x80 (in questo 0x80)); Filo.Scrivere(Com); Filo.endTransmission();
}
Statico Vuoto setXY (in nome(Unsigned Char Riga,Unsigned Char Colonnello) { comando di invio(0xb0 (in modo 0xb0)+Riga); comando di invio(0x00 (in questo 0x00)+(8*Colonnello&0x0f (in formato 0x0f))); comando di invio(0x10 (in modo 0x10)+((8*Colonnello>>4)&0x0f (in formato 0x0f))); } Statico Vuoto sendStr(Unsigned Char *Stringa) { Unsigned Char Ho.=0; Mentre(*Stringa) { Per(Ho.=0;Ho.<8;Ho.++) { SendChar (informazioni in stato di e(pgm_read_byte(Myfont[*Stringa-0x20 (in questo 0x20)]+Ho.)); } *Stringa++; } } Statico Vuoto sendStrXY (informazioni in due)( Char *Stringa, Int X, Int Y) { setXY (in nome(X,Y); Unsigned Char Ho.=0; Mentre(*Stringa) { Per(Ho.=0;Ho.<8;Ho.++) { SendChar (informazioni in stato di e(pgm_read_byte(myFont[*corda-0x20]+io)); } *corda++; } } statico vuoto init_OLED(vuoto) { sendCommand(0xAE); sendCommand(0xA6); sendCommand(0xAE); sendCommand(0xD5); sendCommand(0x80); sendCommand(0xa8); sendCommand(0x3F); sendCommand(0xD3); sendCommand(0x0); sendCommand(0x40 | 0x0); sendCommand(0x8D); sendCommand(0x14); sendCommand(0x20); sendCommand(0x00); // sendcommand (0xA0 | 0x1); // 180 Grad drehen sendCommand(0xA0); // sendCommand (0xC8); // 180 Grad drehen sendCommand(0xC0); sendCommand(0xDA); sendCommand(0x12); sendCommand(0x81); sendCommand(0xCF); sendCommand(0xd9); sendCommand(0xF1); sendCommand(0xDB); sendCommand(0x40); sendCommand(0xA4); sendCommand(0xA6); clear_display(); sendCommand(0x2E); sendCommand(0x20); sendCommand(0x00); } vuoto Draw_WIFI() { clear_display(); SetXY(0,0); per(int io=0;io<128*8;io++) { SendChar(pgm_read_byte(Wifi1+io)); } sendCommand(0xAF); } vuoto Draw_WAVES() { clear_display(); SetXY(0,0); per(int io=0;io<128*8;io++) { SendChar(pgm_read_byte(rfwaves+io)); } sendCommand(0xAF); }
vuoto impostare() { ritardo(200); Filo.perni(0, 2); Filo.inizio(); StartUp_OLED(); clear_display(); sendStrXY("***************", 0, 1); sendStrXY(" INIZIO ", 0, 1); Wi-Fi.inizio(ssid, parola d'ordine); mentre (Wi-Fi.stato() != WL_CONNECTED) { sendStrXY("Verbinden", 0, 1); ritardo(250); sendStrXY(" ", 0, 1); } Indirizzo IP ip = Wi-Fi.LOCALIP(); Corda ipStr = Corda(ip[0]) + '.' + Corda(ip[1]) + '.' + Corda(ip[2]) + '.' + Corda(ip[3]); ipStr.toCharArray(buffer, 20); sendStrXY((buffer), 0, 1); udp.inizio(localPort); ritardo(2000); } vuoto ciclo continuo() { Wi-Fi.hostByName(ntpServerName, timeServerIP); sendNTPpacket(timeServerIP); ritardo(200); int CB = udp.parsePacket(); Se (!CB) { } altro { udp.leggere(packetBuffer, NTP_PACKET_SIZE); unsigned lungo highWord = parola(packetBuffer[40], packetBuffer[41]); unsigned lungo LowWord = parola(packetBuffer[42], packetBuffer[43]); unsigned lungo secsSince1900 = highWord << 16 | LowWord; const unsigned lungo seventyYears = 2208988800UL; unsigned lungo epoca = secsSince1900 - seventyYears; int Stunden = (epoca % 86400L) / 3600; Seriale.println(Stunden); int Minuten =(epoca % 3600) / 60; int Sekunden = epoca % 60; Corda str; str = Corda(int(Stunden/10)); carbonizzare stund1[2]; str.toCharArray(stund1,2); str = Corda(int(Stunden%10)); carbonizzare stund2[2]; str.toCharArray(stund2,2); str = Corda(int(Minuten/10)); carbonizzare min1[2]; str.toCharArray(min1,2); str = Corda(int(Minuten%10)); carbonizzare min2[2]; str.toCharArray(min2,2); str = Corda(int(Sekunden/10)); carbonizzare sek1[2]; str.toCharArray(sek1,2); str = Corda(int(Sekunden%10)); carbonizzare sek2[2]; str.toCharArray(sek2,2); // sendStrXY ("00:00:00", 2, 1); sendStrXY(stund1, 2, 4); sendStrXY(stund2, 2, 5); sendStrXY(":", 2, 6); sendStrXY(min1, 2, 7); sendStrXY(min2, 2, 8); sendStrXY(":", 2, 9); sendStrXY(sek1, 2, 10); sendStrXY(sek2, 2, 11); ritardo(50); } } unsigned lungo sendNTPpacket(Indirizzo IP& indirizzo) { memset(packetBuffer, 0, NTP_PACKET_SIZE); packetBuffer[0] = 0b11100011; packetBuffer[1] = 0; packetBuffer[2] = 6; packetBuffer[3] = 0xEC; packetBuffer[12] = 49; packetBuffer[13] = 0x4E; packetBuffer[14] = 49; packetBuffer[15] = 52; udp.beginPacket(indirizzo, 123); udp.Scrivi(packetBuffer, NTP_PACKET_SIZE); udp.endPacket(); }
const carbonizzare myFont[][8] PROGMEM = { {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, {0x00,0x00,0x5F,0x00,0x00,0x00,0x00,0x00}, {0x00,0x00,0x07,0x00,0x07,0x00,0x00,0x00}, {0x00,0x14,0x7F,0x14,0x7F,0x14,0x00,0x00}, {0x00,0x24,0x2A,0x7F,0x2A,0x12,0x00,0x00}, {0x00,0x23,0x13,0x08,0x64,0x62,0x00,0x00}, {0x00,0x36,0x49,0x55,0x22,0x50,0x00,0x00}, {0x00,0x00,0x05,0x03,0x00,0x00,0x00,0x00}, {0x00,0x1C,0x22,0x41,0x00,0x00,0x00,0x00}, {0x00,0x41,0x22,0x1C,0x00,0x00,0x00,0x00}, {0x00,0x08,0x2A,0x1C,0x2A,0x08,0x00,0x00}, {0x00,0x08,0x08,0x3E,0x08,0x08,0x00,0x00}, {0x00,0xA0,0x60,0x00,0x00,0x00,0x00,0x00}, {0x00,0x08,0x08,0x08,0x08,0x08,0x00,0x00}, {0x00,0x60,0x60,0x00,0x00,0x00,0x00,0x00}, {0x00,0x20,0x10,0x08,0x04,0x02,0x00,0x00}, {0x00,0x3E,0x51,0x49,0x45,0x3E,0x00,0x00}, {0x00,0x00,0x42,0x7F,0x40,0x00,0x00,0x00}, {0x00,0x62,0x51,0x49,0x49,0x46,0x00,0x00}, {0x00,0x22,0x41,0x49,0x49,0x36,0x00,0x00}, {0x00,0x18,0x14,0x12,0x7F,0x10,0x00,0x00}, {0x00,0x27,0x45,0x45,0x45,0x39,0x00,0x00}, {0x00,0x3C,0x4A,0x49,0x49,0x30,0x00,0x00}, {0x00,0x01,0x71,0x09,0x05,0x03,0x00,0x00}, {0x00,0x36,0x49,0x49,0x49,0x36,0x00,0x00}, {0x00,0x06,0x49,0x49,0x29,0x1E,0x00,0x00}, {0x00,0x00,0x36,0x36,0x00,0x00,0x00,0x00}, {0x00,0x00,0xac,0x6C,0x00,0x00,0x00,0x00}, {0x00,0x08,0x14,0x22,0x41,0x00,0x00,0x00}, {0x00,0x14,0x14,0x14,0x14,0x14,0x00,0x00}, {0x00,0x41,0x22,0x14,0x08,0x00,0x00,0x00}, {0x00,0x02,0x01,0x51,0x09,0x06,0x00,0x00}, {0x00,0x32,0x49,0x79,0x41,0x3E,0x00,0x00}, {0x00,0x7E,0x09,0x09,0x09,0x7E,0x00,0x00}, {0x00,0x7F,0x49,0x49,0x49,0x36,0x00,0x00}, {0x00,0x3E,0x41,0x41,0x41,0x22,0x00,0x00}, {0x00,0x7F,0x41,0x41,0x22,0x1C,0x00,0x00}, {0x00,0x7F,0x49,0x49,0x49,0x41,0x00,0x00}, {0x00,0x7F,0x09,0x09,0x09,0x01,0x00,0x00}, {0x00,0x3E,0x41,0x41,0x51,0x72,0x00,0x00}, {0x00,0x7F,0x08,0x08,0x08,0x7F,0x00,0x00}, {0x00,0x41,0x7F,0x41,0x00,0x00,0x00,0x00}, {0x00,0x20,0x40,0x41,0x3F,0x01,0x00,0x00}, {0x00,0x7F,0x08,0x14,0x22,0x41,0x00,0x00}, {0x00,0x7F,0x40,0x40,0x40,0x40,0x00,0x00}, {0x00,0x7F,0x02,0x0C,0x02,0x7F,0x00,0x00}, {0x00,0x7F,0x04,0x08,0x10,0x7F,0x00,0x00}, {0x00,0x3E,0x41,0x41,0x41,0x3E,0x00,0x00}, {0x00,0x7F,0x09,0x09,0x09,0x06,0x00,0x00}, {0x00,0x3E,0x41,0x51,0x21,0x5E,0x00,0x00}, {0x00,0x7F,0x09,0x19,0x29,0x46,0x00,0x00}, {0x00,0x26,0x49,0x49,0x49,0x32,0x00,0x00}, {0x00,0x01,0x01,0x7F,0x01,0x01,0x00,0x00}, {0x00,0x3F,0x40,0x40,0x40,0x3F,0x00,0x00}, {0x00,0x1F,0x20,0x40,0x20,0x1F,0x00,0x00}, {0x00,0x3F,0x40,0x38,0x40,0x3F,0x00,0x00}, {0x00,0x63,0x14,0x08,0x14,0x63,0x00,0x00}, {0x00,0x03,0x04,0x78,0x04,0x03,0x00,0x00}, {0x00,0x61,0x51,0x49,0x45,0x43,0x00,0x00}, {0x00,0x7F,0x41,0x41,0x00,0x00,0x00,0x00}, {0x00,0x02,0x04,0x08,0x10,0x20,0x00,0x00}, {0x00,0x41,0x41,0x7F,0x00,0x00,0x00,0x00}, {0x00,0x04,0x02,0x01,0x02,0x04,0x00,0x00}, {0x00,0x80,0x80,0x80,0x80,0x80,0x00,0x00}, {0x00,0x01,0x02,0x04,0x00,0x00,0x00,0x00}, {0x00,0x20,0x54,0x54,0x54,0x78,0x00,0x00}, {0x00,0x7F,0x48,0x44,0x44,0x38,0x00,0x00}, {0x00,0x38,0x44,0x44,0x28,0x00,0x00,0x00}, {0x00,0x38,0x44,0x44,0x48,0x7F,0x00,0x00}, {0x00,0x38,0x54,0x54,0x54,0x18,0x00,0x00}, {0x00,0x08,0x7E,0x09,0x02,0x00,0x00,0x00}, {0x00,0x18,0xA4,0xA4,0xA4,0x7C,0x00,0x00}, {0x00,0x7F,0x08,0x04,0x04,0x78,0x00,0x00}, {0x00,0x00,0x7D,0x00,0x00,0x00,0x00,0x00}, {0x00,0x80,0x84,0x7D,0x00,0x00,0x00,0x00}, {0x00,0x7F,0x10,0x28,0x44,0x00,0x00,0x00}, {0x00,0x41,0x7F,0x40,0x00,0x00,0x00,0x00}, {0x00,0x7C,0x04,0x18,0x04,0x78,0x00,0x00}, {0x00,0x7C,0x08,0x04,0x7C,0x00,0x00,0x00}, {0x00,0x38,0x44,0x44,0x38,0x00,0x00,0x00}, {0x00,0xFC,0x24,0x24,0x18,0x00,0x00,0x00}, {0x00,0x18,0x24,0x24,0xFC,0x00,0x00,0x00}, {0x00,0x00,0x7C,0x08,0x04,0x00,0x00,0x00}, {0x00,0x48,0x54,0x54,0x24,0x00,0x00,0x00}, {0x00,0x04,0x7F,0x44,0x00,0x00,0x00,0x00}, {0x00,0x3C,0x40,0x40,0x7C,0x00,0x00,0x00}, {0x00,0x1C,0x20,0x40,0x20,0x1C,0x00,0x00}, {0x00,0x3C,0x40,0x30,0x40,0x3C,0x00,0x00}, {0x00,0x44,0x28,0x10,0x28,0x44,0x00,0x00}, {0x00,0x1C,0xA0,0xA0,0x7C,0x00,0x00,0x00}, {0x00,0x44,0x64,0x54,0x4C,0x44,0x00,0x00}, {0x00,0x08,0x36,0x41,0x00,0x00,0x00,0x00}, {0x00,0x00,0x7F,0x00,0x00,0x00,0x00,0x00}, {0x00,0x41,0x36,0x08,0x00,0x00,0x00,0x00}, {0x00,0x02,0x01,0x01,0x02,0x01,0x00,0x00}, {0x00,0x02,0x05,0x05,0x02,0x00,0x00,0x00} }; // logo bitmap const carbonizzare Wifi1[] PROGMEM = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0xC0, 0xE0, 0xE0, 0xE0, 0xF0, 0xF0, 0xF8, 0xF8, 0xF8, 0xF8, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF0, 0xF0, 0xE0, 0xE0, 0xE0, 0xC0, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0xC0, 0xC0, 0xC0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xF0, 0xF0, 0xF8, 0xFC, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFC, 0xF8, 0xF0, 0xF0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xC0, 0xC0, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xF0, 0xF8, 0xF8, 0xFC, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0x3F, 0x1F, 0x1F, 0x3F, 0x3F, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0x1F, 0x0F, 0x0F, 0x07, 0x03, 0x03, 0xC3, 0xC1, 0xC1, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x00, 0x00, 0x00, 0xC0, 0xC0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE1, 0xC1, 0x03, 0x03, 0x03, 0x07, 0x07, 0x0F, 0x1F, 0x3E, 0x7E, 0xF8, 0xF8, 0xF0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x01, 0x3F, 0xFF, 0x3F, 0x0F, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x03, 0x3F, 0xFF, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xF8, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0E, 0x0E, 0x0C, 0x0C, 0x0E, 0x0E, 0x0E, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x07, 0x00, 0x00, 0x00, 0x09, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x80, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x80, 0xF8, 0xFF, 0xFF, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x80, 0xF0, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0B, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x0F, 0x3F, 0x7F, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0x3F, 0x0F, 0x07, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x80, 0x80, 0x80, 0xC0, 0xC0, 0xE0, 0xF0, 0xF8, 0xFC, 0x7F, 0x3F, 0x1F, 0x0F, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x03, 0x03, 0x07, 0x07, 0x07, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F (in formato 0x0F), 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x1F, 0x3F, 0x7F, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0x7E, 0x7E, 0x3E, 0x1E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0F, 0x0F, 0x0F, 0x07, 0x07, 0x07, 0x03, 0x03, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x03, 0x03, 0x07, 0x07, 0x0F, 0x0F, 0x0F, 0x0F, 0x1F, 0x1F, 0x1F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x1F, 0x1F, 0x1F, 0x0F, 0x0F, 0x0F, 0x1F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x07, 0x07, 0x03, 0x03, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; // bitmap to Heavyiron rfonde[] PROGRAMMA = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x80 (in questo 0x80), 0x80 (in questo 0x80), 0xC0 (informazioni in stato in stato in stato di, 0xC0 (informazioni in stato in stato in stato di, 0xC0 (informazioni in stato in stato in stato di, 0xE0 (in questo 0xE0), 0xE0 (in questo 0xE0), 0xF0 (in modo 0xF0), 0xF0 (in modo 0xF0), 0xF0 (in modo 0xF0), 0xF0 (in modo 0xF0), 0xF8 (in modo 0xF8), 0xF8 (in modo 0xF8), 0xF8 (in modo 0xF8), 0xFC (in formato 0xFC), 0xFC (in formato 0xFC), 0xFC (in formato 0xFC), 0xFC (in formato 0xFC), 0xFE (in modo 0xFE), 0xFE (in modo 0xFE), 0x7E, 0x7E, 0x7f, 0x7f, 0x3F (in modo di, 0x3F (in modo di, 0x3F (in modo di, 0x3F (in modo di, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x0F (in formato 0x0F), 0x0F (in formato 0x0F), 0x0F (in formato 0x0F), 0x0F (in formato 0x0F), 0x0F (in formato 0x0F), 0x0F (in formato 0x0F), 0x0F (in formato 0x0F), 0x0F (in formato 0x0F), 0x0F (in formato 0x0F), 0x07 (in tissuta in stato di, 0x07 (in tissuta in stato di, 0x07 (in tissuta in stato di, 0x07 (in tissuta in stato di, 0x07 (in tissuta in stato di, 0x07 (in tissuta in stato di, 0x07 (in tissuta in stato di, 0x07 (in tissuta in stato di, 0x07 (in tissuta in stato di, 0x07 (in tissuta in stato di, 0x07 (in tissuta in stato di, 0x07 (in tissuta in stato di, 0x07 (in tissuta in stato di, 0x07 (in tissuta in stato di, 0x07 (in tissuta in stato di, 0x07 (in tissuta in stato di, 0x07 (in tissuta in stato di, 0x07 (in tissuta in stato di, 0x07 (in tissuta in stato di, 0x07 (in tissuta in stato di, 0x07 (in tissuta in stato di, 0x07 (in tissuta in stato di, 0x0F (in formato 0x0F), 0x0F (in formato 0x0F), 0x0F (in formato 0x0F), 0x0F (in formato 0x0F), 0x0F (in formato 0x0F), 0x0F (in formato 0x0F), 0x0F (in formato 0x0F), 0x0F (in formato 0x0F), 0x0F (in formato 0x0F), 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x3F (in modo di, 0x3F (in modo di, 0x3F (in modo di, 0x3F (in modo di, 0x7f, 0x7f, 0x7E, 0x7E, 0xFE (in modo 0xFE), 0xFE (in modo 0xFE), 0xFE (in modo 0xFE), 0xFC (in formato 0xFC), 0xFC (in formato 0xFC), 0xFC (in formato 0xFC), 0xF8 (in modo 0xF8), 0xF8 (in modo 0xF8), 0xF8 (in modo 0xF8), 0xF8 (in modo 0xF8), 0xF0 (in modo 0xF0), 0xF0 (in modo 0xF0), 0xF0 (in modo 0xF0), 0xE0 (in questo 0xE0), 0xE0 (in questo 0xE0), 0xC0 (informazioni in stato in stato in stato di, 0xC0 (informazioni in stato in stato in stato di, 0xC0 (informazioni in stato in stato in stato di, 0x80 (in questo 0x80), 0x80 (in questo 0x80), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x02 (in tissuta 0x0, 0x03 (in tissuta (in ti, 0x07 (in tissuta in stato di, 0x07 (in tissuta in stato di, 0x0F (in formato 0x0F), 0x0F (in formato 0x0F), 0x1F, 0x1F, 0x1F, 0x0F (in formato 0x0F), 0x0F (in formato 0x0F), 0x07 (in tissuta in stato di, 0x07 (in tissuta in stato di, 0x07 (in tissuta in stato di, 0x03 (in tissuta (in ti, 0x03 (in tissuta (in ti, 0x03 (in tissuta (in ti, 0x01 (in tissuta (in ti, 0x01 (in tissuta (in ti, 0x01 (in tissuta (in ti, 0x80 (in questo 0x80), 0x80 (in questo 0x80), 0x80 (in questo 0x80), 0xC0 (informazioni in stato in stato in stato di, 0xC0 (informazioni in stato in stato in stato di, 0xC0 (informazioni in stato in stato in stato di, 0xE0 (in questo 0xE0), 0xE0 (in questo 0xE0), 0xE0 (in questo 0xE0), 0xF0 (in modo 0xF0), 0xF0 (in modo 0xF0), 0xF0 (in modo 0xF0), 0xF0 (in modo 0xF0), 0xF8 (in modo 0xF8), 0xF8 (in modo 0xF8), 0xF8 (in modo 0xF8), 0xF8 (in modo 0xF8), 0xF8 (in modo 0xF8), 0xFC (in formato 0xFC), 0xFC (in formato 0xFC), 0xFC (in formato 0xFC), 0xFC (in formato 0xFC), 0xFC (in formato 0xFC), 0xFC (in formato 0xFC), 0xFC (in formato 0xFC), 0xFC (in formato 0xFC), 0x7E, 0x7E, 0x7E, 0x7E, 0x7E, 0x7E, 0x7E, 0x7E, 0x7E, 0x7E, 0x7E, 0x7E, 0x7E, 0x7E, 0x7E, 0x7E, 0x7E, 0x7E, 0x7E, 0x7E, 0x7E, 0x7E, 0xFC (in formato 0xFC), 0xFC (in formato 0xFC), 0xFC (in formato 0xFC), 0xFC (in formato 0xFC), 0xFC (in formato 0xFC), 0xFC (in formato 0xFC), 0xFC (in formato 0xFC), 0xFC (in formato 0xFC), 0xF8 (in modo 0xF8), 0xF8 (in modo 0xF8), 0xF8 (in modo 0xF8), 0xF8 (in modo 0xF8), 0xF8 (in modo 0xF8), 0xF0 (in modo 0xF0), 0xF0 (in modo 0xF0), 0xF0 (in modo 0xF0), 0xF0 (in modo 0xF0), 0xE0 (in questo 0xE0), 0xE0 (in questo 0xE0), 0xE0 (in questo 0xE0), 0xC0 (informazioni in stato in stato in stato di, 0xC0 (informazioni in stato in stato in stato di, 0xC0 (informazioni in stato in stato in stato di, 0x80 (in questo 0x80), 0x80 (in questo 0x80), 0x80 (in questo 0x80), 0x00 (in questo 0x00), 0x01 (in tissuta (in ti, 0x01 (in tissuta (in ti, 0x01 (in tissuta (in ti, 0x03 (in tissuta (in ti, 0x03 (in tissuta (in ti, 0x07 (in tissuta in stato di, 0x07 (in tissuta in stato di, 0x07 (in tissuta in stato di, 0x0F (in formato 0x0F), 0x0F (in formato 0x0F), 0x1F, 0x1F, 0x1F, 0x1F, 0x0F (in formato 0x0F), 0x0F (in formato 0x0F), 0x07 (in tissuta in stato di, 0x07 (in tissuta in stato di, 0x03 (in tissuta (in ti, 0x02 (in tissuta 0x0, 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x02 (in tissuta 0x0, 0x02 (in tissuta 0x0, 0x07 (in tissuta in stato di, 0x07 (in tissuta in stato di, 0x0F (in formato 0x0F), 0x0F (in formato 0x0F), 0x1F, 0x1F, 0x1F, 0x1F, 0x0F (in formato 0x0F), 0x0F (in formato 0x0F), 0x0F (in formato 0x0F), 0x07 (in tissuta in stato di, 0x07 (in tissuta in stato di, 0x07 (in tissuta in stato di, 0x03 (in tissuta (in ti, 0x03 (in tissuta (in ti, 0x03 (in tissuta (in ti, 0x01 (in tissuta (in ti, 0x01 (in tissuta (in ti, 0x01 (in tissuta (in ti, 0x81 (in questo stato del sistema), 0x81 (in questo stato del sistema), 0x80 (in questo 0x80), 0x80 (in questo 0x80), 0xC0 (informazioni in stato in stato in stato di, 0xC0 (informazioni in stato in stato in stato di, 0xC0 (informazioni in stato in stato in stato di, 0xC0 (informazioni in stato in stato in stato di, 0xC0 (informazioni in stato in stato in stato di, 0xE0 (in questo 0xE0), 0xE0 (in questo 0xE0), 0xE0 (in questo 0xE0), 0xE0 (in questo 0xE0), 0xE0 (in questo 0xE0), 0xE0 (in questo 0xE0), 0xE0 (in questo 0xE0), 0xE0 (in questo 0xE0), 0xE0 (in questo 0xE0), 0xE0 (in questo 0xE0), 0xE0 (in questo 0xE0), 0xE0 (in questo 0xE0), 0xE0 (in questo 0xE0), 0xE0 (in questo 0xE0), 0xE0 (in questo 0xE0), 0xE0 (in questo 0xE0), 0xE0 (in questo 0xE0), 0xE0 (in questo 0xE0), 0xE0 (in questo 0xE0), 0xE0 (in questo 0xE0), 0xE0 (in questo 0xE0), 0xC0 (informazioni in stato in stato in stato di, 0xC0 (informazioni in stato in stato in stato di, 0xC0 (informazioni in stato in stato in stato di, 0xC0 (informazioni in stato in stato in stato di, 0x80 (in questo 0x80), 0x80 (in questo 0x80), 0x80 (in questo 0x80), 0x81 (in questo stato del sistema), 0x01 (in tissuta (in ti, 0x01 (in tissuta (in ti, 0x01 (in tissuta (in ti, 0x03 (in tissuta (in ti, 0x03 (in tissuta (in ti, 0x03 (in tissuta (in ti, 0x07 (in tissuta in stato di, 0x07 (in tissuta in stato di, 0x07 (in tissuta in stato di, 0x0F (in formato 0x0F), 0x0F (in formato 0x0F), 0x0F (in formato 0x0F), 0x1F, 0x1F, 0x3F (in modo di, 0x1F, 0x1F, 0x0F (in formato 0x0F), 0x0F (in formato 0x0F), 0x07 (in tissuta in stato di, 0x06 (in inglese), 0x02 (in tissuta 0x0, 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x02 (in tissuta 0x0, 0x06 (in inglese), 0x07 (in tissuta in stato di, 0x0F (in formato 0x0F), 0x0F (in formato 0x0F), 0x1F, 0x1F, 0x3F (in modo di, 0x3F (in modo di, 0x1F, 0x1F, 0x0F (in formato 0x0F), 0x0F (in formato 0x0F), 0x0F (in formato 0x0F), 0x0F (in formato 0x0F), 0x07 (in tissuta in stato di, 0x07 (in tissuta in stato di, 0x07 (in tissuta in stato di, 0x07 (in tissuta in stato di, 0x07 (in tissuta in stato di, 0x07 (in tissuta in stato di, 0x07 (in tissuta in stato di, 0x07 (in tissuta in stato di, 0x07 (in tissuta in stato di, 0x07 (in tissuta in stato di, 0x07 (in tissuta in stato di, 0x07 (in tissuta in stato di, 0x07 (in tissuta in stato di, 0x07 (in tissuta in stato di, 0x07 (in tissuta in stato di, 0x07 (in tissuta in stato di, 0x07 (in tissuta in stato di, 0x07 (in tissuta in stato di, 0x0F (in formato 0x0F), 0x0F (in formato 0x0F), 0x0F (in formato 0x0F), 0x0F (in formato 0x0F), 0x1F, 0x1F, 0x1F, 0x3F (in modo di, 0x3F (in modo di, 0x1F, 0x1F, 0x0F (in formato 0x0F), 0x0F (in formato 0x0F), 0x06 (in inglese), 0x06 (in inglese), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x04 (in tissuta 0x0, 0x06 (in inglese), 0x0E (in formato 0x0E), 0x0E (in formato 0x0E), 0x0E (in formato 0x0E), 0x1e, 0x1e, 0x3F (in modo di, 0x3F (in modo di, 0x3E, 0x1e, 0x1e, 0x0E (in formato 0x0E), 0x0E (in formato 0x0E), 0x06 (in inglese), 0x04 (in tissuta 0x0, 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00), 0x00 (in questo 0x00) };
Dopo la programmazione, installiamo tutto nella custodia stampata e abbiamo un bel orologio fatto in casa, sempre aggiornato.
L'orologio ora viene eseguito solo quando un server NTP ci raggiunge!
Come attività si può considerare di cambiare il software in modo che l'ora viene aggiornata solo al minuto o all'ora completa e in mezzo calcoliamo autosufficientemente in ESP8266-01S.
Ci sono anche altre linee disponibili sul display, che potrebbero anche essere integrate con una data.
Nella parte superiore dell'alloggiamento ci sono ancora fori previsti per gli interruttori, che ne dici di un interruttore ON/ OFF?
Divertiti a replicare e lascia le tue idee per migliorare i commenti.
3 commenti
yetti
Das sollte doch auch einfacher gehen mittels time.h und configtime,
dann kann man noch den localen Router noch als Zeitserver verwenden, denn kann ohne Probleme öfter abfragen. Ist dann zwar nicht PTB aber schon sehr genau für eine normale Uhr und das sollte für die meisten weiteren Projekte reichen.
#include
void setup() {
//Wifi
….
}
void loop () {
….
// alle x Minuten
….
Serial.println(“aktuelle Zeit holen”);
getPTB();
…
// Zeit holen aus dem internen Speicher.
Serial.println(“Readtime()”);
readtime(); // Zeit einlesen
….
}
void getPTB(){
configTime(0, 0, “192.168.1.1”, “ptbtime1.ptb.de”, “ptbtime2.ptb.de”); // locale Fritzbox und ptb.de
setenv(“TZ”, “CET-1CEST,M3.5.0,M10.5.0/3”, 1); // locale Zeit einstellen mit Sommerzeit
Serial.print("Waiting for time “);
while (!time(nullptr)) {
Serial.print(”.");
delay(100);
}
delay(100); // warten auf NTP Zeit
}
void readtime() {
if (year < 2000) { // das war nix Zeit falsch ESP.restart(); }time_t now = time(nullptr);
struct tm*timeinfo;
time(&now);
timeinfo = localtime(&now);
year = 1900 + timeinfo→tm_year;
month = 1 + timeinfo→tm_mon;
day = timeinfo→tm_mday;
hour = timeinfo→tm_hour;
minute = timeinfo→tm_min;
second = timeinfo→tm_sec;
// Serial.printf(“%02u-%02u-%4u\n”, day, month, year);
Serial.printf(“%02u:%02u:%02u \n”, hour, minute, second);
}
Kai
Hallo Markus,
ein ESP arbeitet leider viel zu ungenau bzw. arbeitet er Funktionalitäten wie WLAN vorrangig ab und vernachlässigt dann andere Prozesse. Würde die Zeit nicht stündlich abgefragt käme es mitunter pro Stunde zu einem Fehler von bis zu 3 Minuten. Eine Lösung ist ein RTC-Modul oder das WLAN zu deaktivieren oder mit der Funktion Millis die verstrichene Zeit der Hintergrundprozesse zu ermitteln. Es geht hier ums basteln und nicht um High-End-Geräte…
Markus Gebhard
Nettes Beispiel, aber bitte fair sein und die Regularien und Doku des Zeitservers beachten. Siehe https://www.pool.ntp.org/vendors.html und insbesondere die Richtlinie "Don’t send excessively frequent queries. Reasonable query intervals are typically from once or twice a day to a 4-5 times an hour depending on the application. Really consider how often the device will need “fresh time”. A standard ntpd or openntpd server works, too." – bitte vermeiden, andauernd eine Zeitabfrage zu senden, weil diese eben doch Bandbreite verbraucht und damit andere in Mitleidenschaft zieht.