Arduino lire une chaîne de Série
#include <stdio.h>
#define LED 13
void setup() {
pinMode(LED, OUTPUT);
Serial.begin(9600);
}
void loop() {
int i;
char command[5];
for (i = 0; i < 4; i++) {
command[i] = Serial.read();
}
command[4] = '#include <stdio.h>
#define LED 13
void setup() {
pinMode(LED, OUTPUT);
Serial.begin(9600);
}
void loop() {
int i;
char command[5];
for (i = 0; i < 4; i++) {
command[i] = Serial.read();
}
command[4] = '\0';
Serial.println(command);
if (strcmp(command, "AAAA") == 0) {
digitalWrite(LED, HIGH);
Serial.println("LED13 is ON");
} else if (strcmp(command, "BBBB") == 0) {
digitalWrite(LED, LOW);
Serial.println("LED13 is OFF");
}
}
';
Serial.println(command);
if (strcmp(command, "AAAA") == 0) {
digitalWrite(LED, HIGH);
Serial.println("LED13 is ON");
} else if (strcmp(command, "BBBB") == 0) {
digitalWrite(LED, LOW);
Serial.println("LED13 is OFF");
}
}
Je suis en train de lire un de 4 caractères chaîne de caractères avec Arduino en Série, et quand il est AAAA allumer une LED, lorsqu'il est BBBB désactiver la série.
Cependant, quand je rentre "AAAA" il lit "AAAÿ" avec beaucoup de "ÿ"'s le long du chemin.
Je pense que je vais lire tout correctement, mais il ne fonctionne pas si bien, toute idée de ce que je fais mal?
- Vérifiez que votre débit en bauds, bits d'arrêt, contrôle de flux, et la parité sont identiques sur les deux extrémités. Même si vous savez que c'est vrai," prendre les 3 minutes et le vérifier. Vous sauver des heures.
- Quelle est votre
Serial.begin()
code? - C'est 9600, j'ai aussi posté.
Vous devez vous connecter pour publier un commentaire.
Vous devriez vérifier est qu'il ya quelque chose de disponible pour la lecture. Si non, alors le read() sera de retour -1. Vous pouvez utiliser Série.disponible (en) pour vérifier la mémoire tampon de lecture.
Il écrit "ÿ", car il n'y a pas de char à lire dans la mémoire tampon. Il faut un certain temps pour les autres personnages de désempiler de la mémoire tampon uart. Donc, vous ne pouvez pas faire une boucle pour lire les caractères. Vous devez attendre qu'un autre personnage est disponible avant de le lire.
En outre, cette façon de caractères en attente n'est pas la meilleure façon, car il bloque la boucle principale.
Voici ce que je fais dans mes programmes: