Domanda

Sto realizzando un orologio con Arduino e voglio creare un pulsante per impostare l'ora. Quindi, solo per testare, ho inserito un filo nel pin 0 dell'ingresso analogico e ho scritto due righe di codice per leggere il pin e stamparlo tramite seriale, ma tutto ciò che ottengo è spazzatura.

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

E quello che ottengo dal monitor seriale è questo:     ? J? D? ± µ? Ê ?? jdd? ± µ ??? ºjRd? ± µ ??? ºj? D? ± µ? Ê ?? j? D? ± µ? É? ªjRd? ± µ ?? ? ÊjRd? ± µ ??? AJ? d? ± µ ???? j? d? ± µ? É ?? j     Rd? ± µ ???? j? D? ± µ ??? ºj? D? ± µ? É ?? JRD? ± µ ???? j? D? ± µ? Ê? ÊjDd? ± µ ?? ? AJ? d? ± µ ???? j? d? ± µ? É ?? JRD? ± µ ???? j? d     ? ± µ? E? ÂjRd? ± µ ??? EJ? D? ± µ ??? ªj? D? ± µ? E? Ej $ d? ± µ ??? ÂjRd? ± µ ???? j? d? µ ± ???? jdd? ± µ ???? JRD? ± µ ??? AJ? d? ±     µ? É? ÊjRd? ± µ ???? j? d? ± µ? Ò? ej? d? ± µ? É? ÂjRd? ± µ ???? j? d? ± µ ???? j? d? µ ±? É ?? JRD? ± µ ??? AJ? d? ± µ ??? EJ? d? ± µ?     ?? ªj? D? ± µ ??? EJ? D? ± µ ??? ÂjRd? ± µ ???? j? D? ± µ ???? j? D? ± µ? É ?? JRD? ± µ ??? AJ? d? ± µ? o? ej? d? ± µ? e? ªj? d? ± µ? e?     ? Jtd? ± µ ??? AJ? D? ± µ ???? j? D? ? ±? É ?? jrd? ± u ???? j? D? ± u? 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? ± µ? É ?? JRD     ? ± µ ??? EJ? D? ± µ ??? ªj? D? ± µ? É? ÂjPd? ± µ ??? EJ? D? ± µ ??? ªj? D? ± µ? Â? Ej ? d? ± µ? e? ºjRd? ± µ ???? j? d? ± µ? É ?? JRD? ±     µ ??? ªj? d? µ ±? Ê? AJ? d? µ ± ??? ÊjRd? ± µ ??? ªj? d? µ ±? Ò? ej? d? µ ± ??? ºjRd? ± µ ???? j? d? ± µ ??? EJ? d? ± u? e? ªjdd? ± µ?     ?? ÂjRd? ± µ ??? AJ? D? ± µ? É? ªjPd? ± µ ??? EJ? D? ± µ ???? j? D? ± µ? É ?? JRD? ± µ? ?? EJ? d? ± µ? e? ªjdd? ± µ ??? ÂjRd? ± µ ???     AJ? D? ± µ? É? ªjDd? ± µ ??? EJ? D? ? ±? Ê ?? j? D? ± µ? É ?? JRD? ± µ ??? ÊjRd? ? ± ??? ªj? d? ± µ? e? ÂjPd? ± µ ??? AJ? d? ± µ ??? ªj     ? D? ± µ? E? Êjdd? ± µ? É ?? JRD? ± µ ???? j? D? ± µ? E? Ej $ d? ? ± ??? ªjRd? ± µ ??? Aj ? d? µ ±? Â? ÂjTd? ± µ ??? ªj? d? ± µ ??? ej? d     ? ± µ ???? JRD? ± µ ???? j? D? ± µ? É? ÊjTd? ± µ ??? ªjRd? ± µ ??? AJ? D? ± µ ??? Aj? D ? ± µ? e? ªjRd? ± µ ??? ÊjRd? ± µ? Ò ?? jtd? ±     µ ???? j? d? ± µ ??? EJ

Perché?


Modifica:

Avevo impostato il pin digitale 0 in uscita e pensavo che forse questo fosse il problema, quindi sono andato sul sito Web di Arduino e ho trovato la pagina Pin di ingresso analogico .

Quindi ho provato a leggere dal pin 14 che dicono sia il pin 0 dell'ingresso analogico, ma ho ottenuto lo stesso output.

A proposito, sto provando a leggere solo i pin analogici, non quelli che sono anche digitali.

È stato utile?

Soluzione

Prova a eseguire questo codice di esempio presente sul sito Web di Arduino. Non dovresti aver bisogno di convertire la variabile valm o altro.

/*
  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 l'output è ancora incomprensibile, c'è qualcosa di sbagliato nel tuo terminale seriale.

Altri suggerimenti

Il problema Qui è che i dispositivi analogici che potresti collegare non sono gli stessi potenziali di terra. Esempio: se si accende la scheda Arduino tramite PC e sensore utilizzando un'altra fonte, ma si sta tentando di leggere il valore dalla porta Arduino, per questo istante viene visualizzato l'errore sopra. Prova questo potere su arduino e sensore dalla stessa fonte di alimentazione e prova a leggere i dati utilizzando la porta seriale tramite DOcklight otterrai problemi risolti.

È necessario impostare la velocità di trasmissione nella finestra del monitor seriale (angolo in basso a destra) sullo stesso valore impostato nel codice (ad es. Serial.begin (9600); ).

Da come appare il tuo output, sembra che tu debba convertire valm in una stringa, in modo da poter stampare il valore numericamente.

Inoltre, il filo collegato all'analogico è flottante? Perché se lo è, si comporterà come un'antenna e catturerà un rumore casuale (anche se potrebbe avere un forte componente a 60Hz).

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top