Non termina la compilazione

Ciao a tutti,
Sto provando a caricare lo sketch che ho allegato ma continua a darmi errore. :sob: Chi riesce ad aiutarmi?
Grazie mille, Emanuele.

arduino - Copia.txt (3.97 KB)

Buongiorno,
essendo il tuo primo post, nel rispetto del regolamento, ti chiedo cortesemente di presentarti QUI (spiegando bene quali conoscenze hai di elettronica e di programmazione ... possibilmente evitando di scrivere solo una riga di saluto) e di leggere con attenzione il su citato REGOLAMENTO ... Grazie.

Guglielmo

... ma con cosa hai editato/copiato quel codice ? ? ? :o :o :o

Lo credo che ti da errore, è pieno di comandi HTML ...

Lo devi riscrivere usando esclusivamente un editor di testo e NON copiando eventuali attributi HTML se lo copi da una pagina web !

Guglielmo

Praticamente stiamo provando ad ottenere dei dati da un sensore e farli stampare su una pagina web . Ho provato a creare una semplice pagina web con una tabella, ho verificato che funzionasse, e l'ho inserita nel Client.println(""). Con una pagina html semplice funziona, solo che volevamo farla un po' pi√Ļ carina.

Questo è il codice iniziale funzionante:

#include <dht11.h>
dht11 DHT;
#define DHT11_PIN 4
#include <Ethernet.h> //libreria ethernet
#include <SPI.h> //collabora con la libreria ethernet
#include <String.h> //gestione stringhe


byte mac[] = {0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED}; //indirisso fisico
byte ip[] = {192, 168, 1, 197}; //indirizzo ip locale
byte subnet[] = {255, 255, 255, 0}; //indirizzo subnet
byte gateway[] = {192, 168, 1, 1}; //indirizzo gateway
EthernetServer server(29); //imposto porta protocollo HTTP

int led = 7; //dichiarazione led
String ascoltatore; //dichiarazione stringa

void setup() {
 Ethernet.begin(mac, ip, gateway, subnet); //inizializzazione impostazioni
 ascoltatore=""; //inizializzazione stringa
 Serial.begin(9600);
 Serial.println("DHT TEST PROGRAM ");
 Serial.print("LIBRARY VERSION: ");
 Serial.println(DHT11LIB_VERSION);
 Serial.println();
 Serial.println("Type,\tstatus,\tHumidity (%),\tTemperature (C)");
}
void loop(){
 int chk;
 Serial.print("DHT11, \t");
 chk = DHT.read(DHT11_PIN);    // READ DATA
 switch (chk){
   case DHTLIB_OK:  
               Serial.print("OK,\t"); 
               break;
   case DHTLIB_ERROR_CHECKSUM: 
               Serial.print("Checksum error,\t"); 
               break;
   case DHTLIB_ERROR_TIMEOUT: 
               Serial.print("Time out error,\t"); 
               break;
   default: 
               Serial.print("Unknown error,\t"); 
               break;
 }
// DISPLAT DATA
 Serial.print(DHT.humidity,1);
 Serial.print(",\t");
 Serial.println(DHT.temperature,1);

 delay(1000);

 EthernetClient client = server.available();
 if (client)
 {
     while (client.available()) 
   {
     // .. e raggiungibile
     if (client.connected()) 
     {
       // Stampo la pagina HTML
       server.println("HTTP/1.1 200 OK");
       server.println("Content-Type: text/html");
       server.println();

       // Leggo il valore dei Sensori
       int umidita = DHT.humidity;
       int temperatura = DHT.temperature;
       client.println("<html>"); //inizio codice html
       client.println("<head><table><thead><tr><th>Campo</th><th>Tabella</th></tr></thead><tbody><tr><td>Misurazione</td><td><table><thead><tr><th>Umidità</th><th>Temperatura</th></tr></thead><tbody><tr><td>");
client.println(umidita);
client.println("</td><td>");
client.println(temperatura);
client.println("</td></tr></tbody></table></td></tr></tbody></table></head>");
       client.println("</html>"); //fine codice html
       client.stop(); //stop richieste dal client
    
 }

}
}
}

Io ho solo sostituito la pagina html che c'è in questo codice.

Grazie della risposta Guglielmo. Ho subito provveduto a farmi conoscere al forum!

Emanuele97:
Grazie della risposta Guglielmo. Ho subito provveduto a farmi conoscere al forum!

... si ma NON hai letto con la dovuta attenzione il REGOLAMENTO :smiling_imp:

In conformità al suddetto regolamento, punto 7, devi editare il tuo post (in basso a destra del post, bottone More -> Modify) e racchiudere il codice all'interno dei tag CODE (... sono quelli che in edit inserisce il bottone fatto così: </>, tutto a sinistra). Grazie.

Guglielmo

Il problema è che hai inserito male il codice HTML !!!

Guarda come lo hai inserito ... prova a vedere come, nel linguaggio 'C', si continua una stringa su pi√Ļ righe e scoprirari perch√© quel codice, cos√¨, non si compiler√† mai !!!

Guglielmo

Scusami ma da telefono non mi mostrava il bottone del codice.

Comunque il codice che ho postato prima funziona. Ma non riesco a capire dove ho sbagliato nel primo.

Hai letto il mio messaggio #5 ?

Vai su Google e cerca "c string more than one line" ... e troverai perché sbagli ! :smiling_imp:

Guglielmo

Sisi ho letto e sono andato a cercare su google, ma quello che io non capisco √® perch√© il codice che ho postato nel box funziona mentre quello che ho allegato nel primo messaggio no. Sono identici solo che il primo √® un po' pi√Ļ lungo.

Ho anche provato a scrivere l'html tutto su una riga, ma niente. Ora proverò con il metodo che mi hai detto tu.

La sintassi che hai usato per inviare è completamete diversa ...
... li hai spezzato in molte client.println().

Considera anche che potrebbero essereci dei limiti sulla lunghezza della singola client.println() ...
... ma, non usando molto quelle cose, non so dirti quali ... ::slight_smile:

Guglielmo

Guglielmo, è un progetto che stiamo facendo insieme e lui mi aiuta facendo la tabella in html, ma non sappiamo a cosa sono dovuti questi errori, ho letto che in inglese qualcuno ha già avuto gli stessi errori ma non sono riuscito a seguire il discorso in inglese, se puoi aiutarci e può esserti d'aiuto a capire ti linko il topic riguardante questo argomento..

... dovete aspettare qualcuno che usa spesso le schede di rete perché io le uso praticamente ... MAI ... :grin:

Guglielmo

Perché non provi Webbino?

SukkoPera
Potrebbe essere d'aiuto, potresti dirmi come funziona e in che modo dovremmo modificare lo sketch per farlo funzionare?

SukkoPera:
Perché non provi Webbino?

Sapresti aiutarmi a riguardo?
Grazie mille.

... se lo avete installato, guardate nella cartella degli esempi, ce ne sono che mandano schermate HTML e gestiscono bottoni.

Guglielmo

Infatti suggerirei di installarlo dal Library Manager e provare gli esempi, poi se avete problemi ne parliamo.

Cos'è il library manager? Scusa l'ignoranza...

Arduino IDE -> Menu -> Sketch -> Include Library -> Manage Libraries (il primo in altro) .. è il comando con cui vanno installate le librerie ...
... così come Tools -> Board -> Board manager .. è quello per installare le Board aggiuntive.

Guglielmo

Mamma mia ragazzi... Un po' di iniziativa, intraprendenza, curiosità, voglia di smanettare, voglia di cavarsela da soli e/o metterci del proprio... mai, eh? :confused: