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.

Dê uma olhada na fonte

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?

Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top