Invio la parte 1° parte di 2) del programma che dovrebbe visualizzare la pagina web con l'orologio preso direttamente dal pc.
Ho tolto tutte le parti in più che avrebbero creato confusione.
Così come è scritto il programma mostra la tabella (ho tolto la parte che legge nella EEPROM) e le caselle text dove posso
settare manualmente la data e l'ora di arduino (c'è la funzione orologio che ho trovato in qualche sito)
Se ora nella linea 120 tolgo le 2 // e le inserisco nella riga 82 e 203 (/* PARTE RELATIVA ALL'OROLOGIO), disabilito
la parte relativa alla visualizzazione tabella e una volta compilato e mandato ad arduino mi visualizza la data e l'ora
presa direttamente dal PC (si tratta di uno script in javascript preso in giro...).
Se poi rimettiamo, aggiungendo le 2 // nella riga 120, la parte che visualizza la tabella ho la pagina completa
(tabella + orologio PC) che però non funziona.
Ho provato a spostare parte del codice dentro il <body> e in altre parti ma senza risultati.
IE explorer individua un errore nella riga <body> ma sinceramente le mie conoscenze in html sono molto terra terra.
L'idea base del progetto era quella di avere la pagina web residente in arduino così da poterlo collegare in qualsiasi
PC, catturare l'ora e inviarla ad arduino per settare l'orologio interno (sarebbe interessante avere a fianco dell'orologio
relativo al PC anche quello di arduino per vedere di quanto e se ritarda).
Ho il sospetto che lo script scritto in francese possa creare dei problemi anche perchè non capisco come mai se premo il tasto
AGGIORNA_DATI_ARDUINO con il metodo get invio la stringa ?FenetreDate=+29%2F7%2F2010&FenetreHeure=+15%3A51%3A00
mentre con il mio sistema la stringa era del tipo ?ora=10&minuti21=&secondi=45 dove ho la classica & al posto della %2f sulla
finestra data e %3A sulla finestra ore.
Grazie per l'attenzione
/*
Created 7 june 2010 Kempis
*/
#include <EEPROM.h>
#include <Ethernet.h>
#include <WString.h>
#define MAX_MILLIS_VALUE 34359738 // global costant
byte value;
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
byte ip[] = { 192, 168, 1, 70 };
byte gateway[] = { 192, 168, 1, 1 };
// Time variables
unsigned long current_millis_value = 0;
unsigned long previous_millis_value = 0;
unsigned long aggiunta=0;
unsigned long m = 0;
unsigned long seconds = 0;
unsigned int minutes = 0;
unsigned int hours = 0;
Server server(80); //inizializzo arduino
void setup() {
Serial.begin(9600);
Ethernet.begin(mac, ip, gateway);
server.begin();
Serial.begin(9600);
delay(1000);
}
void loop()
{
cli(); // disable interrupts
current_millis_value = aggiunta + millis();
sei(); // enable interrupts
// overflow millis()
if (current_millis_value < previous_millis_value)
m += MAX_MILLIS_VALUE - previous_millis_value + current_millis_value;
else m += current_millis_value - previous_millis_value;
seconds += m / 1000;
m = m % 1000;
minutes += seconds / 60;
seconds = seconds % 60;
hours += minutes / 60;
minutes = minutes % 60;
hours = hours % 24;
previous_millis_value = current_millis_value;
delay(100);
Client client = server.available();
if (client) {
// an http request ends with a blank line
boolean current_line_is_blank = true;
while (client.connected()) {
if (client.available()) {
char c = client.read();
// if we"ve gotten to the end of the line (received a newline
// character) and the line is blank, the http request has ended,
// so we can send a reply
if (c == '\n' && current_line_is_blank) {
// send a standard http response header
// GENERO UN CAMPO DOVE RIPORTO L"ORA ATTUALE COME INFORMAZIONE
client.println("HTTP/1.1 200 OK");
client.println("Content-Type: text/html");
client.println();
client.println("<HTML><HEAD>");
/* PARTE RELATIVA ALL'OROLOGIO
client.println("<SCRIPT LANGUAGE=\"JavaScript\">");//ivi
client.println("var Compteur = null;");
client.println("var CompteurTourne = false;");
client.println("function DemarreHorloge () {");
client.println("if(CompteurTourne)");
client.println("clearTimeout(Compteur);");
client.println("CompteurTourne = false;");
client.println("AfficheTemps();");
client.println("}");
client.println("function AfficheTemps () {");
client.println("var Temps = new Date();");
client.println("var TempsLocal = Temps.getTime()+");
client.println( "(Temps.getTimezoneOffset()-60)*60;");
client.println("var Maintenant = new Date(TempsLocal);");
client.println("var Heure = \" \" + Maintenant.getHours();");//ivi
client.println("var minutes = Maintenant.getMinutes();");
client.println("var secondes = Maintenant.getSeconds();");
client.println("Heure += ((minutes < 10) ? \":0\" : \":\") + minutes;");//ivi
client.println("Heure += ((secondes < 10) ? \":0\" : \":\") + secondes;");//ivi
client.println("document.Horloge.FenetreHeure.value = Heure;");
client.println("var AujourdHui = \" \" + Maintenant.getDate();");//ivi
client.println("var Mois = Maintenant.getMonth()+1;");
client.println("var Annee = Maintenant.getYear()+1900;");
client.println("AujourdHui += \"/\" + Mois + \"/\" + Annee;");//ivi
client.println("document.Horloge.FenetreDate.value = AujourdHui;");
client.println("Compteur = setTimeout(\"AfficheTemps()\",1000);");//ivi
client.println("CompteurTourne = true;");
client.println("}");
client.println("// -->");
client.println("</SCRIPT>");
// */