Bonjour,
Je me permets de faire appel a vous car j'ai un souci que je n'arrive pas a comprendre.
En effet, je m'amuse actuellement avec une carte arduino avec une shield ethernet.
J'ai donc un petit code sur un blog qui permet de faire des interactions entre une page HTML et l'arduino (avec JSON).
Le code me semble bon et pourtant.
Dans le sens html->arduino, ça fonctionne et mes leds s'allument.
En revanche, le retour de l'arduino+ethernet est complètement déformé (voir les codes ci-dessous).
J'ai l'impression que le problème provient plus de la mémoire ou du fonctionnement que du code.
Avez vous une idée ?
Merci.
Code de réponse de l'arduino :
void repondre(EthernetClient client) {
// La fonction prend un client en argument
//Serial.println(freeMemory());
Serial.println("\nRepondre"); // debug
// On fait notre en-tête
// Tout d'abord le code de réponse 200 = réussite
client.println("HTTP/1.1 200 OK");
// Puis le type mime du contenu renvoyé, du json
client.println("Content-Type: application/json");
// Autorise le cross origin
client.println("Access-Control-Allow-Origin: *");
// Et c'est tout !
// On envoi une ligne vide pour signaler la fin du header
client.println();
// Puis on commence notre JSON par une accolade ouvrante
client.println("{");
// On envoie la première clé : "uptime"
client.print("\t\"uptime\": 1234");
// Puis la valeur de l'uptime
//client.print(millis());
//Une petite virgule pour séparer les deux clés
client.println(",");
// Et on envoie la seconde nommée "analog 0"
client.print("\t\"A0\": 0");
//Serial.println("1000"); // debug
//client.print(analogRead(A0));
client.println(",");
// Puis la valeur de la PWM sur la broche 6
client.print("\t\"pwm\": 0");
//client.print(pwm, DEC);
client.println(",");
// Dernières valeurs, les broches (elles mêmes dans un tableau)
client.println("\t\"broches\": {");
// La broche 3
client.print("\t\t\"3\": 0");
//client.print(digitalRead(7));
client.println(",");
// La broche 4
client.print("\t\t\"4\": 0");
//client.print(digitalRead(7));
client.println(",");
// La broche 5
client.print("\t\t\"5\": 0");
//client.println(digitalRead(7));
client.println("\t}");
// Et enfin on termine notre JSON par une accolade fermante
client.println("}");
}
Réponse reçue :
{
ET /?b=3,4,5&p=191 HTTP/1.1
pwm": 091 HTTP/1.1
pwm": 0
HTTP/1.1
pwm": 091 HTTP/1.1
pwm": 0
pwm": 091 HTTP/1.1
pwm": 0
"broches": {
"3": 091 HTTP/1.1
pwm": 0
"4": 091 HTTP/1.1
pwm": 0
"5": 0 }
}
Compil :
Le croquis utilise 17 584 octets (54%) de l'espace de stockage de programmes. Le maximum est de 32 256 octets.
Les variables globales utilisent 683 octets (33%) de mémoire dynamique, ce qui laisse 1 365 octets pour les variables locales. Le maximum est de 2 048 octets.