Bonjour l'internet,
J'utilise un arduino nano pour contrôler une pompe en période et durée de fonctionnement. (du blink sans delay qui fonctionne très bien)
Le petit truc en plus: j'ai rajouté une commande en serial pour changer la période et la durée de fonctionnement; à base de serialEvent(), de reconnaissance de String, découpage, puis transformation de substring en Float. Plus explicitement:
void CommandeSerial() {
float valeur = 0;
if (stringComplete) {
Serial.println(inputString); // print the string when a newline arrives
int separator;
separator = inputString.indexOf("=");
if ( separator > 0) { // recherche un signe egal dans la commande, si oui stocke la valeur
String valeur_lue;
valeur_lue = inputString.substring(separator + 1);
valeur = valeur_lue.toFloat();
}
if (inputString.startsWith("dureePompe=")) {
dureePompe = valeur;
Serial.print(F("Ok, je vais pomper toutes les "));Serial.print(periodePompe); Serial.print(F("h, pendant ")); Serial.print(dureePompe); Serial.println(F(" s"));
}
if (inputString.startsWith("periodePompe=")) {
periodePompe = valeur;
Serial.print(F("Ok, je vais pomper toutes les "));Serial.print(periodePompe); Serial.print(F("h, pendant ")); Serial.print(dureePompe); Serial.println(F(" s"));
}
// clear the string:
inputString = "";
stringComplete = false;
}/**/
}
void serialEvent() {
while (Serial.available()) {
// get the new byte:
char inChar = (char)Serial.read();
// add it to the inputString:
inputString += inChar;
// if the incoming character is a newline, set a flag
// so the main loop can do something about it:
if (inChar == '\n') {
stringComplete = true;
}
}
}
Voila comment ça marche: dans le moniteur série, j'écris par exemple periodePompe=5, le code va reconnaitre "periodePompe=", et récuperer en substring le "5" qui suit, le transformer en float, puis l'attribuer à periodePompe.
Et ça marche très bien avec 5, et avec tous les entiers d'ailleurs.
Mais ça ne marche pas avec des nombres décimaux!!!!!
Lorsque je rentre disons 5.2, la periodeCo2 devient 5. Et si je rentre 0.5 c'est l'enfer, periodeCo2=0 et la pompe s'arrête plus, mais ça c'est facile à régler avec une petite condition.
J'ai absolument tout déclaré en float, ce qui est un peu hardcore, long pourrait suffire je crois.
Un conseil, un avis pour m'éclairer? Où est-ce que ça coince?
Merci,