Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2914 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  Besoin d'aide sur codage Arduino

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Besoin d'aide sur codage Arduino

n°2217551
asphyth
Posté le 25-01-2014 à 23:22:39  profilanswer
 

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 <-
mood
Publicité
Posté le 25-01-2014 à 23:22:39  profilanswer
 

n°2217554
Mr Marron ​derriere
Proprio d'une mER-6uez !
Posté le 26-01-2014 à 09:50:33  profilanswer
 

[:spaydar] je reviens plus tard.

n°2217561
olivthill
Posté le 26-01-2014 à 11:32:26  profilanswer
 

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: )

n°2217571
asphyth
Posté le 26-01-2014 à 14:41:46  profilanswer
 

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 <-
n°2230223
limit14
Posté le 09-06-2014 à 07:32:20  profilanswer
 

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

n°2238918
popofff
Posté le 25-09-2014 à 22:55:31  profilanswer
 

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 :??:


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  Besoin d'aide sur codage Arduino

 

Sujets relatifs
Probéme de codage pour lire la taille de fichier texteBesoin d'aide pour fichier gestion absence en VBA
Aide exercice VB[Résolu] A l'aide ! (C++ IA)
Aide assembleur 8086aide pour un programme en python (réception de e mails)
j ai besoin d aideAide pour un petit programme en C
Plus de sujets relatifs à : Besoin d'aide sur codage Arduino


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR