Besoin d'aide sur codage Arduino

Besoin d'aide sur codage Arduino - C++ - Programmation

Marsh Posté le 25-01-2014 à 23:22:39    

Salut a tous !
 
J'ai un petit soucis de codage (je découvre le C++ avec ce projet) et j'aurai besoin de votre éclaircissement !
 
Voilà mon projet est de faire une "bombe factice" pour l'airsoft que je pratique ! Le but étant juste d'avoir une malette comprenant un buzzer avec timer/code et de créer un décompte afin que l'équipe adverse vienne "désamorcée" la "bombe" (pas d'explosion etc c'est du factice ;) )
 
J'ai donc un Arduino One, écran LCD 16x2, un buzzer, des LEDS et un clavier matriciel (1,2,3,4,5,6,7,8,9,*,0,#). J'ai récupéré des bouts de code de part et d'autre du net en les modifiants a ma sauce. Cependant je bloque fortement sur un point, le réglage du timer de la "bombe".  
 
Dans un premier temps seul le code d' "armement" était configurable via le clavier matriciel, il fonctionne très bien. Je réglait les valeurs Scount, Mcount et Hcount dans les int et le timer fonctionnait parfaitement. Mais voila que je me lance dans l'idée de configurer ce dernier avant la saisie du code. Mais la impossible de définir quoi que ce soit !  
 
Exemple : Je défini HH:MM:SS comme suivant : 14:52:36 (un pur exemple) cela me donne en affichage sur l'écran : e: g: i (14 = 1+4 = 5 = 5ème lettre de l'alphabet = e) ... je ne sais plus par ou passer !  
 
je pense que ce qui bloque c'est la déclaration que je fait de la ligne 245 a 247 !
 
 Un coup de main serait de grande aide ! Merci a vous d'avance !  
 
Voici mon code :
 

Code :
  1. /////////////////////////////
  2. //      Airsoft Bomb       //
  3. /////////////////////////////
  4. #include "LiquidCrystal.h"
  5. #include "Keypad.h"
  6. #include "Tone.h"
  7. #define pound 14
  8. Tone tone1;
  9. int Scount = 0; // count seconds
  10. int Mcount = 0; // count minutes
  11. int Hcount = 0; // count hours
  12. int DefuseTimer = 0; // set timer to 0
  13. long secMillis = 0; // store last time for second add
  14. long interval = 1000; // interval for seconds
  15. char password[4]; // number of characters in our password
  16. int currentLength = 0; //defines which number we are currently writing
  17. int i = 0;
  18. int j = 0;
  19. char entered[4];
  20. int ledPin = 4; //red led
  21. int ledPin2 = 3; //yellow led
  22. int ledPin3 = 2; //green led
  23. char Hcountset[2];
  24. char Mcountset[2];
  25. char Scountset[2];
  26. char Countval[3];
  27. LiquidCrystal lcd(7,8,10,11,12,13); // the pins we use on the LCD
  28. const byte ROWS = 4; //four rows
  29. const byte COLS = 3; //three columns
  30. char keys[ROWS][COLS] = {
  31.   {'1','2','3'},
  32.   {'4','5','6'},
  33.   {'7','8','9'},
  34.   {'*','0','#'}
  35. };
  36. byte rowPins[ROWS] = {A2, A3, A4, A5}; //connect to the row pinouts of the keypad
  37. byte colPins[COLS] = {A0, 5, A1}; //connect to the column pinouts of the keypad
  38. Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );
  39. void setup(){
  40.   pinMode(ledPin, OUTPUT); // sets the digital pin as output
  41.   pinMode(ledPin2, OUTPUT); // sets the digital pin as output
  42.   pinMode(ledPin3, OUTPUT); // sets the digital pin as output
  43.   lcd.begin(16, 2);
  44.   Serial.begin(9600);
  45.   lcd.clear();
  46.   lcd.setCursor(0,0);
  47.   lcd.print("Definir temps : " );
  48.   lcd.setCursor(4,1);
  49.   lcd.print("HH:MM:SS" );
  50.   while (Hcount < 2)
  51.   {
  52.     lcd.setCursor(Hcount + 4, 1);
  53.     lcd.cursor();
  54.     char key = keypad.getKey();
  55.     key == NO_KEY;
  56.     if (key != NO_KEY)
  57.     {
  58.       if ((key != '*')&&(key != '#'))
  59.       {
  60.       lcd.print(key);
  61.       Hcountset[Hcount] = key;
  62.       Hcount++;
  63.       }
  64.     }
  65.   }
  66.     while (Mcount < 2)
  67.   {
  68.     lcd.setCursor(Mcount + 7, 1);
  69.     lcd.cursor();
  70.     char key = keypad.getKey();
  71.     key == NO_KEY;
  72.     if (key != NO_KEY)
  73.     {
  74.       if ((key != '*')&&(key != '#'))
  75.       {
  76.       lcd.print(key);
  77.       Mcountset[Mcount] = key;
  78.       Mcount++;
  79.       }
  80.     }
  81.   }
  82.   while (Scount < 2)
  83.   {
  84.     lcd.setCursor(Scount + 10, 1);
  85.     lcd.cursor();
  86.     char key = keypad.getKey();
  87.     key == NO_KEY;
  88.     if (key != NO_KEY)
  89.     {
  90.       if ((key != '*')&&(key != '#'))
  91.       {
  92.       lcd.print(key);
  93.       Scountset[Scount] = key;
  94.       Scount++;
  95.       }
  96.     }
  97.   }
  98.   delay(1000);
  99.  
  100.   lcd.clear();
  101.   lcd.setCursor(0,0);
  102.   lcd.print("Choisir Code : " );
  103.   while (currentLength < 4)
  104.   {
  105.     lcd.setCursor(currentLength + 6, 1);
  106.     lcd.cursor();
  107.     char key = keypad.getKey();
  108.     key == NO_KEY;
  109.     if (key != NO_KEY)
  110.     {
  111.       if ((key != '*')&&(key != '#'))
  112.       {
  113.       lcd.print(key);
  114.       password[currentLength] = key;
  115.       currentLength++;
  116.       tone1.play(NOTE_C6, 200);
  117.       }
  118.     }
  119.   }
  120.  
  121.  
  122.   if (currentLength == 4)
  123.   {
  124.     delay(500);
  125.     lcd.noCursor();
  126.     lcd.clear();
  127.     lcd.home();
  128.     lcd.print("You've Entered: " );
  129.     lcd.setCursor(6,1);
  130.     lcd.print(password[0]);
  131.     lcd.print(password[1]);
  132.     lcd.print(password[2]);
  133.     lcd.print(password[3]);
  134.     tone1.play(NOTE_E6, 200);
  135.     delay(3000);
  136.     lcd.clear();
  137.     currentLength = 0;
  138.   }
  139.   }
  140. void loop()
  141. {
  142.   timer();
  143.   char key2 = keypad.getKey(); // get the key
  144.  
  145.   if (key2 == '*')
  146.     {
  147.      
  148.       lcd.clear();
  149.       lcd.setCursor(0,0);
  150.       lcd.print("Code : " );
  151.      
  152.       while (currentLength < 4)
  153.         {
  154.          
  155.           timer();
  156.          
  157.           char key2 = keypad.getKey();
  158.           if (key2 == '#')
  159.             {
  160.               currentLength = 0;
  161.               lcd.clear();
  162.               lcd.setCursor(0,0);
  163.               lcd.print("Code: " );
  164.             }
  165.           else                 
  166.           if (key2 != NO_KEY)   
  167.             {
  168.              
  169.               lcd.setCursor(currentLength + 7, 0);
  170.               lcd.cursor();
  171.              
  172.               lcd.print(key2);
  173.               entered[currentLength] = key2;
  174.               currentLength++;
  175.               tone1.play(NOTE_C6, 200);
  176.               delay(100);
  177.               lcd.noCursor();
  178.               lcd.setCursor(currentLength + 6, 0);
  179.               lcd.print("*" );
  180.               lcd.setCursor(currentLength + 7, 0);
  181.               lcd.cursor();
  182.             }
  183.         }
  184.       if (currentLength == 4)
  185.         {
  186.           if (entered[0] == password[0] && entered[1] == password[1] && entered[2] == password[2] && entered[3] == password[3])
  187.             {
  188.               lcd.noCursor();
  189.               lcd.clear();
  190.               lcd.home();
  191.               lcd.print("Bomb Defused" );
  192.               currentLength = 0;
  193.               digitalWrite(ledPin3, HIGH);
  194.               delay(2500);
  195.               lcd.setCursor(0,1);
  196.               lcd.print("Reset the Bomb" );
  197.               delay(1000000);
  198.             }
  199.       else
  200.         {
  201.           lcd.noCursor();
  202.           lcd.clear();
  203.           lcd.home();
  204.           lcd.print("Wrong Password!" );
  205.    
  206.           if (Countval[0] > 0)
  207.             {
  208.               Countval[0] = Countval[0] - 1;
  209.             }
  210.    
  211.           if (Countval[1] > 0)
  212.             {
  213.               Countval[1] = Countval[1] - 59;
  214.             }
  215.           if (Countval[2] > 0)
  216.             {
  217.               Countval[2] = Countval[2] - 59;
  218.             }
  219.         delay(1500);
  220.         currentLength = 0;
  221.  
  222.         }
  223.       } 
  224.     }
  225. }
  226. void timer()
  227. {
  228.   Countval[0] = Hcountset[0] + Hcountset[1];
  229.   Countval[1] = Mcountset[0] + Mcountset[1];
  230.   Countval[2] = Scountset[0] + Scountset[1];
  231.   Serial.print(Countval[2]);
  232.   Serial.println();
  233.   if (Countval[0] <= 0)
  234.   {
  235.     if ( Countval[1] < 0 )
  236.     {
  237.       lcd.noCursor();
  238.       lcd.clear();
  239.       lcd.home();
  240.       lcd.print("The Bomb Has " );
  241.       lcd.setCursor (0,1);
  242.       lcd.print("Exploded!" );
  243.      
  244.       while (Countval[1] < 0)
  245.       {
  246.         digitalWrite(ledPin, HIGH); // sets the LED on
  247.         tone1.play(NOTE_A2, 90);
  248.         delay(100);
  249.         digitalWrite(ledPin, LOW); // sets the LED off
  250.         tone1.play(NOTE_A2, 90);
  251.         delay(100);
  252.         digitalWrite(ledPin2, HIGH); // sets the LED on
  253.         tone1.play(NOTE_A2, 90);
  254.         delay(100);
  255.         digitalWrite(ledPin2, LOW); // sets the LED off
  256.         tone1.play(NOTE_A2, 90);
  257.         delay(100);
  258.         digitalWrite(ledPin3, HIGH); // sets the LED on
  259.         tone1.play(NOTE_A2, 90);
  260.         delay(100);
  261.         digitalWrite(ledPin3, LOW); // sets the LED off
  262.         tone1.play(NOTE_A2, 90);
  263.         delay(100);
  264.       }
  265.     }
  266.   }
  267.   lcd.setCursor (0,1); // sets cursor to 2nd line
  268.   lcd.print ("Timer:" );
  269.   if (Countval[0] >= 10)
  270.     {
  271.       lcd.setCursor (7,1);
  272.       lcd.print (Countval[0]);
  273.     }
  274.   if (Countval[0] < 10)
  275.     {
  276.       lcd.setCursor (7,1);
  277.       lcd.write ("0" );
  278.       lcd.setCursor (8,1);
  279.       lcd.print (Countval[0]);
  280.     }
  281.   lcd.print (":" );
  282.   if (Countval[1] >= 10)
  283.     {
  284.       lcd.setCursor (10,1);
  285.       lcd.print (Countval[1]);
  286.     }
  287.   if (Countval[1] < 10)
  288.     {
  289.       lcd.setCursor (10,1);
  290.       lcd.write ("0" );
  291.       lcd.setCursor (11,1);
  292.       lcd.print (Countval[1]);
  293.     }
  294.    
  295.   lcd.print (":" );
  296.   if (Countval[2] >= 10)
  297.     {
  298.       lcd.setCursor (13,1);
  299.       lcd.print (Countval[2]);
  300.     }
  301.   if (Countval[2] < 10)
  302.     {
  303.       lcd.setCursor (13,1);
  304.       lcd.write ("0" );
  305.       lcd.setCursor (14,1);
  306.       lcd.print (Countval[2]);
  307.     }
  308.   if (Countval[0] <0)
  309.     {
  310.       Countval[0] = 0;
  311.     }
  312.   if (Countval[1] <0)
  313.     {
  314.       Countval[0] --;
  315.       Countval[1] = 59;
  316.     }
  317.   if (Countval[2] <1) // if 60 do this operation
  318.     {
  319.       Countval[1] --; // add 1 to Mcount
  320.       Countval[2] = 59; // reset Scount
  321.     }
  322.   if (Countval[2] > 0) // do this oper. 59 times
  323.     {
  324.       unsigned long currentMillis = millis();
  325.  
  326.       if(currentMillis - secMillis > interval)
  327.         {
  328.           tone1.play(NOTE_G5, 150);
  329.           secMillis = currentMillis;
  330.           Countval[2] --; // add 1 to Scount
  331.           digitalWrite(ledPin, HIGH); // sets the LED on
  332.           digitalWrite(ledPin2, HIGH); // sets the LED on
  333.           delay(100); // waits for a second
  334.           digitalWrite(ledPin, LOW); // sets the LED off
  335.           digitalWrite(ledPin2, LOW); // sets the LED off
  336.           delay(100); // waits for a second
  337.           //lcd.clear();
  338.         }
  339.     }
  340. }


Message édité par asphyth le 25-01-2014 à 23:26:41

---------------
-> Mon Feed Back <- -> Mes Ventes <-
Reply

Marsh Posté le 25-01-2014 à 23:22:39   

Reply

Marsh Posté le 26-01-2014 à 09:50:33    

[:spaydar] je reviens plus tard.

Reply

Marsh Posté le 26-01-2014 à 11:32:26    

Facile !  :)  
 
Le premier problème se situe lors de la déclaration du tableau Countval[] à la ligne 34.
Il faut le définir comme un tableau d'entier, et non pas comme un tableau de caractères, car plus tard la fonction lcd.print que vous utilisez aux lignes 291, 298, 301, 306, 313, 316, 321 et 328, produit un affichage différent selon le type de données que vous lui fournissez en paramètre.

Citation :

char int Countval[3];


 
Le deuxième problème se situe au niveau de la récupération du timer aux lignes 245 à 247, comme vous l'aviez soupçonné.
Il manque une multiplication par 10 du premier chiffre.

Citation :

Countval[0] = Hcountset[0] * 10  + Hcountset[1];
Countval[0] = Mcountset[0] * 10  + Mcountset[1];
Countval[1] = Scountset[0] * 10 + Scountset[1];


 
Un troisième problème est qu'il manque aussi la conversion entre un caractère et un entier, toujours au niveau de la récupération du timer, aux lignes 245 à 247.

Citation :

Countval[0] = (int(Hcountset[0]) - int('0')) *10 + (int(Hcountset[1]) - int('0'));
Countval[1] = (int(Mcountset[0]) - int('0')) *10 + (int(Mcountset[1]) - int('0'));
Countval[2] = (int(Scountset[0]) - int('0')) *10 + (int(Scountset[1]) - int('0'));


(Je n'ai pas mis en bleu ma correction, excusez-moi, je suis fatigué :sleep: )

Reply

Marsh Posté le 26-01-2014 à 14:41:46    

Merci de ton aide !
 
En meme temps que ta réponse un ami m'a aidé aussi et on est passé par une autre solution, reinitialiser les Countval en Scount etc...
 
Et ajouter cette ligne de code :  
 

Code :
  1. Scount=(int) strtol(Scountset, (char **)NULL, 10);


 
De plus pour éviter d'avoir des timer avec par exemple : 01H85M96S on a ajouté ca au Minutes et Secondes :
 

Code :
  1. if(((Mcount==0) && atoi(&key)<=5)||Mcount>0)


 
 
Code :

Code :
  1. /////////////////////////////
  2. //      Airsoft Bomb       //
  3. /////////////////////////////
  4. #include "LiquidCrystal.h"
  5. #include "Keypad.h"
  6. #include "Tone.h"
  7. #define pound 14
  8. Tone tone1;
  9. int Scount = 0; // count seconds
  10. int Mcount = 0; // count minutes
  11. int Hcount = 0; // count hours
  12. int DefuseTimer = 0; // set timer to 0
  13. long secMillis = 0; // store last time for second add
  14. long interval = 1000; // interval for seconds
  15. char password[4]; // number of characters in our password
  16. int currentLength = 0; //defines which number we are currently writing
  17. int i = 0;
  18. int j = 0;
  19. char entered[4];
  20. int ledPin = 4; //red led
  21. int ledPin2 = 3; //yellow led
  22. int ledPin3 = 2; //green led
  23. char Hcountset[2];
  24. char Mcountset[2];
  25. char Scountset[2];
  26. LiquidCrystal lcd(7,8,10,11,12,13); // the pins we use on the LCD
  27. const byte ROWS = 4; //four rows
  28. const byte COLS = 3; //three columns
  29. char keys[ROWS][COLS] = {
  30.   {'1','2','3'},
  31.   {'4','5','6'},
  32.   {'7','8','9'},
  33.   {'*','0','#'}
  34. };
  35. byte rowPins[ROWS] = {A2, A3, A4, A5}; //connect to the row pinouts of the keypad
  36. byte colPins[COLS] = {A0, 5, A1}; //connect to the column pinouts of the keypad
  37. Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );
  38. void setup(){
  39.   pinMode(ledPin, OUTPUT); // sets the digital pin as output
  40.   pinMode(ledPin2, OUTPUT); // sets the digital pin as output
  41.   pinMode(ledPin3, OUTPUT); // sets the digital pin as output
  42.   lcd.begin(16, 2);
  43.   Serial.begin(9600);
  44.   lcd.clear();
  45.   lcd.setCursor(0,0);
  46.   lcd.print("Definir temps : " );
  47.   lcd.setCursor(4,1);
  48.   lcd.print("HH:MM:SS" );
  49.   while (Hcount < 2)
  50.   {
  51.     lcd.setCursor(Hcount + 4, 1);
  52.     lcd.cursor();
  53.     char key = keypad.getKey();
  54.     key == NO_KEY;
  55.     if (key != NO_KEY)
  56.     {
  57.       if ((key != '*')&&(key != '#'))
  58.       {
  59.       lcd.print(key);
  60.       Hcountset[Hcount] = key;
  61.       Hcount++;
  62.       }
  63.     }
  64.   }
  65.   Hcount=(int) strtol(Hcountset, (char **)NULL, 10);
  66.     while (Mcount < 2)
  67.   {
  68.     lcd.setCursor(Mcount + 7, 1);
  69.     lcd.cursor();
  70.     char key = keypad.getKey();
  71.     key == NO_KEY;
  72.     if (key != NO_KEY)
  73.     {
  74.       if ((key != '*')&&(key != '#'))
  75.       {
  76.         if(((Mcount==0) && atoi(&key)<=5)||Mcount>0){
  77.           lcd.print(key);
  78.           Mcountset[Mcount] = key;
  79.           Mcount++;
  80.         }
  81.       }
  82.     }
  83.   }
  84.   Mcount=(int) strtol(Mcountset, (char **)NULL, 10);
  85.   while (Scount < 2)
  86.   {
  87.     lcd.setCursor(Scount + 10, 1);
  88.     lcd.cursor();
  89.     char key = keypad.getKey();
  90.     key == NO_KEY;
  91.     if (key != NO_KEY)
  92.     {
  93.       if ((key != '*')&&(key != '#'))
  94.       {
  95.         if(((Scount==0) && atoi(&key)<=5)||Scount>0){
  96.             lcd.print(key);
  97.             Scountset[Scount] = key;
  98.             Scount++;
  99.          }
  100.       }
  101.     }
  102.   }
  103.   Scount=(int) strtol(Scountset, (char **)NULL, 10);
  104.   delay(1000);
  105.   lcd.clear();
  106.   lcd.setCursor(0,0);
  107.   lcd.print("Choisir Code : " );
  108.   while (currentLength < 4)
  109.   {
  110.     lcd.setCursor(currentLength + 6, 1);
  111.     lcd.cursor();
  112.     char key = keypad.getKey();
  113.     key == NO_KEY;
  114.     if (key != NO_KEY)
  115.     {
  116.       if ((key != '*')&&(key != '#'))
  117.       {
  118.       lcd.print(key);
  119.       password[currentLength] = key;
  120.       currentLength++;
  121.       tone1.play(NOTE_C6, 200);
  122.       }
  123.     }
  124.   }
  125.  
  126.  
  127.   if (currentLength == 4)
  128.   {
  129.     delay(500);
  130.     lcd.noCursor();
  131.     lcd.clear();
  132.     lcd.home();
  133.     lcd.print("You've Entered: " );
  134.     lcd.setCursor(6,1);
  135.     lcd.print(password[0]);
  136.     lcd.print(password[1]);
  137.     lcd.print(password[2]);
  138.     lcd.print(password[3]);
  139.     tone1.play(NOTE_E6, 200);
  140.     delay(3000);
  141.     lcd.clear();
  142.     currentLength = 0;
  143.   }
  144.   }
  145. void loop()
  146. {
  147.   timer();
  148.   char key2 = keypad.getKey(); // get the key
  149.  
  150.   if (key2 == '*')
  151.     {   
  152.       lcd.clear();
  153.       lcd.setCursor(0,0);
  154.       lcd.print("Code: " );
  155.      
  156.       while (currentLength < 4)
  157.         {
  158.          
  159.           timer();
  160.          
  161.           char key2 = keypad.getKey();
  162.           if (key2 == '#')
  163.             {
  164.               currentLength = 0;
  165.               lcd.clear();
  166.               lcd.setCursor(0,0);
  167.               lcd.print("Code: " );
  168.             }
  169.           else                 
  170.           if (key2 != NO_KEY)   
  171.             {
  172.              
  173.               lcd.setCursor(currentLength + 7, 0);
  174.               lcd.cursor();
  175.              
  176.               lcd.print(key2);
  177.               entered[currentLength] = key2;
  178.               currentLength++;
  179.               tone1.play(NOTE_C6, 200);
  180.               delay(100);
  181.               lcd.noCursor();
  182.               lcd.setCursor(currentLength + 6, 0);
  183.               lcd.print("*" );
  184.               lcd.setCursor(currentLength + 7, 0);
  185.               lcd.cursor();
  186.             }
  187.         }
  188.       if (currentLength == 4)
  189.         {
  190.           if (entered[0] == password[0] && entered[1] == password[1] && entered[2] == password[2] && entered[3] == password[3])
  191.             {
  192.               lcd.noCursor();
  193.               lcd.clear();
  194.               lcd.home();
  195.               lcd.print("Bomb Defused" );
  196.               currentLength = 0;
  197.               digitalWrite(ledPin3, HIGH);
  198.               delay(2500);
  199.               lcd.setCursor(0,1);
  200.               lcd.print("Reset the Bomb" );
  201.               delay(1000000);
  202.             }
  203.       else
  204.         {
  205.           lcd.noCursor();
  206.           lcd.clear();
  207.           lcd.home();
  208.           lcd.print("Wrong Password!" );
  209.    
  210.           if (Hcount > 0)
  211.             {
  212.               Hcount = Hcount - 1;
  213.             }
  214.    
  215.           if (Mcount > 0)
  216.             {
  217.               Mcount = Mcount - 59;
  218.             }
  219.           if (Scount > 0)
  220.             {
  221.               Scount = Scount - 59;
  222.             }
  223.         delay(1500);
  224.         currentLength = 0;
  225.  
  226.         }
  227.       } 
  228.     }
  229. }
  230. void timer()
  231. {
  232.   Serial.print(Scount);
  233.   Serial.println();
  234.  
  235.   if (Hcount <= 0)
  236.   {
  237.     if ( Mcount < 0 )
  238.     {
  239.       lcd.noCursor();
  240.       lcd.clear();
  241.       lcd.home();
  242.       lcd.print("The Bomb Has " );
  243.       lcd.setCursor (0,1);
  244.       lcd.print("Exploded!" );
  245.      
  246.       while (Mcount < 0)
  247.       {
  248.         digitalWrite(ledPin, HIGH); // LED on
  249.         tone1.play(NOTE_A2, 90);
  250.         delay(100);
  251.         digitalWrite(ledPin, LOW); // LED off
  252.         tone1.play(NOTE_A2, 90);
  253.         delay(100);
  254.         digitalWrite(ledPin2, HIGH);
  255.         tone1.play(NOTE_A2, 90);
  256.         delay(100);
  257.         digitalWrite(ledPin2, LOW);
  258.         tone1.play(NOTE_A2, 90);
  259.         delay(100);
  260.         digitalWrite(ledPin3, HIGH);
  261.         tone1.play(NOTE_A2, 90);
  262.         delay(100);
  263.         digitalWrite(ledPin3, LOW);
  264.         tone1.play(NOTE_A2, 90);
  265.         delay(100);
  266.       }
  267.     }
  268.   }
  269.   lcd.setCursor (0,1);
  270.   lcd.print ("Timer:" );
  271.   if (Hcount >= 10)
  272.     {
  273.       lcd.setCursor (7,1);
  274.       lcd.print (Hcount);
  275.     }
  276.   if (Hcount < 10)
  277.     {
  278.       lcd.setCursor (7,1);
  279.       lcd.print ("0" );
  280.       lcd.setCursor (8,1);
  281.       lcd.print (Hcount);
  282.     }
  283.   lcd.print (":" );
  284.   if (Mcount >= 10)
  285.     {
  286.       lcd.setCursor (10,1);
  287.       lcd.print (Mcount);
  288.     }
  289.   if (Mcount < 10)
  290.     {
  291.       lcd.setCursor (10,1);
  292.       lcd.print ("0" );
  293.       lcd.setCursor (11,1);
  294.       lcd.print (Mcount);
  295.     }
  296.    
  297.   lcd.print (":" );
  298.   if (Scount >= 10)
  299.     {
  300.       lcd.setCursor (13,1);
  301.       lcd.print (Scount);
  302.     }
  303.   if (Scount < 10)
  304.     {
  305.       lcd.setCursor (13,1);
  306.       lcd.print ("0" );
  307.       lcd.setCursor (14,1);
  308.       lcd.print (Scount);
  309.     }
  310.   if (Hcount <0)
  311.     {
  312.       Hcount = 0;
  313.     }
  314.   if (Mcount <0)
  315.     {
  316.       Hcount --;
  317.       Mcount = 59;
  318.     }
  319.   if (Scount <1) // if 60 do this operation
  320.     {
  321.       Mcount --; // add 1 to Mcount
  322.       Scount = 59; // reset Scount
  323.     }
  324.   if (Scount > 0) // do this oper. 59 times
  325.     {
  326.       unsigned long currentMillis = millis();
  327.  
  328.       if(currentMillis - secMillis > interval)
  329.         {
  330.           tone1.play(NOTE_G5, 200);
  331.           secMillis = currentMillis;
  332.           Scount --; // add 1 to Scount
  333.           digitalWrite(ledPin2, HIGH); // sets the LED on
  334.           delay(10); // waits for a second
  335.           digitalWrite(ledPin2, LOW); // sets the LED off
  336.           delay(10); // waits for a second
  337.           //lcd.clear();
  338.         }
  339.     }
  340. }


Message édité par asphyth le 26-01-2014 à 14:44:33

---------------
-> Mon Feed Back <- -> Mes Ventes <-
Reply

Marsh Posté le 09-06-2014 à 07:32:20    

Bonjour,  
 
J'aurais besoin d'aide s'il vous plait. J'ai créé ma bombe d'airsoft grâce a vos codex ;) , mais quand le temps est inférieur a 1 h heure, il y a qu'un seul possibilité de désamorcer la bombe sinon elle est explose. Je voudrais rajouter 2 ou 3 essaie pour la désarmocer.  
 
Pourriez-vous m'aider s'il vous plait.
 
En vous remerciant d'avance

Reply

Marsh Posté le 25-09-2014 à 22:55:31    

J'ai également utilisé le codex pour créé une bombe airsoft. J'ai fait l'ajout d'une définition d'un "intetval = interval2" si erreur de code et réduit la valeur du temps a 1 au lieu de 1000. Résultat..... Quand il y a erreur d'entré le temps se défilé plus rapidement.  
 
Mais, mon pproblème estle suivant. Je veut écrire une séquence que lorsqu'il y a un bouton qui est en input HIGH. Le temps se défile plus rapidement. En pratique.... Si la bombe est déplacé il y a contact (switch au mercure) et quand elle est de niveau le temps revient à sa vitesse normal. J'arrive pas a écrire la bonne syntaxe :??:

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed