Transfert d’entiers ou flottants du moniteur série vers la carte Arduino avec readString et readStringUntil
Les fonctions Serial.parseFloat()
et Serial.parseInt()
lisent le buffer jusqu’à définir un flottant ou un entier.
Les caractères du début qui ne sont pas des chiffres sont ignorés. Puis un flottant ou un entier est défini. Le décodage s’arrête au premier caractère qui n’est pas un chiffre, mais celui-ci n’est pas lu et reste dans le buffer.
float data;
void setup() {
Serial.begin(9600);
}
void loop() {
if (Serial.available()>0) {
data = Serial.parseFloat();
Serial.print("2xReçu=");
Serial.println(data*2, 3); // le 2nd paramètre défini le nombre de chiffres après la virgule
Serial.read();
}
}
Dans le code précédent, Serial.read()
permet de lire le saut à la ligne présent dans le buffer. On obtient :
1.2
retourne 2xReçu =2.40
3
retourne 2xReçu = 6.000
Abc1.2
retourne 2xReçu = 2.400
Abc1.2dec
retourne 2xReçu = 2.400
Abc1.2dec0.9
retourne 2xReçu = 2.400 et 2xReçu = 1.800
1.2.3
retourne 2xReçu = 2.400 et 2xReçu = 6.000
En remplaçant Serial.parseFloat()
par Serial.parseInt()
et si data
est de type int
:
1.2.3
retourne 2xReçu = 2
puis 2xReçu = 4
et 2xReçu = 6
, soit 3 entiers.