2017-08-24 4 views
1

Lorsque j'envoie le numéro "5" à l'Arduino via le moniteur série, alors Serial.read() affichera "53" car 53 est la valeur ASCII pour "5". Ce que je dois faire est de convertir le "53" (ou tout autre nombre que Serial.read() donne) à un entier normal ainsi quand j'envoie "5" à l'Arduino alors l'Arduino le verra comme "5" pas "53".Convertir Serial.read() en nombre entier utilisable

Je ne peux pas non plus utiliser Serial.parseInt() car il y a un délai de 1 seconde, mais j'ai besoin de recevoir le numéro instantanément.

Répondre

0

Le délai dans parseInt() est probablement dû à votre délai d'attente série.

parseInt()pourrait encore du travail pour vous si vous pouvez envoyer un caractère non numérique immédiatement après, comme on le verra dans this discussion sur le site Arduino.

Sinon, vous pouvez raccourcir le délai d'attente radicalement comme indiqué ici:

Michael Margolis' "livre de recettes Arduino" (2ème édition, page 113) à la rescousse!

Il s'avère que la classe Serial (qui étend la classe Stream) utilise la fonction Stream.setTimeout(). La valeur par défaut pour le délai d'attente est 1000 (une seconde). Je l'ai juste réglé sur quelque chose de plus petit, comme 50 ms, et le sketch est sympa et zippy. Voici l'exemple complet d'esquisse. Désactiver les fins de ligne dans le moniteur série ...

+0

Merci. J'ai utilisé 'Serial.setTimeout (50)', cela a fonctionné parfaitement. – unclenorton