Serial dados estranho envio
Pergunta
Então, eu estou fazendo um esboço que leva um número de dois dígitos da porta USB, verifica o estado do pino que corresponde ao número, em seguida, alterna a pin on / off.
Por alguma razão, quando eu enviar 13 através do monitor serial Arduino, eu recebo essa mensagem de volta:
Pin number is greater than 14, details:
490
51
541
O que significa que o IDE está enviando números estranhos, ou o Arduino é processá-los errado. Algum de vocês ver um problema de por que isso não está funcionando direito?
Solução
Se você digitar o ASCII caracteres "1", em seguida, "3", em seguida, Serial.read()
retornará 49 e 51. Isto porque na ASCII tabela de caracteres "1" e "3" são representadas pelos números 49 e 51, respectivamente. Se você quiser encontrar o número que o usuário digitou fora você tem que convertê-lo de ASCII .
Eu não sou muito familiarizado com a linguagem Arduino, mas assumindo que é semelhante ao C pode encontrar as mudanças necessárias Aqui .
Eu reescrevi o programa de outra maneira, que pode ser mais claro para Leia .
O '0' usado na fonte é simplesmente outra maneira de dizer "o número usado para representar o caractere '0'", então é 48. No C-como línguas '0' == 48
, '1' == 49
, etc, etc.