Bonjour à tous,
je me fabrique un petit tachymètre avec un écran OLED I2C pour pouvoir compter mes tours de pédales en vélo (cadence). Pour cela j'utilise un capteur ILS en parallèle avec un condensateur pour filtrer les petits rebonds. Je compte le nombre de tours en 3sec pour y mettre en tours/min ensuite. La cadence est donc actualisée toutes les 3secondes.
Cependant, mon programme ne fonctionne pas bien, le comptage ne se fait pas, est-ce que quelqu'un trouverait l'erreur?
Merci d'avanceCode:#include <Wire.h> // librairie standard #include <SPI.h> #include <Adafruit_GFX.h> #include <Adafruit_SSD1306.h> #include <math.h> #define OLED_RESET 4 Adafruit_SSD1306 display(OLED_RESET); #define NUMFLAKES 10 #define XPOS 0 #define YPOS 1 #define DELTAY 2 #if (SSD1306_LCDHEIGHT != 64) #endif long vitesse = 0; long chrono = 0; // valeur courante du chrono long chrono_depart = 0; // valeur de départ du chrono long duree_test = 3000; // test sur 3 secondes long tour = 0; const int bouton = 2; int etatBouton; void setup () { Serial.begin(9600); display.begin(SSD1306_SWITCHCAPVCC, 0x3C); // initialize with the I2C addr 0x3C (for the 128x32) // init done pinMode(bouton, INPUT); //le bouton est une entrée display.display(); // show splashscreen delay(10); display.clearDisplay(); display.setTextSize(1); display.setTextColor(WHITE); display.setCursor(25,0); display.println("Vitesse TPM: "); chrono_depart = millis(); } void loop() { chrono = millis(); tour=0; while(chrono - chrono_depart < duree_test){ etatBouton = HIGH; etatBouton = digitalRead(bouton); if(etatBouton == LOW) { tour++; // incrémente la variable } else { } } if (chrono - chrono_depart > duree_test) { vitesse=tour*20; display.setTextSize(1); display.setTextColor(WHITE); display.setCursor(80,25); display.println(vitesse); display.display(); chrono_depart = millis(); } }
-----