Pregunta

Estoy haciendo un reloj con el Arduino, y quiero hacer un botón para configurar la hora. Entonces, solo para probar, conecté un cable en el pin 0 de entrada analógica y escribí dos líneas de código para leer el pin e imprimirlo a través de Serial, pero todo lo que obtengo es basura.

  valm = analogRead(0);
  Serial.println(valm);

Y lo que obtengo del monitor en serie es esto:     ? j? d? ± µ? Ê ?? jDd? ± µ ??? ºjRd? ± µ ??? ºj? d? ± µ? Ê ?? j? d? ± µ? É? ªjRd? ± µ ?? ? ÊjRd? ± µ ??? Âj? D? ± µ ???? j? D? ± µ? É ?? j     Rd? ± µ ???? j? D? ± µ ??? ºj? D? ± µ? É ?? jRd? ± µ ???? j? D? ± µ? Ê? ÊjDd? ± µ ?? ? Âj? D? ± µ ???? j? D? ± µ? É ?? jRd? ± µ ???? j? D     ? ± µ? É? ÂjRd? ± µ ??? Êj? D? ± µ ??? ªj? D? ± µ? Ê? Êj $ d? ± µ ??? ÂjRd? ± µ ???? j? d? ± µ ???? jdd? ± µ ???? jRd? ± µ ??? Âj? d? ±     µ? É? ÊjRd? ± µ ???? j? d? ± µ? Ò? Êj? d? ± µ? É? ÂjRd? ± µ ???? j? d? ± µ ???? j? d? ± µ? É ?? jRd? ± µ ??? Âj? d? ± µ ??? Êj? d? ± µ?     ?? ªj? D? ± µ ??? Êj? D? ± µ ??? ÂjRd? ± µ ???? j? D? ± µ ???? j? D? ± µ? É ?? jRd? ± µ ??? Âj? D? ± µ? Ò? Êj? D? ± µ? É? ªj? D? ± µ? É?     ? jTd? ± µ ??? Âj? d? ± µ ???? j? d? ± µ? É ?? jRd? ± µ ???? j? d? ± µ? É? ÂjRd? ± µ? ?? Êj? D? ± µ? É? ªjRd? ± µ ??? Êj? D? ± µ ??? ºj     ? d? ± µ? È ?? jTd? ± µ ???? jRd? ± µ ??? ªj? d? ± µ? È? ÂjTd? ± µ? É? ÊjRd? ± µ ??? ªj? d ? ± µ ??? Êj? D? ± µ ??? ºj? D? ± µ? É ?? jRd     ? ± µ ??? Êj? D? ± µ ??? ªj? D? ± µ? É? ÂjPd? ± µ ??? Êj? D? ± µ ??? ªj? D? ± µ? Â? Êj ? d? ± µ? É? ºjRd? ± µ ???? j? d? ± µ? É ?? jRd? ±     µ ??? ªj? d? ± µ? Ê? Âj? d? ± µ ??? ÊjRd? ± µ ??? ªj? d? ± µ? Ò? Êj? d? ± µ ??? ºjRd? ± µ ???? j? d? ± µ ??? Êj? d? ± µ? Ê? ªjdd? ± µ?     ?? ÂjRd? ± µ ??? Âj? D? ± µ? É? ªjPd? ± µ ??? Êj? D? ± µ ???? j? D? ± µ? É ?? jRd? ± µ? ?? Êj? D? ± µ? É? ªjdd? ± µ ??? ÂjRd? ± µ ???     Âj? D? ± µ? É? ªjDd? ± µ ??? Êj? D? ± µ? Ê ?? j? D? ± µ? É ?? jRd? ± µ ??? ÊjRd? ± µ ??? ªj? D? ± µ? Ê? ÂjPd? ± µ ??? Âj? D? ± µ ??? ªj     ? d? ± µ? É? Êjdd? ± µ? É ?? jRd? ± µ ???? j? d? ± µ? É? Êj $ d? ± µ ??? ªjRd? ± µ ??? Âj ? d? ± µ? Â? ÂjTd? ± µ ??? ªj? d? ± µ ??? Êj? d     ? ± µ ???? jRd? ± µ ???? j? D? ± µ? É? ÊjTd? ± µ ??? ªjRd? ± µ ??? Âj? D? ± µ ??? Âj? D ? ± µ? É? ªjRd? ± µ ??? ÊjRd? ± µ? Ò ?? jTd? ±     µ ???? j? d? ± µ ??? Êj

¿Por qué?


Editar:

Había configurado el pin digital 0 para la salida, y pensé que tal vez ese era el problema, así que fui al sitio web de Arduino y encontré la página Pines de entrada analógica .

Así que intenté leer del pin 14, que dicen que es el pin 0 de entrada analógica, pero obtuve la misma salida.

Por cierto, estoy tratando de leer desde los pines solo analógicos, no los que también son digitales.

¿Fue útil?

Solución

Intente ejecutar este código de muestra que se encuentra en el sitio web de Arduino. No debería necesitar convertir la variable valm ni 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);
}

Si su salida sigue siendo un galimatías, hay algo mal con su terminal en serie.

Otros consejos

El problema Aquí es que el dispositivo analógico que puede conectar no tiene los mismos potenciales de tierra. Ejemplo: si enciende la placa Arduino con una PC y el sensor se enciende con otra fuente, pero intenta leer el valor del puerto Arduino, en este instante da el error anterior. Pruebe esta energía en Arduino y el sensor de la misma fuente de energía e intente leer los datos utilizando el puerto serie a través de DOcklight, obtendrá el problema resuelto.

Debe establecer la velocidad en baudios en la ventana del monitor serie (esquina inferior derecha) al mismo valor que se ha establecido en su código (por ejemplo, Serial.begin (9600); ).

Por lo que parece su salida, parece que necesita convertir valm en una cadena, para que pueda imprimir el valor numéricamente.

Además, ¿el cable que enchufó al análogo está flotando? Porque si lo es, simplemente actuará como una antena y captará ruido aleatorio (aunque podría tener un fuerte componente de 60Hz).

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top