Advertisement
Ollivier

antimoustique

Aug 6th, 2020
133
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.90 KB | None | 0 0
  1. //ADKeyboard Module
  2. //Developed by DFRobot.com
  3. //Last modified 30/11/2011
  4. //Version 1.0
  5. //Modifié par Ollivier JULLIEN
  6. //Modifié le 06/08/20
  7. //==========================
  8. // Anti moustique
  9. //==========================
  10.  
  11. const int valBout[5] = { 600, 650, 700, 800, 900 };
  12. unsigned int frequence[7] = { 22000, 23500, 27500, 31000, 39500, 50000, 65000 };
  13. int jour[7] = { 4, 5, 6, 7, 8, 9, 10 };
  14. int numFrequ = 0;
  15. int nombreCle = 5;
  16. int boutPress;
  17. int cle = -1;
  18. int ancienneCle = -1;
  19. int pinBuzzer = 3;
  20. int pinRouge = 2;
  21. void setup()
  22. {
  23.   pinMode(13, OUTPUT);  //we'll use the debug LED to output a heartbeat
  24.   pinMode(pinBuzzer, OUTPUT);
  25.   pinMode(pinRouge, OUTPUT);
  26.   for (int i = 4 ; i <= 10 ; i++) {
  27.     pinMode(i, OUTPUT);
  28.   }
  29.   Serial.begin(9600); // 9600 bps
  30.   digitalWrite (jour[numFrequ], true);
  31.   digitalWrite (pinRouge, true);
  32. }
  33.  
  34. void loop()
  35. {
  36.   boutPress = analogRead(0);    // read the value from the sensor
  37.   digitalWrite(13, LOW);
  38.   cle = recupCle(boutPress);  // convert into key press
  39.  
  40.   if (cle != ancienneCle)   // if keypress is detected
  41.   {
  42.     delay(50);  // wait for debounce time
  43.     boutPress = analogRead(0);    // read the value from the sensor
  44.     cle = recupCle(boutPress);    // convert into key press
  45.     if (cle != ancienneCle)
  46.     {
  47.       ancienneCle = cle;
  48.       if (cle >= 0) {
  49.         digitalWrite(13, HIGH);
  50.         switch (cle)
  51.         {
  52.           case 0://Serial.println("S1 OK");
  53.             tone(pinBuzzer, frequence[numFrequ]);
  54.             digitalWrite (pinRouge, false);
  55.             for (int i = 4; i <= 10; i++) {
  56.               digitalWrite (i, false);
  57.             }
  58.             break;
  59.           case 1://Serial.println("S2 OK");
  60.             noTone(pinBuzzer);
  61.             digitalWrite (jour[numFrequ], true);
  62.             digitalWrite (pinRouge, true);
  63.             break;
  64.           case 2: Serial.println("S3 OK");
  65.             break;
  66.           case 3: Serial.println("S4 OK");
  67.             break;
  68.           case 4://Serial.println("S5 OK");
  69.             if (numFrequ < 6) {
  70.               numFrequ += 1;
  71.               noTone(pinBuzzer);
  72.             digitalWrite (pinRouge, true);
  73.             for (int i = 4; i <= 10; i++) {
  74.               digitalWrite (i, false);
  75.             }
  76.             digitalWrite (jour[numFrequ], true);
  77.             } else {
  78.               numFrequ = 0;
  79.               noTone(pinBuzzer);
  80.             digitalWrite (pinRouge, true);
  81.             for (int i = 4; i <= 10; i++) {
  82.               digitalWrite (i, false);
  83.             }
  84.             digitalWrite (jour[numFrequ], true);
  85.             }
  86.            
  87.             break;
  88.         }
  89.       }
  90.     }
  91.   }
  92.   delay(100);
  93. }
  94. // Convert ADC value to key number
  95. int recupCle(unsigned int input)
  96. {
  97.   int k;
  98.   for (k = 0; k < nombreCle; k++)
  99.   {
  100.     if (input < valBout[k])
  101.     {
  102.       return k;
  103.     }
  104.   }
  105.   if (k >= nombreCle)k = -1;  // No valid key pressed
  106.   return k;
  107. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement