ça marche !!!!
sur mes tests sur mon bureau tout marche nickel
je vous met mon code arduino (2560 avec shield ethernet classique)
j'ai rien présenté mais si vous avez des questions n'hésitez pas
soit il marche avec des inter relié à la masse
ou avec une adresse du type 192.168.1.10/?2
ou 2 est la commande à exécuter !
bon j'ai pris des trucs à droite à gauche (merci à eux) donc ce n'est pas bien présenté
- Code: Tout sélectionner
#include <Ethernet.h>
#include <SPI.h>
boolean reading = false;
////////////////////////////////////////////////////////////////////////
//CONFIGURE
////////////////////////////////////////////////////////////////////////
//byte ip[] = { 192, 168, 0, 199 }; //Manual setup only
//byte gateway[] = { 192, 168, 0, 1 }; //Manual setup only
//byte subnet[] = { 255, 255, 255, 0 }; //Manual setup only
// if need to change the MAC address (Very Rare)
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
EthernetServer server = EthernetServer(80); //port 80
////////////////////////////////////////////////////////////////////////
//defeinition des pins
//relay
#define lumhaut1 14 // Lumiere haut
#define lumhaut2 15 // Lumiere haut
#define lumhaut3 16 // Lumiere haut
#define pcchevet 17 //Pc chevet
#define sbd 18 //Sbd
#define chlan 19 //Ch lanalou
#define chsyd 20 //Ch syd
#define salon 21 //Salon
//Inter
#define isyd 29 //Ch syd
#define iescb 31//I bas esc
#define isalon1 33 //Salon 1
#define isalon2 35 //Salon 2
#define ilan 37 //Ch lanalou
#define isbd 39 //Sdb
#define ichev1 41 //I chevet 1
#define ichev2 43 //I chevet 2
#define ichev3 45 //I chevet 3
#define iesch1 47 //I esc haut 1,2,3
#define iesch2 49
#define iesch3 51
int valinter[54];
int ancvalinter[54];
int i;
int val = 0; // variable pour mémoriser la valeur lue
int pause = 10;
// Debug mode
#define DEBUG true
void setup() {
if (DEBUG) {
Serial.begin(9600);
Serial.println("initialisation");
}
// les relaies en sortie
pinMode(lumhaut1, OUTPUT); // met la broche utilisée avec la LED en SORTIE
pinMode(lumhaut2, OUTPUT); // met la broche utilisée avec la LED en SORTIE
pinMode(lumhaut3, OUTPUT); // met la broche utilisée avec la LED en SORTIE
pinMode(pcchevet, OUTPUT); // met la broche utilisée avec la LED en SORTIE
pinMode(sbd, OUTPUT); // met la broche utilisée avec la LED en SORTIE
pinMode(chlan, OUTPUT); // met la broche utilisée avec la LED en SORTIE
pinMode(chsyd, OUTPUT); // met la broche utilisée avec la LED en SORTIE
pinMode(salon, OUTPUT); // met la broche utilisée avec la LED en SORTIE
// les inter en entrée
pinMode(isyd, INPUT);
pinMode(iescb, INPUT);
pinMode(isalon1, INPUT);
pinMode(isalon2, INPUT);
pinMode(ilan , INPUT);
pinMode(isbd , INPUT);
pinMode(ichev1, INPUT);
pinMode(ichev2, INPUT);
pinMode(ichev3, INPUT);
pinMode(iesch1, INPUT);
pinMode(iesch2, INPUT);
pinMode(iesch3, INPUT);
digitalWrite(isyd, HIGH); // met les inter en pullup
digitalWrite(iescb, HIGH);
digitalWrite(isalon1, HIGH);
digitalWrite(isalon2, HIGH);
digitalWrite(ilan, HIGH);
digitalWrite(isbd, HIGH);
digitalWrite(ichev1, HIGH);
digitalWrite(ichev3, HIGH);
digitalWrite(ichev2, HIGH);
digitalWrite(iesch1, HIGH);
digitalWrite(iesch2, HIGH);
digitalWrite(iesch3, HIGH);
stock();
for (i = 14; i<=21; i++) {
digitalWrite(i, HIGH);
Serial.println(i);
delay ( 1000) ;
digitalWrite(i, LOW);
}
Ethernet.begin(mac);
//Ethernet.begin(mac, ip, gateway, subnet); //for manual setup
server.begin();
if (DEBUG) {
Serial.println(Ethernet.localIP());
}
} // fin setup
void loop() { // --------------------------------debut loop --------------------------------------------------------
// listen for incoming clients, and process qequest.
checkForClient();
stock();
//si etat d'un interrupteur difféent ca lance un relay
for (i = 29; i <= 51; i=i+2) {
if (ancvalinter[i] != valinter[i]) {
if(DEBUG){
Serial.println( i);
}
switch (i) {
case 29 :
relaiCOM (chsyd) ;
break;
case 31 :
relaiCOM (lumhaut1) ;
relaiCOM (20) ;
break ;
case 33 :
relaiCOM (salon) ;
break;
case 35 :
//relaiCOM (18) ;
break ;
case 37 :
relaiCOM (chlan) ;
break ;
case 39 :
relaiCOM (sbd) ;
break ;
case 41 :
relaiCOM (lumhaut1) ;
break ;
case 43 :
//relaiCOM (15) ;
break ;
case 45 :
relaiCOM (pcchevet) ;
break ;
case 47 :
relaiCOM (lumhaut1) ;
break ;
case 49 :
//relaiCOM (15) ;
break ;
case 51 :
//relaiCOM (14) ;
break ;
} // fin switch
} // fin if
} // fin for
} // fin void loop
void relaiON (int numpin) {
digitalWrite (numpin, HIGH) ;
}
void relaiOFF (int numpin) {
digitalWrite (numpin, LOW) ;
}
void relaiCOM (int numpin) {
val = digitalRead(numpin);
if(DEBUG){
delay(pause);
Serial.println(numpin);
delay(pause);
}
if (val== HIGH) {
digitalWrite (numpin, LOW) ;
} else {
digitalWrite (numpin, HIGH) ;
}
}
int etat (int numpin) {
val = digitalRead(numpin);
delay(pause);
return val ;
}
void stock (){
for (i = 29; i <= 51; i=i+2) {
ancvalinter[i]=valinter[i];
valinter[i]= etat(i);
}}
void checkForClient(){
EthernetClient client = server.available();
if (client) {
// an http request ends with a blank line
boolean currentLineIsBlank = true;
boolean sentHeader = false;
while (client.connected()) {
if (client.available()) {
if(!sentHeader){
// send a standard http response header
client.println("HTTP/1.1 200 OK");
client.println("Content-Type: text/html");
client.println();
sentHeader = true;
}
char c = client.read();
if(reading && c == ' ') reading = false;
if(c == '?') reading = true; //found the ?, begin reading the info
if(reading){
Serial.print(c);
switch (c) {
case '2':
//add code here to trigger on 2
relaiCOM (21) ;
break;
case '3':
//add code here to trigger on 3
relaiCOM (20) ;
break;
case '4':
//add code here to trigger on 4
triggerPin(18, client);
break;
case '5':
//add code here to trigger on 5
triggerPin(5, client);
break;
case '6':
//add code here to trigger on 6
triggerPin(6, client);
break;
case '7':
//add code here to trigger on 7
triggerPin(7, client);
break;
case '8':
//add code here to trigger on 8
triggerPin(8, client);
break;
case '9':
//add code here to trigger on 9
triggerPin(9, client);
break;
}
}
if (c == '\n' && currentLineIsBlank) break;
if (c == '\n') {
currentLineIsBlank = true;
}else if (c != '\r') {
currentLineIsBlank = false;
}
}
}
delay(1); // give the web browser time to receive the data
client.stop(); // close the connection:
}
}
void triggerPin(int pin, EthernetClient client){
//blink a pin - Client needed just for HTML output purposes.
client.print("Turning on pin ");
client.println(pin);
client.print("<br>");
relaiCOM (pin) ;
}