#include #include #include #include #define WindSensorPin (2) volatile unsigned long Rotations; volatile unsigned long ContactBounceTime; float WindSpeed; byte mac[] = { 0x90, 0xA2, 0xDA, 0x0E, 0xD4, 0x22 };// @dresse MAC de votre Arduino Ethernet byte ip[] = {10,66,240,59}; //char server[] = "spe.sin.apo.free.fr"; // nom du site char server[] = "10.66.240.81"; // @PC en local quand on utilise WAMPSERVEUR String readString; Servo monServomoteur; boolean drapeau= false; int D; int LE; int LI; int S; int AM; char c; int pin = 9; unsigned long duration; int position = 0 ; float T = 0; int F = 1/T; int Led = 7; int bLed = 3; int gLed = 4; int rLed = 6; int ST; EthernetClient client; void setup() { pinMode(pin, INPUT); pinMode(bLed, OUTPUT); pinMode(gLed, OUTPUT); pinMode(rLed, OUTPUT); pinMode(Led, OUTPUT); monServomoteur.attach(8); Serial.begin(9600);// mise en marche liaison série //Ethernet.begin(mac, ip); if (Ethernet.begin(mac) == 0) { Serial.println("Failed to configure Ethernet using DHCP"); // no point in carrying on, so do nothing forevermore: for(;;);} delay(2000); Serial.println("connecting..."); } void loop(){ //Luxmetre delay(500); duration = pulseIn(pin, HIGH); T = 2*duration; Serial.print("Luminosite (lux): "); F = 1000000*1/T; Serial.println(F, DEC); //Anemometre Rotations = 0; sei(); delay (3000); cli(); WindSpeed = (Rotations * 0.75) * 1.609344; Serial.print(Rotations); Serial.print("\t\t"); Serial.println(WindSpeed); envoieBDD(); LectureBDD(); Traitement(); } void isr_rotation () { if ((millis() - ContactBounceTime) > 15 ) { // debounce the switch contact. Rotations++; ContactBounceTime = millis(); } } void envoieBDD() { if (client.connect(server, 80)) { Serial.println("connected"); client.print("GET /SLEGPI/ecriture.php?lux="); client.print(F); client.println(" HTTP/1.1"); client.println("Host: 10.66.240.81"); Serial.println(F); Serial.println( "Connection: close" ); client.println(); client.stop(); client.println(); } else { Serial.println("connection failed"); } if (client.connect(server, 80)) { Serial.println("connected"); client.print("GET /SLEGPI/ecriture.php?vent="); client.print(WindSpeed); client.println(" HTTP/1.1"); client.println("Host: 10.66.240.81"); //Serial.println(F); Serial.println( "Connection: close" ); client.println(); client.stop(); client.println(); } else { Serial.println("connection failed"); } } void LectureBDD() { EthernetServer server(80); server.available(); EthernetClient client = server.available(); if (client) { Serial.println("attente serveur"); while (client.connected()) { client.println("z"); //pour la connexion while (client.available()) // Not if - you want to read all the data { char c = client.read();//lecture caractère par caractère //on concatène les caractères et on ne sélectionne qu'un string total de longueur < 40 if (readString.length()<40 ) readString.concat(c); // détection de fin de ligne if (c == '\n' ) { Serial.println (readString);//écriture des 40 caractères dans le terminal série // index des recherches des mots "ON" et "OUV" dans la chaine readString // si absent alors =-1 LI = readString.indexOf('Y'); LE = readString.indexOf('Z'); S = readString.indexOf('OUV'); AM = readString.indexOf('WW'); readString="";//initialisation de la variable chaîne readString client.stop();//deconnection de l'arduino Serial.println(); } } } } } void Traitement() { if(AM >0){ Serial.println("Mode automatique"); if(F <1000){ digitalWrite(bLed, HIGH); digitalWrite(gLed, HIGH); digitalWrite(rLed, HIGH); digitalWrite(Led, LOW); if (drapeau==true) { drapeau=false; position=0; monServomoteur.write(position); delay(15); } D=1; ST=0; //allumer if (client.connect(server, 80)) { Serial.println("connected"); Serial.println("toto"); client.print("GET /SLEGPI/ecriture.php?eInt="); client.print(D); Serial.println(D); client.println(" HTTP/1.1"); client.println("Host: 10.66.240.81"); Serial.println(F); Serial.println( "Connection: close" ); client.println(); client.stop(); client.println(); } else { Serial.println("connection failed"); } if (client.connect(server, 80)) { Serial.println("connected"); client.print("GET /SLEGPI/ecriture.php?eExt="); client.print(D); client.println(" HTTP/1.1"); client.println("Host: 10.66.240.81"); Serial.println(1); Serial.println( "Connection: close" ); client.println(); client.stop(); client.println(); } if (client.connect(server, 80)) { Serial.println("connected"); client.print("GET /SLEGPI/ecriture.php?Store="); client.print(ST); client.println(" HTTP/1.1"); client.println("Host: 10.66.240.81"); Serial.println(1); Serial.println( "Connection: close" ); client.println(); client.stop(); client.println(); } } if(F >1000){ digitalWrite(bLed, LOW); digitalWrite(gLed, LOW); digitalWrite(rLed, LOW); digitalWrite(Led, HIGH); if (drapeau==false) { drapeau=true; for (int position = 0; position <= 180; position++) { monServomoteur.write(position); delay(15); } } D=0; ST=1; //et if (client.connect(server, 80)) { Serial.println("connected"); Serial.println("toto"); client.print("GET /SLEGPI/ecriture.php?eInt="); client.print(D); Serial.println(D); client.println(" HTTP/1.1"); client.println("Host: 10.66.240.81"); Serial.println(F); Serial.println( "Connection: close" ); client.println(); client.stop(); client.println(); } else { Serial.println("connection failed"); } if (client.connect(server, 80)) { Serial.println("connected"); client.print("GET /SLEGPI/ecriture.php?eExt="); client.print(D); client.println(" HTTP/1.1"); client.println("Host: 10.66.240.81"); Serial.println(1); Serial.println( "Connection: close" ); client.println(); client.stop(); client.println(); } if (client.connect(server, 80)) { Serial.println("connected"); Serial.println("toto"); client.print("GET /SLEGPI/ecriture.php?Store="); client.print(ST); Serial.println(D); client.println(" HTTP/1.1"); client.println("Host: 10.66.240.81"); Serial.println(F); Serial.println( "Connection: close" ); client.println(); client.stop(); client.println(); } } } //Allumer les lumieres exterieurs else{ Serial.println("Mode manuel"); //Eteindre les lumieres exterieurs if(LI >0){ digitalWrite(Led, LOW); }//Allumer les lumieres exterieurs else{ digitalWrite(Led, HIGH); }//Eteindre les lumieres exterieurs if(LE >0){ digitalWrite(bLed, HIGH); digitalWrite(gLed, HIGH); digitalWrite(rLed, HIGH); }//Allumer les lumieres exterieurs else{ digitalWrite(bLed, LOW); digitalWrite(gLed, LOW); digitalWrite(rLed, LOW); }//Eteindre les lumieres exterieurs if(S >0){ if (drapeau==false) { drapeau=true; for (int position = 0; position <= 180; position++) { monServomoteur.write(position); delay(15); } } } //Monter le Store else{ if (drapeau==true) { drapeau=false; position=0; monServomoteur.write(position); delay(15); } } }//Baisser le Store }