Go Down

Topic: Buffer della seriale sempre pieno se leggo una analogica sul pin A0 (Read 824 times) previous topic - next topic

matteotopa

Ciao a tutti,

mi è successa una cosa molto strana, almeno per me, praticamente ho un Arduino UNO Rev3 dove ho collegato un potenziometro sull'ingresso dell'analogica A0, tutto ok.

Leggo il valore dell'analogica e me lo stampo sulla seriale (Serial.print()), utilizzando l'usb e il terminale disponibile sull'ide, e anche fino a qui tutto bene.

Ma poi ho provato ad inviare dei dati alla scheda per accendere un led e  per fare questo, seguendo i tutorial, uso la funzione "Serial.available()". Il problema è qui. Questa funzione mi restituisce sempre un valore maggiore di 0, cioè anche se io non scrivo nulla e svuoto il buffer con il "Serial.read()". Il problema ce l'ho solo se uso l'analogica A0, se cambio ingresso tutto ok.
E' come se andando a collegare qualcosa sul pin A0 in qualche modo si incastra il buffer della seriale.

Pensate che la mia scheda abbia l'ingresso A0 danneggiato? Vi è mai capitata una cosa del genere?

Grazie

leo72


pablos

Io non ci ho capito niente.
Hai letto la parte "aiutateci ad aiutarvi"

ciao e benvenuto
no comment

niki77

Posta codice e schema collegamenti.
Per via telepatica è difficile risolvere sti tipi di problemi.
Vi è una spiegazione scientifica a tutto.
La fede è solo quell'anello che si porta al dito dopo il matrimonio.

matteotopa

#4
Jan 09, 2013, 01:30 am Last Edit: Jan 09, 2013, 12:17 pm by matteotopa Reason: 1
Ciao,

grazie per le tempestive risposte ed avete ragione, forse non sono stato molto chiaro. Comunque ecco i collegamenti:



ed ecco il codice, vi ricordo che per ora non ha nessuno scopo, solo tinkering..

Code: [Select]

int potenziometro = 0;
int datoLetto = 0;

void setup() {
  // initialize serial communications at 9600 bps:
  Serial.begin(9600);
  pinMode(11,OUTPUT);
}

void loop() {
 
  potenziometro = analogRead(A0);
 
  if (Serial.available() > 0 ) {
   
    datoLetto = Serial.read();
   
    Serial.print("comand ricevuto: ");
    Serial.println(datoLetto);
   
    if (datoLetto == '1' ){
      digitalWrite(11, HIGH);
      Serial.println(potenziometro);
    }
    else if (datoLetto == '0'){
      digitalWrite(11,LOW);
    }
  }
  delay(2);                 
}


in pratica, appena accedo la board e vado in monitor seriale vedo che lui mi stampa di continuo "command ricevuto: (qui non scrive nulla!!)"
anche se io non ho inviato nessun carattere! lui ha sempre qualcosa nel buffer ma non capisco cosa!

se invece scollego il potenziometro allora tutto funziona. Premo 1, il led si accende, premo 0 il led si spegne. Ricollego il potenziometro e ricomincia a scrivere un infinità di volte "command ricevuto: (niente, nemmeno valori a caso)".

Provo a collegare il pot sul A1 e funziona tutto correttamente.

Spero di essere stato un pò più chiaro.

ciao e grazie ancora

superlol

Usa un software come hyperterminal e leggi i dati in esadecimale e posta quelli, in ASCII molti non sono interpretati
Il nuovo forum italiano sull'elettronica: http://www.electroit.tk/ <--- Nuovamente online!

leo72

Ho provato infilando un cavetto flottante in A0 ma a me no dà strani risultati come a te

matteotopa

Ok, domani appena torno in ufficio provo con Hyperterminal e vediamo cosa mi scrive...

Anche io ho provato con un filetto flottante ma il problema rimane, mi si verifica solo con qualcosa effettivamente collegato. Ho provato anche altri sensori ma non cambia, ho notato però che ho il problema ce l'ho solo quando l'analogica ha un valore vicino allo 0, se (posto il potenziometro sopra ad un certo valore tutto funziona.  :smiley-slim:

Grazie ancora a tutti per l'aiuto!

matteotopa

Allora, oggi ho riprovato in ufficio per vedere cosa mi scriveva in esadecimale ma... non ho avuto nessun problema! cioè oggi tutto andava bene.
Da non credere! Poi ho provato a ricreare la situazione originale, cioè usare il mac e non il pc ed ecco qui! è la porta seriale del mio mac che ha qualche problema, non lo so ma in qualche modo ogni tanto invia qualcosa... molto strano.

Per togliermi del tutto i dubbi ho usato un alimentatore esterno. Tutto ok.

Grazie a tutti per l'aiuto.

Go Up