Pages: [1]   Go Down
Author Topic: Arduino MEGA che si blocca nella lettura di ingresso A0  (Read 703 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 1
Posts: 10
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

CIao a tutti,
sono alle prese con lo sketch che si trova in rete per l'invio di dati su spreadsheet di Google.
Lasciando gli ingressi A0 e A1 floating per le prove dello sketch, è tutto perfettamente funzionante, oggi però ho notato che nel momento in cui vado a collegare all'ingresso A0 una tensione, ovviamente referenziata alla GND di Arduino, lo sletch si blocca proprio nella fase di lettura del valore analogico.
Una volta bloccato, è necessario resettare fisicamente Arduino.
In particolare ho collegato un LM35 per misure di temperatura, alimentato dai 5Vcc di Arduino. Se invece collego la sua uscita all'ingresso A1 (secondo ingresso che viene inviato allo spreadsheet di Goggle) di Arduino, lo sketch non si blocca mai.
Capisco che il blocco avviene in fase di lettura (o conversione AD) perchè ho messo una serie di stampe sul monitor seriale per fare una sorta di debug.
Ultima precisazione: utilizzando un altro sketch che legge l'LM35 dal pin A0 e lo manda sulla seriale (quindi senza interpellare l'ethernet shield che comunque resta connessa ad Arduino), nessun problema...
E' capitato anche a voi un problema del genere o avete suggerimenti?
E' strano anche perchè il pin A0 non dovrebbe essere utilizzato dall'Ethernet Shield.
Enzo
Logged

Global Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 325
Posts: 22498
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Posta il codice
Logged


Offline Offline
Newbie
*
Karma: 1
Posts: 10
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Questo è il codice, personalizzato anche al fine di capire dove si blocca...il blocco si ha nella fase di "Inizio lettura..."


/* Arduino to Google Docs
 created 2011
 
This example code is in the public domain.
 
http://www.open-electronics.org
 
http://www.futurashop.it
 
https://spreadsheets.google.com/formResponse?formkey=dDBMdUx3TmQ5Y2xvX2Z0V183UVp2U0E6MQ &ifq&entry.0.single=Boris&entry.2.single=Landoni&submit=Submit
Original from http://goodsite.cocolog-nifty.com/uessay/2010/07/arduinogoogle-d.html
Modified by John Missikos 11/6/11
Modified by Andrea Fainozzi 30/6/11
Modified by Boris Landoni 8/7/11
 
*/
 
#include <Ethernet.h>
#include <SPI.h>

char formkey[] = "dFVJMDBVYS02YjZwNFlPVXp4Q1dHMXc6MQ"; //Replace with your Key
byte mac[] = { 0x90,0xA2,0xDA,0x00,0x55,0x8D};  //Replace with your Ethernet shield MAC
byte ip[] = {192,168,14,62};  //The Arduino device IP address
byte subnet[] = {255,255,255,0};
byte gateway[] = {192,168,14,254};
IPAddress server(209,85,229,101); // Google IP
EthernetClient client;
 
void setup()
{
  Serial.begin(9600);
    if (Ethernet.begin(mac)==0) {
    Serial.println("Failed to connect");
  delay(1000);
  Serial.println("connecting...");
  }
}
 
void loop(){
  String data;
  data+="";
  data+="entry.0.single=";
  Serial.println("Inizio lettura...");
  data+=analogRead(A0);
  data+="&entry.1.single=";
  data+=analogRead(A1);
  data+="&submit=Submit";
  Serial.println("Fine lettura");
  
  
 
  if (client.connect(server, 80)) {
    Serial.println("connected");
 
    client.print("POST /formResponse?formkey=");
    client.print(formkey);
    client.println("&ifq HTTP/1.1");
    client.println("Host: spreadsheets.google.com");
    client.println("Content-Type: application/x-www-form-urlencoded");
    client.println("Connection: close");
    client.print("Content-Length: ");
    client.println(data.length());
    client.println();
    client.print(data);
    client.println();
 
    Serial.print("POST /formResponse?formkey=");
    Serial.print(formkey);
    Serial.println("&ifq HTTP/1.1");
    Serial.println("Host: spreadsheets.google.com");
    Serial.println("Content-Type: application/x-www-form-urlencoded");
    Serial.println("Connection: close");
    Serial.print("Content-Length: ");
    Serial.println(data.length());
    Serial.println();
    Serial.print(data);
    Serial.println();
 
  }
  delay(1000);
  if (client.connect(server, 80)==0) {
    Serial.println();
    Serial.println("disconnecting.");
    client.stop();
  }
   delay(5000);
 data ="";
}
Logged

Global Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 325
Posts: 22498
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Ad occhio non vedo cose strane....
ma non è che hai sbagliato qualche collegamento per cui magari fai un corto sul pin A0?
quando fai il collegamento, i led della scheda si spengono?

se togli l'ethernet e provi solo lo sketch di lettura del pin A0, ricevi i dati sulla seriale?
Logged


Offline Offline
Newbie
*
Karma: 1
Posts: 10
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ad occhio non vedo cose strane....
ma non è che hai sbagliato qualche collegamento per cui magari fai un corto sul pin A0?
quando fai il collegamento, i led della scheda si spengono?

se togli l'ethernet e provi solo lo sketch di lettura del pin A0, ricevi i dati sulla seriale?

Infatti neanche io vedo cose strane, non credo di aver sbagliato collegamento anche perchè è tutto scollegato, solo un LM35 su breadboard che manda la sua tensione al pin A0...
I led restano accesi, la scheda funziona fino a quel punto.
Stessa configurazione (quindi Ethernet Shield collegato) ma con un semplice sketch che mi legge il pin A0 e lo scrive sulla seriale, funziona perfettamente.
Bah, se non trovo la soluzione, ovviamente eviterò di usare tale pin smiley-sad
Enzo
Logged

Global Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 325
Posts: 22498
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Ma si blocca subito oppure dopo qualche lettura?
E lo "stesso" identico circuito messo su A1 non blocca lo sketch?
Logged


Monselice PD Italy
Offline Offline
Faraday Member
**
Karma: 26
Posts: 5491
фон Крыса
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Sicuro che A1 non venga usato per gestire la tua Eth shield ?  smiley-roll
Logged

Se corri veloce come un fulmine, ti schianterai come un tuono.

Offline Offline
Newbie
*
Karma: 1
Posts: 10
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Rispondo ad entrambi:
effettua la prima lettura e poi si blocca, il pin A0 non viene usato dalla ethernet shield, sono altri i pin che vengono usati, almeno di default.
Logged

Global Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 325
Posts: 22498
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Se una lettura su A0 la effettua allora il problema sta nel codice.
Prova sostituendo il data+="" iniziale con data="" e togli quest'ultimo in fondo al loop, non vorrei che fosse un problema di memoria
Logged


Pages: [1]   Go Up
Jump to: