Tengo un boceto simple que imprime "Hello World" en la serie, pero en cambio recibo un montón de galimatías.
void setup() {
Serial.begin(9600);
}
void loop() {
Serial.println("Hello World");
delay(1000);
}
¿Por qué no está imprimiendo "Hello World" como dice el código?
Respuestas:
La placa y el terminal probablemente no estén usando la misma velocidad en baudios. Verifique la esquina inferior derecha de la Terminal serie Arduino y asegúrese de que esté configurado en 9600.
Datos seriales
La comunicación en serie funciona enviando todo el flujo de datos un bit a la vez. Esto contrasta con el puerto paralelo estándar que envía un byte a la vez. Ambos dispositivos necesitan saber a qué velocidad se envían los datos. Además, ambos dispositivos deben funcionar a la misma velocidad. Esto se llama velocidad de transmisión.
Velocidad de transmisión
Baudios realmente solo significa pulsos por segundo. En el contexto de la comunicación en serie, significa cuántos bits se transmiten por segundo. Uno de los valores más comunes es 9600, pero hay otros comunes que son factores o múltiplos de 9600. Sin embargo, en realidad no importa, siempre que ambos dispositivos funcionen a la misma velocidad.
Si le envío mensajes más rápido de lo que los recibe, pierde datos. Si te estoy enviando mensajes más lento de lo que los estás recibiendo, obtienes tonterías mezcladas con lo que te envié.
Datos, paridad, bits de parada
Si observa la documentación
begin()
, verá que puede tomar dos parámetros:Esperemos que ahora entienda la velocidad, son los bits por segundo a los que se comunicará Arduino.
El segundo parámetro, le
config
permite configurar algunas otras cosas sobre la transmisión de datos en serie. Estos son los bits de datos, paridad y parada. Verá en la página que tiene valores como5N1
,6N1
ySERIAL_8N1 (the default)
El primer número representa cuántos bits de datos. El segundo personaje te dice qué tipo de bit de paridad hay.
E
para paridadO
par, paridad impar oN
sin paridad. El tercer número te dice cuántos bits de parada.Entonces, realmente, con 8N1, tenemos 10 bits enviados por cada 8 bits de "sus" datos. 1 bit de inicio, 8 bits de datos y 1 bit de parada.
De todos modos, ambas partes deben acordar esta información y la velocidad. El terminal serie de Arduino no le da la opción de cambiar estas configuraciones, pero otras lo hacen, por lo que deberá asegurarse de que todas estas configuraciones sean las mismas.
Más información en wiki: comunicación serial asincrónica
fuente
La respuesta de Sachleen (arriba) dice:
Si este número es 9600, y aún obtiene datos confusos, verifique el resultado que obtuvo al cargar el código. Debería leer algo como:
Este resultado final (de lo que he publicado) dice cuál es la velocidad de transmisión predeterminada de su dispositivo. Para mí, cambié
Serial.begin(9600);
->Serial.begin(57600);
y verifiqué que la esquina inferior derecha de mi terminal serie Arduino decía 57600.Después de ejecutar esto, y funcionó, pude volver a 9600 y obtener datos no confusos. Arduino parece ser quisquilloso ...
fuente
Pasé media hora tratando de resolver eso, y fue mi Arduino Pro Mini de 3.3V y había seleccionado 5V en el Arduino IDE (en PC). La impresión en serie nunca funciona así, incluso con la misma velocidad de transmisión definida.
Seleccione la placa correcta en el IDE de Arduino.
Para ser claros, se debe seleccionar el procesador correcto (voltaje / velocidad del reloj) en la pestaña Herramientas .
fuente