Go Down

Topic: salvare valori temperatura (Read 1 time) previous topic - next topic

lupo95

ciao a tutti :)
ho creato un piccolo progetto con dei led, un rgb un termistore e una fotoresistenza
in che modo posso salvare i dati della temperatura e poi scaricarli sul computer??
devo per forza usare una memory card?
grazie in anticipo :)

ratto93

Puoi anche salvarli su eeprom e poi tramite seriale li leggi li importi ad esempio su excell e finita la lettura la cancelli, solo che la eeprom ha un numero di scritture cancellazioni limitate occhio....
oppure usi una EEPROM o FRAM esterna ad arduino ma la cosa si complica più che ad usare una SD
Se corri veloce come un fulmine, ti schianterai come un tuono.

lupo95

e come farei a usare una sd?
mi verrebbe a costare molto?
ho sempre avuto un dubbio:quando metto una shield attaccata all'arduino uno mi usa tutti i pin concui l'attacco??

pablos

Non ti verrebbe a costare molto, puoi fare tu uno shield  con i dovuti partitori e la SD oppure prenderlo già fatto.
Se hai uno shield ethernet ancora meglio, puoi mandare i dati su "google spreadsheet" sono 5 Gb di spazio free per ogni occount google. Vedresti i dati on-line da qualsiasi pc in tempo reale con grafici ecc.
no comment

lupo95

a me bastava semplicemente salvarli :)
se no creando un programma in visual basic x il computer ke riceva i valori??
so che si può fare ma nn ho idea di come farlo :)

pablos

Ti assicuro che non è difficile

http://www.0ex.it/2012/06/adattarore-sd-microsd-sdhc-per-arduino-p1/
http://arduino.cc/forum/index.php?topic=8863.0
http://www.roland-riegel.de/sd-reader/index.html

http://www.logicaprogrammabile.it/arduino-ethernet-memoria-scheda-micro-sd/

no comment

lupo95

ok grazie :) adesso quando avro tempo(non prima di sabato perchè parto per una gita scolasica a praga) cercherò di guardarci e di capirci qualcosa

uwefed

Dipende tutto da quanti dati devi memorizzare.
L' eeprom interno al Arduino é da 1KByte.
Gli EEprom esterni sono fino a un centinaio di kByte
Le schedine SD sono fino a 2GByte, quelle SDHC fino a 32GByte
Ciao Uwe

lupo95

@uwefed ok per ora non posso comprare la shield sd quindi penso di usare l'eproom
come faccio a salvare i dati e soprattutto poi per leggerli come faccio??
quanti dati posso salvare con un kbyte? e se spengo l'arduino si cancellano?
grazie mille :)

leo72


@uwefed ok per ora non posso comprare la shield sd quindi penso di usare l'eproom
come faccio a salvare i dati e soprattutto poi per leggerli come faccio??

Per salvarli e leggerli è facile, usi la libreria EEPROM:
http://www.arduino.cc/en/Reference/EEPROM

Per spedirli al computer devi avere una connessione attiva: se non puoi comprarti la Ethernet, l'alternativa è attaccare l'Arduino alla seriale e poi spedire i dati. Però poi devi scriverti un software lato PC che riceva questi dati e li salvi da qualche parte.

Quote

quanti dati posso salvare con un kbyte? e se spengo l'arduino si cancellano?
grazie mille :)

Sulla quantità dipende da cosa salvi ed in che formato.
Se li salvi su memorie non volatili (Flash, Eeprom), i dati non li perdi staccando l'alimentazione.

lupo95

grazie mille
c'è una cosa che nn ho capito io ho una variabile chiamata temperatura in cui vengono letti gli ononimi dati
io come faccio a scriverli sulla eproom?
cioè sul link ke mi hai dato c'è scritto "EEPROM.write(i, i);" ma io devo solo mettere la temperatura come faccio??

leo72

La temperatura sarà la lettura di un sensore salvata in una variabile. Devi salvare la variabile.
Se la variabile è di tipo int, devi salvarla scomposta nei suoi 2 byte, byte basso e byte alto:
http://arduino.cc/en/Reference/LowByte
http://arduino.cc/en/Reference/HighByte

amario57

Tempo fa ho fatto questo sketch in Processing, per salvare appunto dei valori provenienti dalla seriale di Arduino riguardanti la misurazione della temperatura, è facilmente modificabile per ogni esigenza:
Code: [Select]
// Scrittura su file da Arduino
import processing.serial.*;
Serial mySerial;
PrintWriter output;

void setup() {
  mySerial = new Serial( this, Serial.list()[1], 9600 );  // seleziona la porta seriale di Arduino e la velocitÃ
  mySerial.bufferUntil('\n'); // Buffer seriale fino a new line
  output = createWriter( "dati.txt" );  // Nome file dati (lo scrive dove risiede il programma)
}

void draw() {
  // Imposta dati con data e tempo
  int gi = day();    // giorno
  int me = month();  // mese
  int an = year();   // anno
  int se = second(); // secondi
  int mn = minute(); // minuti
  int or = hour();   // ore

  if (mySerial.available() > 0 ) {
    String value = mySerial.readStringUntil('\n');   // legge dati da seriale fino a new line
    if ( value != null ) {
      // scrive dato tempo oppure aggiungere anche data
      String s = String.valueOf(or)+":"+String.valueOf(mn)+"."+String.valueOf(se)+" "; 
      output.print( s );

      output.print( value );   // scrive su file lettura da seriale da Arduino

    }
  }
}

// Esce dal programma alla pressione di qualsiasi tasto
void keyPressed() {
  output.flush(); // Scrive i dati rimanenti su file
  output.close(); // Chiude il file
  exit(); // Esce dal programma
}


Go Up