L'envoi de données série bizarre
Question
Alors je fais un croquis qui prend un nombre à deux chiffres à partir du port USB, vérifie l'état de la broche qui correspond au numéro, puis basculer l'axe de marche / arrêt.
Jetez un coup d'oeil à la source
Pour une raison quelconque, j'envoie 13 à l'écran série Arduino, je reçois ce message de retour:
Pin number is greater than 14, details:
490
51
541
Ce qui signifie que l'IDE envoie des numéros étranges, ou l'Arduino est en train de traiter les mauvais. Est-ce que vous voyez un problème pourquoi cela ne fonctionne pas correctement?
La solution
Si vous entrez dans le ASCII caractères "1" puis "3" puis Serial.read()
renverront 49 et 51. En effet, dans le ASCII table de caractères "1" et « 3 » sont représentées par les numéros 49 et 51, respectivement. Si vous voulez trouver le numéro que l'utilisateur tapé vous devez convertir à partir de ASCII .
Je ne suis pas très familier avec le langage Arduino, mais en supposant qu'il est semblable à C, vous pouvez trouver les modifications nécessaires .
Je récrit le programme d'une autre manière, qui peut être plus clair Lire .
Le « 0 » utilisé dans la source est simplement une autre façon de dire « le nombre utilisé pour représenter le caractère « 0 » », est donc 48. Dans les langues C comme '0' == 48
, '1' == 49
, etc, etc.