Ollivier

DFR0075 Modifié Clic long clic court double clic

Aug 18th, 2020 (edited)
75
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.04 KB | None | 0 0
  1. // DFR0075 ======================================================================
  2. // Code fabricant modifié du module 5 boutons DFR0075
  3. // https://wiki.dfrobot.com/ADKeyboard_Module__SKU__DFR0075_
  4. // Permet le simple clic (clic court), le clic long, et le double-clic
  5. // une version hyper commentée de ce code se trouve ici :
  6. // https://pastebin.com/gVZBu2Wg
  7. // une version du code fabricant hyper commentée aussi se trouve ici :
  8. // https://pastebin.com/JXRjZ4G3
  9. // ===============================================================================
  10. // Ollivier JULLIEN || aout 2020
  11. // 100% libre de droit
  12. // (en cas de copie, merci de citer l'auteur...
  13. // il a travaillé dur pour vous le donner ;) )
  14. // ===============================================================================
  15.  
  16. // VARIABLES
  17.  
  18.  
  19. int valLimiteHauteModule[5] = {600, 700, 760, 850, 900};
  20. const int nombreBoutons = 5;
  21. const int pinModule5BP = 0;
  22. int valeurLue;
  23. int numBouton = -1;
  24. int derniereLue = -1;
  25. int memoireNumBouton = -1;
  26. int ancienneMemoireNumBouton =-1;
  27. unsigned long debutPression;
  28. unsigned long debutEntreDeux;
  29.  
  30. unsigned long dureePression;
  31. unsigned long dureeEntreDeux;
  32.  
  33. // FONCTIONS
  34.  
  35. // Fonction servant à transformer la valeur reçu (comprise entre 0 et 1023)
  36. // en valeur de bouton (comprise entre -1 et 4)
  37. int recupNumBouton (unsigned int lecture) {
  38.  
  39. int boucleLecture;
  40. for (boucleLecture = 0; boucleLecture < nombreBoutons; boucleLecture ++){
  41. if (lecture < valLimiteHauteModule[boucleLecture]) {
  42. return boucleLecture;
  43. }
  44. }
  45. if (boucleLecture >= nombreBoutons) {
  46. boucleLecture = -1;
  47. }
  48. return boucleLecture;
  49.  
  50. }
  51.  
  52. // SET UP
  53.  
  54. void setup() {
  55. Serial.begin(9600);
  56. }
  57.  
  58. void loop() {
  59. valeurLue = analogRead(pinModule5BP);
  60. delay(50);
  61. valeurLue = analogRead(pinModule5BP);
  62. numBouton = recupNumBouton(valeurLue);
  63.  
  64. // Si on vient d'enfoncer le bouton
  65.  
  66. if (numBouton != derniereLue && numBouton != -1) {
  67. dureeEntreDeux = (millis() - debutEntreDeux);
  68. debutPression = millis();
  69. derniereLue = numBouton;
  70. ancienneMemoireNumBouton = memoireNumBouton;
  71. memoireNumBouton = numBouton;
  72.  
  73. // Si on vient de relâchcer le bouton
  74.  
  75. } else if (numBouton != derniereLue && numBouton == -1) {
  76. debutEntreDeux = millis();
  77. dureePression = millis() - debutPression;
  78. derniereLue = numBouton;
  79. if (dureeEntreDeux > 350) {
  80. if (dureePression < 250 ) {
  81. Serial.print("clic court sur le bouton ");
  82. Serial.println(memoireNumBouton);
  83. } else if (dureePression >= 250) {
  84. Serial.print("clic long sur le bouton ");
  85. Serial.println(memoireNumBouton);
  86. }
  87. } else {
  88. if (dureePression < 250 ) {
  89. if (memoireNumBouton == ancienneMemoireNumBouton){
  90. Serial.print("double clic sur le bouton ");
  91. Serial.println(memoireNumBouton);
  92. Serial.print("antepenultieme ");
  93. Serial.println(ancienneMemoireNumBouton);
  94. }
  95. }
  96. }
  97. }
  98. }
Add Comment
Please, Sign In to add comment