Arduino analogRead () retorna lixo quando imprimo via serial
-
06-07-2019 - |
Pergunta
Eu estou fazendo um relógio com o Arduino, e eu quero fazer um botão para definir a hora. Assim, apenas para teste, eu pluged um fio no pino de entrada analógica 0 e escreveu duas linhas de código para ler o pino e imprimi-lo via Serial, mas tudo que eu vejo é lixo.
valm = analogRead(0);
Serial.println(valm);
E o que eu recebo do monitor serial é esta: ? J? D? ± µ? E ?? jdd? ± µ ??? ºjRd? ± µ ??? ºj? D? ± µ? E ?? j? D? ± µ? E? ªjRd? ± µ ?? ? ÊjRd? ± µ ??? AJ? d? ± µ ???? j? d? ± µ? E ?? j Rd? ± µ ???? j? D? ± µ ??? ºj? D? ± µ? E ?? JRD? ± µ ???? j? D? ± µ? E? ÊjDd? ± µ ?? ? aj? d? ± µ ???? j? d? ± µ? E ?? JRD? ± µ ???? j? d ? ± µ? E? ÂjRd? ± µ ??? eJ? D? ± µ ??? ªj? D? ± µ? E? EJ $ d? ± µ ??? ÂjRd? ± µ ???? j? d d? ± µ ???? jdd? ± µ ???? JRD? ± µ ??? AJ? ± µ? E? ÊjRd? ± µ ???? j? d? ± µ? O? ej? d? ± µ? E? ÂjRd? ± µ ???? j? d? ± µ ???? j? d? ± µ? E ?? JRD? ± µ ??? AJ? d? ± µ ??? eJ? d? ± µ? ?? ªj? D? ± µ ??? eJ? D? ± µ ??? ÂjRd? ± µ ???? j? D? ± µ ???? j? D? ± µ? E ?? JRD? ± µ ??? AJ? d? ± µ? O? ej? d? ± µ? E? ªj? d? ± µ? E? ? JTD? ± µ ??? AJ? D? ± µ ???? j? D? ± µ? E ?? JRD? ± µ ???? j? D? ± µ? E? ÂjRd? ± µ? ?? eJ? d? ± µ? E? ªjRd? ± µ ??? eJ? d? ± µ ??? ºj ? D? ± µ? E ?? JTD? ± µ ???? JRD? ± µ ??? ªj? D? ± µ? E? ÂjTd? ± µ? E? ÊjRd? ± µ ??? ªj? D ? ± µ ??? eJ? d? ± µ ??? ºj? d? ± µ? E ?? JRD ? ± µ ??? eJ? D? ± µ ??? ªj? D? ± µ? E? AJPD? ± µ ??? eJ? D? ± µ ??? ªj? D? ± µ? A? EJ ? d? ± µ? E? ºjRd? ± µ ???? j? d? ± µ? E ?? JRD? ± µ ??? ªj? d? ± µ? E? aj? d? ± µ ??? ÊjRd? ± µ ??? ªj? d? ± µ? O? ej? d? ± µ ??? ºjRd? ± µ ???? j? d? ± µ ??? eJ? d? ± µ? E? ªjdd? ± µ? ?? ÂjRd? ± µ ??? AJ? D? ± µ? E? ªjPd? ± µ ??? eJ? D? ± µ ???? j? D? ± µ? E ?? JRD? ± µ? ?? eJ? d? ± µ? E? ªjdd? ± µ ??? ÂjRd? ± µ ??? AJ? D? ± µ? E? ªjDd? ± µ ??? eJ? D? ± µ? E ?? j? D? ± µ? E ?? JRD? ± µ ??? ÊjRd? ± µ ??? ªj? d? ± µ? E? AJPD? ± µ ??? AJ? d? ± µ ??? ªj ? D? ± µ? E? Êjdd? ± µ? E ?? JRD? ± µ ???? j? D? ± µ? E? EJ $ d? ± µ ??? ªjRd? ± µ ??? AJ ? d? ± µ? A? ÂjTd? ± µ ??? ªj? d? ± µ ??? eJ? d ? ± µ ???? JRD? ± µ ???? j? D? ± µ? E? ÊjTd? ± µ ??? ªjRd? ± µ ??? AJ? D? ± µ ??? AJ? D ? ± µ? E? ªjRd? ± µ ??? ÊjRd? ± µ? o ?? JTD? ± µ ???? j? d? ± µ ??? EJ
Por quê?
Editar:
Eu tinha definido o pino digital 0 a saída, e eu pensei que talvez esse era o problema, então eu fui para o site Arduino e encontrou a página Entrada analógica Pinos .
Então, eu tentei ler a partir de pino 14 que dizem que é o pino de entrada analógica 0, mas eu tenho a mesma saída.
A propósito, eu estou tentando ler a partir do analógico apenas pinos, não o wich também são digitais.
Solução
Tente executar este código de exemplo encontrados no site Arduino. Você não deve precisar para converter o valm
variável ou nada.
/*
Analog input
Reads an analog input on analog in 0, and prints the value out.
Created 24 March 2006
by Tom Igoe
*/
int analogValue = 0; // Variable to hold the analog value.
void setup() {
// open the serial port at 9600 bit/s:
Serial.begin(9600);
}
void loop() {
// Read the analog input on pin 0:
analogValue = analogRead(0);
// Print it out in many formats:
Serial.println(analogValue); // print as an ASCII-encoded decimal
Serial.println(analogValue, DEC); // print as an ASCII-encoded decimal
Serial.println(analogValue, HEX); // print as an ASCII-encoded hexadecimal
Serial.println(analogValue, OCT); // print as an ASCII-encoded octal
Serial.println(analogValue, BIN); // print as an ASCII-encoded binary
Serial.println(analogValue, BYTE); // print as a raw byte value
// Delay 10 milliseconds before the next reading:
delay(10);
}
Se a sua saída ainda é jargão, há algo de errado com o seu terminal serial.
Outras dicas
O problema aqui é analógico dispositivo que você pode conectado não são @ mesmos potenciais de terra. Exemplo: Se a sua energização na placa Arduino usando o PC eo sensor é ligado usando outra fonte, mas você tentar ler o valor do porto Arduino, para este instante em que dá acima erro. Tente este poder em arduino e um sensor de fonte de energia Same e tentar ler os dados utilizando a Porta Serial através Docklight você vai ter problema resolvido.
Você precisa definir a taxa de transmissão na janela do monitor de série (canto inferior direito) para o mesmo valor que foi definido em seu código (por exemplo Serial.begin(9600);
).
A partir do que sua aparência saída como, parece que você precisa valm convertido em uma string, de modo que você pode imprimir o valor numericamente.
Além disso, é o fio que você conectado a analógica em flutuante? Porque se for, ele só vai agir como uma antena e agarrar ruído aleatório (embora, pode ter um componente de 60Hz forte).