Houla oui je suis désolé et je mettais pas rendu compte ! Mais je suis trop presser de finir ce projet x) ! Donc pardon et merci de passer déjà du temps sur mon cas x) !
Alors je vais essayer de m'expliquer mieux !
Je veux allumer depuis une interface Web des moteurs branché sur la Uno, par exemple que telle ou telle URL allume tel ou tel moteur dans tel ou tel sens, et qu'ils ne changent pas de direction jusqu’à ce qu'on leur envoi une autre instruction, et que en parallèle, la carte prenne en continue les valeurs d'un panneau solaire et que dés qu'une de celle ci dépasse la valeur de Tare, la Uno accède à une page Web qui contient elle un script PHP qui rajoute un dans une BDD. (Comme un compte de score ) !
Voila j’espère avoir réussis être plus clair x) !
J'ai essayé d'adapter mon code a celui que tu m'as donné mais je ne sais même pas si je m'y suis pris correctement donc je te le poste pour que tu me dise si tu veux bien si je m'approche dans le bon sens ou pas x) !
(J'ai essayé de mieux instrumenter )
#include <SPI.h>
#include <WiFi.h>
char ssid[] = "ssi"; // Nom du Réseau
char pass[] = "ssississi"; // Mot de passe du Réseau
int keyIndex = 0; // Clé d'index (demandé uniquement pour clé WEP).
int laser=A2;
int tare;
int status = WL_IDLE_STATUS;
WiFiServer server(80);
IPAddress bddserver (192,168,0,101);
int z = 1;
byte State;
void setup() {
Serial.begin(9600); // Initialisation de la communication sur 9600 Bauds.
pinMode(5, OUTPUT); //Moteur 1 Sens 1
pinMode(6, OUTPUT); //Moteur 1 Sens 2
pinMode(8, OUTPUT); // ON/OFF 1
pinMode(3, OUTPUT); //Moteur 2 Sens 1
pinMode(9, OUTPUT); //Moteur 2 Sens 2
pinMode(2, OUTPUT); // ON/OFF 2
pinMode(laser, OUTPUT); // Laser
pinMode(A3, OUTPUT); // LED
tare= analogRead(0);
// check for the presence of the shield:
if (WiFi.status() == WL_NO_SHIELD) {
Serial.println(F("Le Shield Wifi n'est pas present !"));
while(true); // Ne pas continuer?
}
// Tentative de connexion au réseau :
while ( status != WL_CONNECTED) {
Serial.print(F("Tentative de connexion au reseau nomme: "));
Serial.println(ssid); // Affiche le nom de réseau
// Ligne pour connexion par WAP WPA (A changé si utilisation du WEP).
status = WiFi.begin(ssid, pass);
// Attendre 10 seconde pour la connexion.
delay(10000);
}
server.begin(); // démarrer le serveur WEB sur le port 80
Serial.println(F("Connecté"));
}
void loop() {
WiFiClient client = server.available(); // Attente des client connecté
if (client) { // S'il y a un client
detection(); // On vérifie si le panneau solaire est touché ou pas.
InstructionWifi();
else {
client.stop();
}
switch (State) {
case 'Z':
digitalWrite(5, HIGH);
digitalWrite(6, LOW);
digitalWrite(3, HIGH);
digitalWrite(9, LOW);
digitalWrite(8, HIGH);
digitalWrite(2, HIGH);
break;
case 'Q':
digitalWrite(5, HIGH);
digitalWrite(6, LOW);
digitalWrite(3, LOW);
digitalWrite(9, HIGH);
digitalWrite(8, HIGH);
digitalWrite(2, HIGH);
break;
case'D':
digitalWrite(5, LOW);
digitalWrite(6, HIGH);
digitalWrite(3, HIGH);
digitalWrite(9, LOW);
digitalWrite(8, HIGH);
digitalWrite(2, HIGH);
break;
case'S' :
digitalWrite(5, LOW);
digitalWrite(6, HIGH);
digitalWrite(3, LOW);
digitalWrite(9, HIGH);
digitalWrite(8, HIGH);
digitalWrite(2, HIGH);
break ;
case'P':
digitalWrite(5,LOW);
digitalWrite(6, LOW);
digitalWrite(3, LOW);
digitalWrite(9, LOW);
digitalWrite(8, LOW);
digitalWrite(2, LOW);
break;
case't' :
digitalWrite(laser, HIGH);
delay(1000);
digitalWrite(laser, LOW);
break;
case'o' :
digitalWrite(laser, LOW);
break;
case 'W' :
client.connect(bddserver, 80);
Serial.println(F("Connecte !"));
client.println("GET /ssi/traitement.php/");
break;
void InstructionWifi(){ // Toute cette portion de code est basé sur l'Expemple "SimpleServerWifi"
Serial.println(F("Nouveau Client")); // Afficher un message sur le port série
String currentLine = ""; // Crée un string pour le client
while (client.connected()) { // boucle pour voir si le client est connecté
if (client.available()) { // Si les bytes sont lues par le client
char c = client.read(); // Lecture des bytes, et
Serial.write(c); // afficher la sortie sur le moniteur
if (c == '\n') { // Si la byte est une nouvelle ligne de character
//
if (currentLine.length() == 0) {
client.println(F("HTTP/1.1 200 OK"));
client.println(F("Content-type:text/html"));
client.println();
//La réponse en HTTP sur une ligne blanche
client.println();
}
else { // Si on demande une nouvelle ligne sa initialise le CurrentLine
currentLine = "";
}
}
else if (c != '\r') {
currentLine += c;
}
// En fonction de l'URL que le client demande a la carte Arduino on fait bouger les moteurs différemment.
if (currentLine.endsWith("GET /Z")) {
State = Z;
}
else if (currentLine.endsWith("GET /Q")) {
State = Q;
}
else if (currentLine.endsWith("GET /D")){
State = D ;
}
else if(currentLine.endsWith("GET /S")){
State = S;
}
else if(currentLine.endsWith("GET /P")){
State = P ;
}
else if (currentLine.endsWith("GET /T")){ // Allume le laser pendant une seconde.
State = T;
}
else if (currentLine.endsWith("GET /O")){ // Eteint le laser
State = O
}
else if (currentLine.endsWith("GET /W")){ // Rajoute un point dans une base de donnée. (Uniquement pour testé ^_^ )
State = W;
}
}
}
void efface(){ // Cette fonction éteint tout les moteurs. // Fonction qui met les deux moteurs a 0.
digitalWrite(5, LOW);
digitalWrite(6, LOW);
digitalWrite(3, LOW);
digitalWrite(9, LOW);
digitalWrite(8, LOW);
digitalWrite(2, LOW);
}
void detection(){ // On détecte si le panneau solaire est touché ou pas.
WiFiClient client = server.available();
if (analogRead(0) > tare + 50 ) { // Si la valeur que le panneau solaire renvoi est supérieur à la valeur de tare + 50 il est touché.
client.connect(bddserver, 80); // On se connecte alors au serveur.
client.println(F("GET /ssi/traitement.php/")); // Et on accede à l'URL qui avec un script PHP rajoute un point dans une bdd.
Serial.println(F("Touché")); // On affiche touché dans le moniteur.
}
else { // Il n'est pas touché on ne fait donc rien.
Serial.println(F("Pas touché")) ; // On affiche pas touché.
}
}