El envío de datos en serie extraña
Pregunta
Así que estoy haciendo un boceto que toma un número de dos dígitos desde el puerto USB, comprueba el estado del pin que coincide con el número, a continuación, cambia la clavija de encendido / apagado.
es una oportunidad única la fuente
Por alguna razón, cuando envío 13 a través del monitor serie de Arduino, me sale este mensaje de nuevo:
Pin number is greater than 14, details:
490
51
541
Lo que significa que el IDE es el envío de números extraños, o el Arduino está procesando que están equivocados. ¿Alguno de ustedes ven un problema de por qué esto no está funcionando bien?
Solución
Si se introduce la ASCII caracteres "1" y luego "3", entonces Serial.read()
volverán 49 y 51. Esto se debe a que en el ASCII tabla de caracteres "1" y "3" se representan por los números 49 y 51, respectivamente. Si usted quiere encontrar el número que el usuario escribió a cabo hay que convertirlo de ASCII .
No estoy muy familiarizado con el lenguaje de Arduino, pero asumiendo que es similar a C se pueden encontrar los cambios necesarios Aquí .
He reescrito el programa de otra manera, que pueden Leer .
El '0' usado en la fuente es simplemente otra forma de decir "el número que se usa para representar el carácter '0'", por lo que es 48. En las lenguas '0' == 48
C-como, '1' == 49
, etc, etc.