Pages: 1 2 [3]   Go Down
Author Topic: realisation porte automatique  (Read 5559 times)
0 Members and 1 Guest are viewing this topic.
france
Offline Offline
Full Member
***
Karma: 0
Posts: 178
Everybody can do that !
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

merci pour cette (longue) réponse  .
j'ai encore du mal avec tout sa .
en faite il suffirait de pouvoir modifier une variable de l'arduino grâce a mon portable en 3g mais comment ? :
envoyer un ordre directement du portable vers l'arduino ou du portable a un serveur qui lui envoi a son tour l'ordre vers l'arduino ?

help

sinon dans la deuxième partie de mon programme l'arduino doit pouvoir envoyer un email ?

j’essaie de trouver des exemples tout prêt pour pouvoir l'adapter par la suite mais je trouve pas vraiment :-/
?
 avez vous un exemple pour moi ?
Logged

france
Offline Offline
Full Member
***
Karma: 0
Posts: 178
Everybody can do that !
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Alors je penche plutôt vers cette solution :
Quote
arduino (serveur) <-> client php|serveur php<-> navigateur (client)
(+) idem solution 1, tout en limitant le traffic entre arduino et client php
(-) mise en place.

en gros mon arduino doit être capable de recevoir juste 2 ordre (allumer le pc ou ouvrir la porte et allumer les lumières) et d'envoyer un mail en cas d'erreur.
j'aurais vraiment besoin d'aide . au moin un exemple coté arduino et coté serveur php, comme sa aprés je pourrais continuer mon programme tranquillement

merci d'avance
Logged

Forum Moderator
Geneva
Offline Offline
Faraday Member
*****
Karma: 30
Posts: 3231
Yoplait... le pt'it suisse
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Voici un sujet qui traite de ça (15 pages  smiley-lol) :

http://arduino.cc/forum/index.php/topic,60035.0.html
Logged

MacBook intel core 2 duo  os X snow Leopard 10.6<br/> eMac PPc G4  os X Leopard 10.5<br/>powerbook G4 os X Leopard 10.5
imac PPC G3 os X Pa

france
Offline Offline
Full Member
***
Karma: 0
Posts: 178
Everybody can do that !
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

A propos dans mon programme il y a une partie qui est sensé écrire une variable sois quand l’état d'un bouton a changer ou sois au bout de 10 secondes :


Quote
if (bp_escalier_Etat == LOW){
    Serial.println("allumage lumiere");
    digitalWrite (relay_light,LOW);
    Serial.println("attente 5 secondes");
    delay (5000);
    Serial.println("ouverture verrou");
    digitalWrite (relay_open,LOW);
    delay (800);
    digitalWrite (relay_open,HIGH);

(attendre 10 secondes ou (mémé si les 10 secondes n'ont pas été écouler) si le bouton c'est déclencher et réenclencher)


partie_programme = 3 // variable a exécuter


merci d'avance et bonne soirée =)
Logged

france
Offline Offline
Full Member
***
Karma: 0
Posts: 178
Everybody can do that !
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

j'ai une petite idée mais j'aurais besoin d'aide pour intégrer sa: http://arduino.cc/en/Tutorial/ButtonStateChange
dans sa:
Quote
  if (bp_escalier_Etat == LOW){
    Serial.println("allumage lumiere");
    digitalWrite (relay_light,LOW);
    Serial.println("attente 5 secondes");
    delay (5000);
    Serial.println("ouverture verrou");
    digitalWrite (relay_open,LOW);
    delay (800);
    digitalWrite (relay_open,HIGH);
    do {
      delay (5000);
      partie_programme = 2;
    }
    while


(si le bouton est passer de high a low et de nouveau a high)








      digitalWrite (relay_light,HIGH);
      partie_programme = 2;
    }
Logged

france
Offline Offline
Full Member
***
Karma: 0
Posts: 178
Everybody can do that !
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Quote
else if (partie_programme == 1) {
  bp_porte_Etat = digitalRead (bp_porte);
  bp_escalier_Etat = digitalRead (bp_escalier);
 
   if (bp_escalier_Etat == LOW){
     
  fdc_porte_Etat = digitalRead (fdc_porte);
 
     if (compteur_bouton == 0){
      Serial.println("allumage lumiere");
      digitalWrite (relay_light,LOW);
      Serial.println("attente 5 secondes");
      delay (5000);
      Serial.println("ouverture verrou");
      digitalWrite (relay_open,LOW);
      delay (800);
      digitalWrite (relay_open,HIGH);
      compteur_bouton = 1;     
    }
    else if (compteur_bouton == 1){
      if (bp_escalier_Etat == HIGH) {
      compteur_bouton++;}
    }
   
     dernier_Etat_bouton = bp_escalier_Etat;
     
   if (compteur_bouton % 2 == 0) { 
     delay (5000);
      partie_programme = 2;
    }
    while (compteur_bouton == 0){
    digitalWrite (relay_light,HIGH);
      partie_programme = 2;
    }
   
j'essaie d'avancer mais je ne trouve vraiment pas
le problème que j'ai c'est qu'il faudrait qu'au bout de tant et tant de secondes le programme interrompt  l'action en cour mais si j'ai bien compris un delay met une pause dans le programme ?
Logged

france
Offline Offline
Full Member
***
Karma: 0
Posts: 178
Everybody can do that !
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

en faite mon bute est de faire une action pendant 20 secondes et en faire une autre au bout de ces 20 secondes
Logged

Forum Moderator
Geneva
Offline Offline
Faraday Member
*****
Karma: 30
Posts: 3231
Yoplait... le pt'it suisse
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset



fait un mix entre ces deux pages :

http://arduino.cc/en/Reference/Millis

http://www.siteduzero.com/tutoriel-3-14136-maitrisez-le-temps.html
Logged

MacBook intel core 2 duo  os X snow Leopard 10.6<br/> eMac PPc G4  os X Leopard 10.5<br/>powerbook G4 os X Leopard 10.5
imac PPC G3 os X Pa

Pays de la betise
Offline Offline
Sr. Member
****
Karma: 4
Posts: 419
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Bonsoir,

ici, un exemple de gestion du temps qui collerait bien à ce que tu souhaites faire.
Il n'y a qu'à ajouter des compteurs que tu écrémenteras à chaque "pulse", comparer la valeur du compteur par rapport au temps que tu souhaites à chaque cycle, et faire l'action le cas échéant. Ça évite de neutraliser le code avec des delay()

Gromain
Logged

"pour résoudre un gros problème, il est souvent plus facile de le diviser en petits problèmes élémentaires..."

projet domotique xPLDuino
IRC: freenode #xplduino

france
Offline Offline
Full Member
***
Karma: 0
Posts: 178
Everybody can do that !
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

bonsoir
j'ai du mal a comprendre j'ai essayer de faire un mix entre 2 exemples et sa donne sa :
Quote
else if (partie_programme == 1) {
  bp_porte_Etat = digitalRead (bp_porte);
  bp_escalier_Etat = digitalRead (bp_escalier);
 
   if (bp_escalier_Etat == LOW){
     fdc_porte_Etat = digitalRead (fdc_porte);
     
     
     unsigned long currentMillis = millis();
     if(currentMillis - previousMillis > interval) {
     previousMillis = currentMillis;
     }
     
     
     if (saut_partie_0 == 0){
     Serial.println("allumage lumiere");
     digitalWrite (relay_light,LOW);
     Serial.println("attente 5 secondes");
     delay (5000);
     Serial.println("ouverture verrou");
     digitalWrite (relay_open,LOW);
     delay (800);
     digitalWrite (relay_open,HIGH);
     saut_partie_0 = 1;     
     }
     if (bp_escalier_Etat != dernier_Etat_bouton) {
      if (bp_escalier_Etat == LOW) {
      compteur_bouton++;
    }
    else {
      // if the current state is LOW then the button
      // wend from on to off:
      Serial.println("off");
    }
   
     dernier_Etat_bouton = bp_escalier_Etat;
     if (currentMillis != interval){
     
      if (compteur_bouton % 2 == 0) { 
     delay (5000);
     digitalWrite (relay_light,HIGH);
      partie_programme = 2;
    }
    else if (currentMillis == interval){
    digitalWrite (relay_light,HIGH);
      partie_programme = 2;
    }
   }
  }

     }
    }
 else if (partie_programme == 2) {
   Serial.println("partie fermeture");
   
   
 }
mais malheureusement cela ne fonctionne pas
Logged

france
Offline Offline
Full Member
***
Karma: 0
Posts: 178
Everybody can do that !
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

merci pour ton aide précieuse gromain (dsl pour ma réponse tardive mais je n'est pas l'occasion de prendre le temps pour la programmation tout les jours)

alors le code ci dessous fonctionne a merveille
Quote
   if (bp_escalier_Etat == LOW){
     Serial.println("bp enfoncer");
     label_1:
     Serial.print("compteur_1:  ");
     Serial.println(compteur_1, DEC);

  if (compteur_1 != 20) {
     Serial.println("1");
   
    pulse_1000=0;
     Serial.println("pulse0");
   
    if ((millis() - prevMillis1000) >= 1000 || (millis() - prevMillis1000) < 0){
      prevMillis1000 = millis();
      pulse_1000=1;
      Serial.println("pulse 1");
    }
    if (pulse_1000 == 1) {
      compteur_1++;
    }
   
 
 
 
 
 
 
   
    goto label_1;

  }
  else if (compteur_1 == 20) {
    partie_programme = 2;
  }
}

Maintenant mon problème est de pouvoir aller sur la partie_programme 2  en fonction de l'ouverture de la porte .
pour cela j'ai rajouter un microrupteur dans mon montage .
En faite il faudrait que le programme modifie une valeur quand le microrupteur est passer de l’état HIGH à l’état LOW puis de nouveau a l’état HIGH.
j'ai vu ceci http://www.mon-club-elec.fr/pmwiki_reference_arduino/pmwiki.php?n=Main.ExempleButtonStateChange mais je ne suis pas sur que cette exemple est le plus adapter pour mon usage .
pourriez vous m’éclairer svp .
merci d'avance

Jean
Logged

Pages: 1 2 [3]   Go Up
Jump to: