Désolé de poster à cet endroit, mais je n'ai pas trouvé de topic lié à l'ethernet shield
j'utilise la dernière lib ethernet ( j'ai aussi essayé l'ethernet2 )
mon problème est tout simple mais assez pour bloquer l'avancement de mon projet.
la fonction connect() échoue ou gel après pas mal d'envois
je dois simplement envoyer une requete à mon serveur PHP.
au debut je faisais des Get et je viens de changer avec un autre type d'envoi et idem.
j'ai aussi changé de serveur php afin de l'avoir sur mon poste et éviter la limitation des requetes et le pb est le meme
j''ai essayer pas mal de tutos et j'ai minimisé le code.
si quelqu'un a deja eu ce soucis ou si il voit mon pb ...
voici le loop, la mémoire est suffisante ainsi que la taille de mes buffers, j'ai viré tout l'inutile
une fois planté le reset ne suffit pas, je dois débrancher electriquement la carte et hop c'est reparti pour environ 150 envois de requetes
merci par avance pour vos réactions.
Pour contourner le pb, j'ai converti le programme avec un envoi en liaison série, un programme sur Mac OSX récupère les infos et envoie sur le serveur les données. ( bon je vous passe un autre problème où le mac lui aussi plante la connexion série au bout d'un certain temps ... )
[EDIT]
J'ai avancé sur mon problème. J'avais bien lu quelque chose sur la SD / ethernet comme quoi on ne pouvait utiliser les 2 à la fois sur ce shield.
Je n'ai pas encore fait le nécessaire et je ne peut pas confirmer à cette heure si je vais résoudre mon pb en activant la SD ou l'ethernet l'un après l'autre mais le simple fait de retirer physiquement la carte micro SD du lecteur me permet à présent de boucler sans soucis (930 000 insertions sans soucis).
Je viendrai sur ce post valider le dev car j'ai besoin de la SD.
Si cela peut débloquer quelqu'un ....
[EDIT]
[EDIT N°2]
Problème résolu, il faut bien activer la SD OU l'ethernet.
un appel de fonction ci dessous et plus de soucis.
j'ai inséré 3 000 000 de requêtes sans soucis.
Je laisse le post au complet si cela peu aider .
[EDIT]
- Code: Tout sélectionner
//Pin SD / Ethernet
#define pinSD 4
#define pinEthernet 10
#define ethernetON() digitalWrite(pinEthernet, LOW); digitalWrite(pinSD, HIGH)
#define sdON() digitalWrite(pinEthernet, HIGH); digitalWrite(pinSD, LOW)
[EDIT N°3]
Une fois tout le code remis en place, la liaison ne tient pas.
Il reste 310 octets de mémoire et je ne peux pas optimiser plus.
Soit je me suis planté sur ce que j ai dit au dessus, soit la mémoire n'est pas suffisante.
Je teste sans la sd pour valider qu avec 400 octets de mémoire liason tient ...
A suivre du coup , je commence a désespérer.
[EDIT]
- Code: Tout sélectionner
void loop(void)
{
if (client.connect())
{
strcpy(resultBuffer,"0");
strcpy(resultBuffer2,"0");
Serial.println("connected");
sprintf(strData, "HEAD /arduino/homecontrol.php?ilog=%d&isrc=%d&val=%s&val2=%s HTTP/1.0", 1, 1, resultBuffer,resultBuffer2);
client.println(strData);
client.println("Host: 192.168.1.74");
client.println("Connection: close");
client.println();
client.stop();
client.flush(); // j'ai essayé avec ou sans
delay(100); // essayé avec ou sans pause
}
else
{
Serial.println("connection failed");
}
}