Bonjour.
Je débute en Arduino, mais ai des notions de bases en C et en élec.
C'est donc un terrain de jeu amusant et facile.
Je bute énormément sur les affichages serial Monitor et serial Plotter.
J'ai bien sur pensé à un manque de compréhension de ma part, mais quand dans une loop le seul Serial.print c'est :
Serial.print("RPM : ");
Serial.print(RPM);
Et que rien n'affiche dans le Monitor ni le Plotter, c'est zarb.
Bien sur les bauds sont corrects.
Surtout que hier avec le même code, ca fonctionnait.
Je doute introduire une quelconque ambiguïté.
Ma config est un truc sans originalité, Debian stable, user dans le groupe dialout qui peut écrire dans le Nano donc c'est open bar 666, petit CPU 7750BE, IDE Arduino 1.8.8, trucs de bases.
Je file le code au complet, c'est rien de compliqué.
Je détecte une entrée via un sensor à effet Hall, puis la suivante, et mesure le temps entre les 2 pour en déduire les tours/minute.
Pas directement du capteur en fait, j'ai un sensible à la polarité alors j'ai un double AOP pour m'affranchir du sens de l'aimant.
J'aurai pu gérer ca en software, mais hardware c'est plus simple.
Sur un écran Oled i2c, ca fonctionne, bien sur ...
// code pourri de Nali sans license
unsigned long previousMillis;
unsigned long currentMillis;
unsigned long interval;
float DigitalValue ;
float LastDigitalValue ;
float RPM;
void setup() {
Serial.begin(115200);
}
void loop() {
DigitalValue = digitalRead(2); //depuis le LM358 et ces 2 seuils.
if (DigitalValue != LastDigitalValue) {
if (DigitalValue == 1) {
currentMillis = millis();
interval = currentMillis - previousMillis;
previousMillis = currentMillis ;
}
// machine à état de base, le nouveau devient l'ancien, etc.
RPM = (60000 / interval); // millis en millisecondes, donc 60000 pour faire 1 minute
Serial.print("RPM : "); //
Serial.print(RPM); //
Serial.print("\n\r"); //putain de truc de base qui imprime pas :P
delay(50);
}
LastDigitalValue = DigitalValue; // truc de la machine à état
}