bonjours a tous et merci d avance
je suis soigneur animalier et je souhaite inclure un projet arduino pour enrichir (occuper) les animaux dans la journée
LE PROJET
contrôler un servo qui se déclenche à 15 30 45min et 1h d intervalle régulier avec millis(reussi).
Pour gérer les intervalles je souhaite pouvoir me connecter via l esp en mode accès point , générer une page web et sélectionner les intervalles(presque réussi)
mon problème
j arrive à déclenche le servo uniquement en renvoyant une requête.Je souhaite aussi que le temps demander s affiche sur la page et il saffiche avec un decalege d une requete
/*
SORTIE CODE => SORTIE WEMOS
14 => 13
12 => 12
13 => 11
15 => 10
13 => 09
12 => 8
1
*/
#include <Servo.h>
Servo servo,servo2;
int pos = 10;
long previousMillis = 0; // variable pour mémoriser le temps écoulé depuis le dernier changement de la LED
long interval=500;
long TEMPS;
int val;
#include <ESP8266WiFi.h>
const char* ssid = "la";
const char* password = "12345678";
//On créé une instance, un objet qui contiendra le serveur web.
//On communiquera avec lui sur le port 80,
//le port classique des requêtes HTTP utilisées par les navigateurs internet.
WiFiServer server(80);
void setup() {
// Ouverture du port serie en 115200 baud pour envoyer des messages de debug à l'ide par exemple
Serial.begin(115200);
delay(10);
servo.attach(2);
servo.write(10);
// prepare GPIO2 (sortie)
// Connect to WiFi network
Serial.println();
Serial.println();
Serial.print("Connecting to ");
Serial.println(ssid);
WiFi.mode(WIFI_AP);
// On se connecte a reseau WiFi avec le SSID et le mot de passe precedemment configure
WiFi.softAP(ssid, password);
// On sort de la boucle uniquement lorsque la connexion a ete etablie.
// Il faudrait ameliorer cette partie pour un fonctionnement sur batterie car en cas d'abscence du reseau
// on va vider la batterie !
Serial.println("");
Serial.println("WiFi connected");
Serial.printf("Connection status: %d\n", WiFi.status());
// connexion OK, on demarre le server web // Start the server
server.begin();
Serial.println("Server started");
// On indique sur le port serie l'adresse ip de l'ESP pour le trouver facilement / Print the IP address
Serial.println(WiFi.softAPIP());
}
void loop() {
// On fait quelque chose uniquement si un client est connecté,
//c’est à dire qu’on réalise une requête HTTP sur l’ESP8266 depuis un navigateur internet
WiFiClient client = server.available();
if (!client) {
return;
}
Serial.printf("Connection status: %d\n", WiFi.status());
// Lorsqu’un client se connecte, on l’indique sur le port série
Serial.println("new client");
while(!client.available()){
delay(10);
String page = "HTTP/1.1 200 OK\r\nContent-Type: text/html\r\n\r\n<!DOCTYPE HTML>\r\n<html>\r\n";
page +=" <head>";
page +="<title>PAGE TEST</title><style type=\"text/css\">body {background-color: #009c30}</style></head>";
page +="<h1><FONT SIZE=7><CENTER>HERBI</CENTER></FONT> </h1>";
page +="<body><h1><CENTER>RAGONDIN</CENTER></h1> ";
page +="<p><STRONG><FONT SIZE=7>";
page += "<PRE>nourissage: ";
page += "<input type=button style=\"padding:15px 40px; background-color:#eaf4ed; border: groove 2px black; border-radius:10px;\"onmousedown=location.href=\"/gpio/1\">15min ";
page +="<input type=button style=\"padding:15px 40px; background-color:#eaf4ed; border: groove 2px black; border-radius:10px;\"onmousedown=location.href=\"/gpio/0\">30min ";
page +="<input type=button style=\"padding:15px 40px; background-color:#eaf4ed; border: groove 2px black; border-radius:10px;\"onmousedown=location.href='/4;'> 45min ";
page += "
<input type=button style=\"padding:15px 40px; background-color:#eaf4ed; border: groove 2px black; border-radius:10px;\"onmousedown=location.href='/4;'>1h00";
page +="
TEMPS: ";
page +=(TEMPS);
page +=" MIN";
page += " </FONT></STRONG></p> </body></html>";
client.print(page);
}
unsigned long currentMillis = millis(); // stocke la valeur courante de la fonction millis()
if(currentMillis - previousMillis > interval) {
// mémorise la valeur de la fonction millis()
previousMillis = currentMillis;
// inverse la variable d''état de la LED
servo.write(170); //
delay(1000);
servo.write(10);
delay(500);
Serial.println("servo123");
}
interval =TEMPS*60000;
// On récupère la requête HTTP, ici l’URL saisie dans le navigateur tout simplement.
//On envoi sur le port série le contenu de la requête HTTP.
//On vide le tampon avec la méthode flush.
String req = client.readStringUntil('\r');
Serial.println(req);
client.flush();
if (req.indexOf("/gpio/0") != -1)
TEMPS = 1;
else if (req.indexOf("/gpio/1") != -1)
TEMPS = 2;
else {
Serial.println("invalid request");
client.stop();
}
// On met à jour l’état du GPIO et on vide le tampon
client.flush();
//On créé maintenant un page HTML qui contient l’état du GPIO.
//C’est une chaine texte qui contient le code HTML de la page.
//On intercale dans le code de la page, l’état du GPIO
delay(1);
client.stop();
Serial.println("Client disonnected");
// On publie cette page au client avec la commande print, très facile !
// when the function returns and 'client' object is detroyed
}