Buona sera a tutti, sono alle primissime armi, e mi trovo qui a chiede il vostro aiuto per capire e quindi via via imparare sempre di più, nell'utilizzo dell'arduino.
Ho acquistato un arduino uno R3 e un datalogger Real-time Datalog & IO shield v1.0 for Arduino della Neuelectronics http://www.nuelectronics.com/estore/index.php?main_page=product_info&cPath=1&products_id=20, ma a parte accendere i led, non ci capisco un granchè, e cioè: vorrei imparare bene ad usare il datalogger per un aapplicazioncina semplice semplice (per voi) e cioè registrare su sd il log del cambio di stato di un input: quante volte un input è passato dallo stato 1 a zero e viceversa (simultato tramite un pulsantino come input). Il log dovrebbe tracciare data, ora e lo stato (aperto/chiuso oppure alto/basso oppure acceso/spento)..
Non so se sono riuscito a spiegarmi.
Ho letto e cercato di eseguire ciò che nel sito dove ho acuistato lo shield in questione, ma non ne vado fuori.
Per favore, riuscite ad auitarmi?
Cerca di essere più preciso: hai scritto o almeno provato a compilare ed eseguire qualche sketch ? Quali sono, se li hai provati, le parti degli esempi che non comprendi ? Qual è il tuo livello di conoscenza del C/C++ ?
ma tu puoi usare la libreria SD inclusa nell'IDE, che contiene anche esempi di come usare una schedina SD. Guarda poi gli esempi di input, sempre allegati all'IDE, metti tutto insieme e scrivi il codice che poi lo guardiamo.
Dimenticavo: come avrai notato lo shield in questione ha due periferiche: la scheda sd e l'RTC (real time clock). Il mio consiglio (parlo per esperienza personale ) è di iniziare a prendere confidenza con le necessarie librerie una alla volta (gli esempi inclusi nell'installazione di Arduino sono molto utili in questo senso).
burzatta:
Si ho provato a caricare gli esempi ma non succede niente; nella sd (che ho formattato fat e che è da 512mb)non c'è scritto nulla.
Grazie
Cosa intendi dire con "non succede niente" ? Quale/i esempi/o hai caricato ? Se uno sketch di esempio necessita di "qualcosa" sulla sd è sufficiente creare qualche file di testo con un PC ed inserire poi la scheda sull'Arduino. Occhio al tipo di formattazione, però: se ricordo bene, le librerie disponibili per Arduino supportano soltanto il formato FAT16. Sono da escludere quindi schede di memoria superiori ad 1GB (a dire il vero mi pare funzionino anche le 2GB, ma non sono sicuro al 100%).
Ragazzi,
ho provato l'esempio presente nell'ide di arduino (Datalogger con un solo input un pulsante al posto dei 3), ma non funziona, il serial monitor mi dice:
"Initializing SD card...Card failed, or not present
error opening datalog.txt
error opening datalog.txt"
Premetto che la sd è una micro sd con adattatore, è una Dikon micro sd da 512mb formattata fat16 e con un file nominato appunto datalog.txt
// On the Ethernet Shield, CS is pin 4. Note that even if it's not
// used as the CS pin, the hardware CS pin (10 on most Arduino boards,
// 53 on the Mega) must be left as an output or the SD library
// functions will not work.
const int chipSelect = 4;
Ho provato a leggere lo schema del tuo shield: CS è PD5, che mi pare corrisponda all'IO n. 5 della scheda UNO R3. Quindi credo che al posto del 4 tu debba mettere 5. Tutto al condizionale perché potrei aver preso un granchio
Ottimo, Grazie funziona!!
Il file datalog.txt è stato popolato da dei numeri...
Ora però avrei un altro problema, e cioè capire come popolare il file con data, ora e stato (che può essere acceso o spento)
pablos lo sketch è il seguente: (è quello dell'esempio dell'ide di arduino uno r3)
#include <SD.h>
const int chipSelect = 5;
void setup()
{
Serial.begin(9600);
Serial.print("Initializing SD card...");
// make sure that the default chip select pin is set to
// output, even if you don't use it:
pinMode(10, OUTPUT);
// see if the card is present and can be initialized:
if (!SD.begin(chipSelect)) {
Serial.println("Card failed, or not present");
// don't do anything more:
return;
}
Serial.println("card initialized.");
}
void loop()
{
// make a string for assembling the data to log:
String dataString = "";
// read three sensors and append to the string:
for (int analogPin = 0; analogPin < 3; analogPin++) {
int sensor = analogRead(analogPin);
dataString += String(sensor);
if (analogPin < 2) {
dataString += ",";
}
}
// open the file. note that only one file can be open at a time,
// so you have to close this one before opening another.
File dataFile = SD.open("SN123456.txt", FILE_WRITE);
// if the file is available, write to it:
if (dataFile) {
dataFile.println(dataString);
dataFile.close();
// print to the serial port too:
Serial.println(dataString);
}
// if the file isn't open, pop up an error:
else {
Serial.println("error opening datalog.txt");
}
}
ok è il dataString che devi costruire con davanti l'ora, colleghi tutto insieme e verrà stampata anche l'ora
solo che non hai miscelato lo sketch del timer io non avendolo non posso dirti di +, posso dirti che la stringa finale prima di essere scritta dovrà essere
String ora =00;
String minuti=00;
String secondi=00;
dataString = ora + ":" + minuti + ":" + secondi + " > " + dataString ;
prova a mettere questo dove trovi
if (analogPin < 2) {
dataString += ",";
}
ovviamente quando avrai implementato l'orologio al posto degli 00 dovrai mettere il get_hour get_minute ... ecc
mi da questo errore in compilazione:
C:\Documents and Settings\Fra\Desktop\ARDUINO\arduino-1.0-windows\arduino-1.0\hardware\arduino\cores\arduino\dht11.c:3:22: error: wprogram.h: No such file or directory
C:\Documents and Settings\Fra\Desktop\ARDUINO\arduino-1.0-windows\arduino-1.0\hardware\arduino\cores\arduino\dht11.c:18: error: expected '=', ',', ';', 'asm' or 'attribute' before 'read_dht11_dat'
C:\Documents and Settings\Fra\Desktop\ARDUINO\arduino-1.0-windows\arduino-1.0\hardware\arduino\cores\arduino\dht11.c:39: error: expected ')' before '*' token