Cooling-Masters
Connexion · INSCRIPTION · Site Recevoir à nouveau l'e-mail de validation


[Arduino] Topic à Questions-Réponses

Ajouter ou retirer ce sujet de vos favoris  ·  Suivre ce sujet  ·  Imprimer ce sujet
Pages :  1  2  3  4  5  6 
OrOoX


AFK ? Késako ? :D
Messages : 9889

jeudi 22 août 2013 à 14:11:33     
La boucle exécute le script tant que la condition n'est pas remplie, donc tant que le tube n'est pas rempli, le script
ne renvoie pas 1, je vois pas pourquoi tu cherche un soucis à ce niveau

EDIT : Ah une petite erreur dans le while ^^
CODE :


// On met fin à la Boucle
       Remplissage_OK == 1;


EDIT 2 : En remplacent Remplissage_OK == 1 par 0 dans la condition du while, ça fonctione, c'est quoi le
bordel de la condition inversée

EDIT 3 : Ah ouais ok, sur PHP dans un While, la condition doit devenir VRAI sauf que sur l'Arduino c'est l'inverse, elle doit être Fausse ... Logique !

Message édité par OrOoX le jeudi 22 août 2013 à 14:28:20
Google




     
perecastor


Modérateur-faker/Portuguais des iles/父 亲河&a
Messages : 15091

jeudi 22 août 2013 à 14:26:48     
dans des balises "code" stp...
OrOoX


AFK ? Késako ? :D
Messages : 9889

jeudi 22 août 2013 à 14:32:36     
Bah Perecastor, corrige la condition du while et le code du message précédent et normalement ça devrait marcher.

Vraiment bizarre ces conditions inversées sur Arduino ...


Edit : Ptetre rajouter un break; après la variable Remplissage_Done = 1; pour être sûr que ça quitte bien à temps

Message édité par OrOoX le jeudi 22 août 2013 à 14:35:04
perecastor


Modérateur-faker/Portuguais des iles/父 亲河&a
Messages : 15091

jeudi 22 août 2013 à 14:49:26     
Actuellement j ai ça :

CODE :

void alarme()
{
digitalWrite(lcdlum, HIGH);           //  allume l eclairage du lcd
lcd.setCursor(0, 1);                  //  place le curseur sur la deuxieme ligne
lcd.print(" a table !!!!");         //  parce qu on est poli aussi avec les chats
delay (500);
tone(6, 960, 200);  
lcd.setCursor(0, 1);      
lcd.print("                 ");       //  efface la deuxieme ligne

// Début du remplissage du tube  
while ( Remplissage_OK == 1)
{
   // On fait tourner le réservoir
   digitalWrite(moteur, HIGH);
   delay(3000);                // 3 secondes par remplissage ( A ajuster )
   
   // Arrêt du moteur pour contrôler le niveau de croquettes
   digitalWrite(moteur, LOW);
   delay(1000);                // Tempo pour laisser les croquettes tomber
   if ( Optique == HIGH )
   {
     // On met fin à la Boucle
     Remplissage_OK == 1;
     
     // Ouverture du tube
     servo.write(90);
     delay(500);              // Tempo pour laisser les croquettes tomber
     
     // Fermeture du tube
     servo.write(178);
     delay(500);             // Tempo pour laisser le temps de se fermer
     
     // A TABLE
     Remplissage_Done = 1;
   }
   
   else {
     // La Boucle continue
     Remplissage_OK == 0;
     Remplissage_Done = 0;
   }
}

// ACTION DE FIN
if ( Remplissage_Done == 1 )
{                                  
 tone(6, 880, 500);                    // genere une frequence de 880 hertz de 500 millis sur le pin 6
 delay(500);                           // attente 500 millis
 tone(6, 440, 500);                    // genere une frequence de 440 hertz de 500 millis sur le pin 6
 delay(500);                           // attente 500 millis
 tone(6, 880, 500);                    // genere une frequence de 880 hertz de 500 millis sur le pin 6
 delay(500);
 digitalWrite(lcdlum, LOW);            //  eteind l eclairage du lcd
}


Les int sont tout au début du programme
OrOoX


AFK ? Késako ? :D
Messages : 9889

jeudi 22 août 2013 à 14:57:18     
Faut que tu remplace :

CODE :


// Début du remplissage du tube  
while ( Remplissage_OK == 1)


par
CODE :


// Début du remplissage du tube  
while ( Remplissage_OK == 0)


Sinon t'auras de nouveau le problème de la boucle non lancée et :

CODE :

// On met fin à la Boucle
    Remplissage_OK == 1;

par
CODE :


// On met fin à la Boucle
    Remplissage_OK = 1;



EDIT : Videow :

http://youtu.be/uZWq4rVSkuQ

Message édité par OrOoX le jeudi 22 août 2013 à 14:58:09
kissagogo27


Méchant Vieux Râleur
Messages : 28148

jeudi 22 août 2013 à 15:12:24     
ben il a tjrs fallut que la condition soit vraie pour qu'une boucle soit exécutée

if condition ok alors then je poursuis else je fais autre chose ou rien
OrOoX


AFK ? Késako ? :D
Messages : 9889

jeudi 22 août 2013 à 15:15:02     
Mouais sauf que sur PHP j'ai toujours fait comme le script que j'ai posté et ça a toujours marché
c'est pour ça que ça m'a étonné cette histoire ...

PHP et Arduino doivent pas avoir la même gestion du while à mon avis.
kissagogo27


Méchant Vieux Râleur
Messages : 28148

jeudi 22 août 2013 à 15:57:35     
http://php.net/manual/fr/control-structures.while.php

pourtant ils disent la mm chose ^^ la condition ^^ tout dépend de la condition pourvu qu'elle soit vraie
OrOoX


AFK ? Késako ? :D
Messages : 9889

jeudi 22 août 2013 à 16:10:46     
Mouais, en attendant on a plus de news de Perecastor, le moulin s'arrête plus et fou des croquettes partout ?
moyen_moins


aka metalazzo | Anti²Bug
Messages : 10216

jeudi 22 août 2013 à 16:12:26     
Tu me diras si ça marche papacastor
OrOoX


AFK ? Késako ? :D
Messages : 9889

jeudi 22 août 2013 à 16:21:06     
Ah, t'as une meilleur version à proposer ?
perecastor


Modérateur-faker/Portuguais des iles/父 亲河&a
Messages : 15091

jeudi 22 août 2013 à 16:22:18     
La j avoue que j ai pas taÿst ^^
Je suis en train de faire des trous et d installer les bouteilles d eau
Je fait ça ce soir vers 19h30

Message édité par perecastor le jeudi 22 août 2013 à 16:22:36
perecastor


Modérateur-faker/Portuguais des iles/父 亲河&a
Messages : 15091

jeudi 22 août 2013 à 16:25:49     
En gros ca donne ca:

CODE :

void alarme()
{
digitalWrite(lcdlum, HIGH);           //  allume l eclairage du lcd
lcd.setCursor(0, 1);                  //  place le curseur sur la deuxieme ligne
lcd.print(" a table !!!!");         //  parce qu on est poli aussi avec les chats
delay (500);
tone(6, 960, 200);  
lcd.setCursor(0, 1);      
lcd.print("                 ");       //  efface la deuxieme ligne

// Début du remplissage du tube  
while ( Remplissage_OK == 0)
{
   // On fait tourner le réservoir
   digitalWrite(moteur, HIGH);
   delay(3000);                // 3 secondes par remplissage ( A ajuster )
   
   // Arrêt du moteur pour contrôler le niveau de croquettes
   digitalWrite(moteur, LOW);
   delay(1000);                // Tempo pour laisser les croquettes tomber
   if ( Optique == HIGH )
   {
     // On met fin à la Boucle
     Remplissage_OK = 1;
     
     // Ouverture du tube
     servo.write(90);
     delay(500);              // Tempo pour laisser les croquettes tomber
     
     // Fermeture du tube
     servo.write(178);
     delay(500);             // Tempo pour laisser le temps de se fermer
     
     // A TABLE
     Remplissage_Done = 1;
   }
   
   else {
     // La Boucle continue
     Remplissage_OK = 0;
     Remplissage_Done = 0;
   }
}

// ACTION DE FIN
if ( Remplissage_Done == 1 )
{                                  
 tone(6, 880, 500);                    // genere une frequence de 880 hertz de 500 millis sur le pin 6
 delay(500);                           // attente 500 millis
 tone(6, 440, 500);                    // genere une frequence de 440 hertz de 500 millis sur le pin 6
 delay(500);                           // attente 500 millis
 tone(6, 880, 500);                    // genere une frequence de 880 hertz de 500 millis sur le pin 6
 delay(500);
 digitalWrite(lcdlum, LOW);            //  eteind l eclairage du lcd
}

}


Is it true?
OrOoX


AFK ? Késako ? :D
Messages : 9889

jeudi 22 août 2013 à 16:39:39     
Pour moi c'est bon si la fonction n'est appelé qu'une fois, sinon ça va boucler le while
et tu auras un raz de marais de croquettes
moyen_moins


aka metalazzo | Anti²Bug
Messages : 10216

jeudi 22 août 2013 à 17:13:45     
ben elle est appelée à heure fixe non ?
OrOoX


AFK ? Késako ? :D
Messages : 9889

jeudi 22 août 2013 à 17:19:43     
Je pense aussi sinon son chat risque de prendre beaucoup de poids à cause de moi
Rosco


Administrateur
Messages : 25926

jeudi 22 août 2013 à 17:23:51     
En tout cas, le chat a déjà bien compris ce qu'était ce bruit bizarre. A LA BOUFFFFFFFFFFEEEEEEEE §§§§§§§§§
OrOoX


AFK ? Késako ? :D
Messages : 9889

jeudi 22 août 2013 à 17:31:11     
Le bruit inimitable des croquettes

Edit : Bientôt ça sera les croquettes à l'eau !

Message édité par OrOoX le jeudi 22 août 2013 à 17:31:29
perecastor


Modérateur-faker/Portuguais des iles/父 亲河&a
Messages : 15091

jeudi 22 août 2013 à 18:50:55     
Alors voila ce que j ai fait cette aprem :

ImageImage

ImageImage

Image

Et voila ce que donne le code de loloox:
http://youtu.be/RnlSdXtshpY

Et ce qui est dans le tube :
http://youtu.be/YyjK-nmOBnk

Message édité par perecastor le jeudi 22 août 2013 à 18:51:18
OrOoX


AFK ? Késako ? :D
Messages : 9889

jeudi 22 août 2013 à 19:10:13     
Roh bah merde, encore un fail sérieux ?

C'est à croire que ça ignore le signal du capteur, si je me base sur la vidéo, ça doit
envoyer le signal HIGH dès que la led rouge s'éteint ?

Envoie le code actuel pour voir ?
Rosco


Administrateur
Messages : 25926

jeudi 22 août 2013 à 19:12:54     
"Nonnnnnnnn, arrêteeeeeeee"
OrOoX


AFK ? Késako ? :D
Messages : 9889

jeudi 22 août 2013 à 19:13:12     
Ouais, je me suis repassé la vidéo juste pour ce moment perso
Zytrahus


:ouch:
Messages : 20040

jeudi 22 août 2013 à 19:20:10     
perecastor


Modérateur-faker/Portuguais des iles/父 亲河&a
Messages : 15091

jeudi 22 août 2013 à 19:20:37     
QUOTE (OrOoX) :

Roh bah merde, encore un fail sérieux ?

C'est à croire que ça ignore le signal du capteur, si je me base sur la vidéo, ça doit
envoyer le signal HIGH dès que la led rouge s'éteint ?

Envoie le code actuel pour voir ?

Oui encore un fail

Tu as tout juste! Sauf que c est pas une led mais un laser
Des qu on ne voit plus le faisceau du laser, le capteur optique est en HIGH.

Pour le code :

CODE :

void alarme()
{
 digitalWrite(lcdlum, HIGH);           //  allume l eclairage du lcd
 lcd.setCursor(0, 1);                  //  place le curseur sur la deuxieme ligne
 lcd.print(" a table !!!!");           //  parce qu on est poli aussi avec les chats
 delay (500);                          // attente de 500 millis
 tone(6, 960, 500);                    // on genre un signal sonre sur le pin 6 de 960 hertz
 lcd.setCursor(0, 1);                  //  place le curseur sur la deuxieme ligne
 lcd.print("                 ");       //  efface la deuxieme ligne

 // Début du remplissage du tube  
 while ( Remplissage_OK == 0)
 {
   // On fait tourner le réservoir
   digitalWrite(moteur, HIGH);
   delay(3000);                // 3 secondes par remplissage ( A ajuster )

   // Arrêt du moteur pour contrôler le niveau de croquettes
   digitalWrite(moteur, LOW);
   delay(1000);                // Tempo pour laisser les croquettes tomber
   if ( Optique == HIGH )
   {
     // On met fin à la Boucle
     Remplissage_OK = 1;

     // Ouverture du tube
     servo.write(90);
     delay(500);              // Tempo pour laisser les croquettes tomber

     // Fermeture du tube
     servo.write(178);
     delay(500);             // Tempo pour laisser le temps de se fermer

     // A TABLE
     Remplissage_Done = 1;
   }

   else {
     // La Boucle continue
     Remplissage_OK = 0;
     Remplissage_Done = 0;
     lcd.setCursor(0, 1);                  //  place le curseur sur la deuxieme ligne
     lcd.print(" encore un tour! ");         //  parce qu on est poli aussi avec les chats
   }
 }

 // ACTION DE FIN
 if ( Remplissage_Done == 1 )
 {                                  
   tone(6, 880, 500);                    // genere une frequence de 880 hertz de 500 millis sur le pin 6
   delay(500);                           // attente 500 millis
   tone(6, 440, 500);                    // genere une frequence de 440 hertz de 500 millis sur le pin 6
   delay(500);                           // attente 500 millis
   tone(6, 880, 500);                    // genere une frequence de 880 hertz de 500 millis sur le pin 6
   delay(500);
   lcd.setCursor(0, 1);                  //  place le curseur sur la deuxieme ligne
   lcd.print("  bon appetit!");         //  parce qu on est poli aussi avec les chats
   delay (500);
   lcd.setCursor(0, 1);      
   lcd.print("                 ");       //  efface la deuxieme ligne
   digitalWrite(lcdlum, LOW);            //  eteind l eclairage du lcd
 }


Message édité par perecastor le jeudi 22 août 2013 à 19:22:20
OrOoX


AFK ? Késako ? :D
Messages : 9889

jeudi 22 août 2013 à 19:32:57     
Remplace :

CODE :

if ( Optique == HIGH )
  {
    // On met fin à la Boucle
    Remplissage_OK = 1;

    // Ouverture du tube
    servo.write(90);
    delay(500);              // Tempo pour laisser les croquettes tomber

    // Fermeture du tube
    servo.write(178);
    delay(500);             // Tempo pour laisser le temps de se fermer

    // A TABLE
    Remplissage_Done = 1;
  }


Par :


CODE :


if ( Optique == HIGH )
  {
    lcd.setCursor(0, 1);
    lcd.print("                ");
    lcd.print("Tube plein ! ");
    delay(2000);

    // Ouverture du tube
    servo.write(90);
    delay(500);              // Tempo pour laisser les croquettes tomber

    // Fermeture du tube
    servo.write(178);
    delay(500);             // Tempo pour laisser le temps de se fermer

     // On met fin à la Boucle
    Remplissage_OK = 1;
    Remplissage_Done = 1;
  }


Et regarde si le message "Tube Plein !" s'affiche, si c'est pas le cas va falloir contrôler ton input.
Google




     
Pages :  1  2  3  4  5  6