Go Down

Topic: struttura dati in arduino (Read 3400 times) previous topic - next topic

matrix_77

vi assicuro che ho provato a cercare ma non riesco a trovare nulla di simile...

sto relaizzando un progettino con sd shield. In un file ho un elenco dove ogni rigo contiene:
NOME
SQUADRA
TAG RFID
e forse (ORA X) e (ORA Y) o altri campi...

da esempi in giro potrei creare tot array quanti sono i campi per cui
nome[1]=matrix
squadra[1]=ALFA;
TAG[1]="xxx"
etc...
ma se volessi creare una struttura + complessa tipo
giocatore[1].nome=....
giocatore[1].squadra=....
etc..etc...insomma come le strutture dati del C, PASCAL etc?

Altra domanda...la memoria di ARDUINO può sopportare una cosa del genere con una 60ina di giocatori?Contando che nome avrà una lunghezza di 10 caratteri, la squdra 1 carattere, e l'rfid è standard (10 byte mi sembra..)?

Grazie

astrobeed


ma se volessi creare una struttura + complessa tipo
giocatore[1].nome=....
giocatore[1].squadra=....
etc..etc...insomma come le strutture dati del C, PASCAL etc?


Dato che il compilatore di Arduino è il gcc, ovvero linguaggio C, puoi usare tutti i formati dati supportati dal C, incluse le strutture e le unioni.
Scientia potentia est

pablos71

Si che si può, non hai detto su quale arduino lo vuoi fare,
ma 60 nomi per 10 byte sono 600 Byte un arduino UNO ha 1024 byte di spazio su Eeprom, ti resta poco per altri dati. Oppure leggi i dati direttamente dalla SD ogni volta che ti servono.

ciao

 
L'esperienza è il tipo di insegnante più difficile ....
Prima ti fa l'esame e poi ti spiega la lezione.

matrix_77

come al solito avete ragione...dimentico sempre di specificare, mi sa che devo mettermi una bella firma con i dati.
Il mio Arduino è un mega rev.3.
I dati inizialmente vengono prelevati da una SD (che preparo a casa prima di ogni torneo).
Li problemi di spazio non ci sono, ma sicuramente non penso che ad ogni passaggio su RFID io possa laggere l'intero file e fare controlli e salvare dati in un altro file.

Quello che avevo immaginato di fare era:
1)leggo tutti i dati della SD e creo le mie strutture in memoria
2)faccio tutto ciò che c'è da fare
3)Alla fine del gioco salvo tutti i dati della mia struttura in un nuovo file

La mia esperienza su questo genere di gestioni con Arduino è assolutamente zero quindi se qualcuno mi dice subito che ci sono limiti che ho già superato mi fermo prima ancor di iniziare...o aggiusto il tiro con altre soluzioni.

uwefed

Sulla SD puoi mettere un fil per ogni nome cosí puoi leggere un nome alla volta e non deci fare un Cache da qualche parte.
Ciao Uwe

qsecofr

io vorrei capire come deve funzionare il programma... cosa deve fare e quali (e quanti) dati ha da leggere dalla sd. In linea di principio comunque i file esistono non per essere letti di botto ed essere posti in memoria ma per essere letti solo al bisogno. A tal proposito la domanda 1 è: quale velocità di accesso a questi dati si può ritenere sopportabile e la domanda 2 è: cosa servono questi dati e quante volte bisogna accedervi.

matrix_77

#6
Jan 02, 2013, 08:26 pm Last Edit: Jan 02, 2013, 08:30 pm by matrix_77 Reason: 1
eccomi qua...scusate il ritardo.

HW: arduino mega, sd shield, relay shield, lcd, rfid shield, RTC shield.

In definitiva il sabato so quali soci partecipano all'evento, li divido in + squadre e  registro in un file
TEAM (A - B- C - D): è la squadra scelta/assegnata
NOME (15 char): è ilnome del socio
ID RFID (10 byte): è l'id della tessera

Ogni riga del file contiene un soggetto.

La domenica faccio partire il mio box che dovrebbe caricare i dati dal file preparato.
A quel punto durante un tempo prestabilito se un socio striscia la carta attivo il modulo relay facendo suonar euna sirena, registro l'evento in un file (nome socio e orario), aggiorno una serie di variabili globali sul numero di volte che una squadra ha strisciato le card e il lasso di tempo passato tra il passaggio precedente e l'attuale.

Al termine del gioco estraggo la sd e con il pc faccio tutte le statistiche.

NUmero di soci medi: da 24 a 60 (per cui calcolato il "peso" di un record socio bisogna calcolare l'occupazione su tali numeri
Dite che ce la posso fare con la memoria?

alternative:
1)creare tanti file con nome l'id della card e aprire il file per verificare il team ma significa aggiornare 60 file diversi
2)tenere i dati nel file di cui sopra e ogni volta che c'è un passaggio aprire il file leggere i dati nel file trovare la riga corrispondente all'id della card e prelevare le informazioni necessarie.

.....vorrei tentare prima "il piano A". Ma per un'analisi seria dovrei comparare la saturazione della memoria con il tempo di acceso al file....quanto ci metto ad aprire il file, cercare in un 100naio di righe e chiudere il file?



Go Up