Go Down

Topic: Arduo Memory Reminder Medicine (Read 17 times) previous topic - next topic

Giuseppe G.

;) Ok.

Aspetto un tuo feedback. Grazie.
Un saluto a tutta la comunità.
Giuseppe G.

tuxduino

La cosa mi ha preso un po' la mano... ;-)

Il programma è ancora poco "pulito" e incompleto per mancanza di tempo. Descrivo brevemente le features attuali.

Impostazione dell'ora tramite seriale con comando "T". Esempio:

Code: [Select]

T2012-11-13 18:16:00


Imposta data e ora al 13 novembre 2012, ore 18 e 16 e 0 secondi.
Se si collega l'RTC ai pin opportuni e si de-commenta il #define HAS_RTC nella parte iniziale dello sketch, mantiene data e ora indefinitamente.

Inserimento degli allarmi tramite seriale con comando "A". Esempio:
Code: [Select]

A18:15P01M02


Imposta un allarme giornaliero alle 18:15, per il paziente 01 e la medicina 02.
Sul display vengono mostrati il nome del paziente e il nome della medicina.
Questi nomi attualmente sono fissati nel codice. In futuro dovranno essere gestibili in modo dinamico come gli allarmi (impostabili da seriale) e memorizzabili su eeprom.
Premendo il puslante di ack l'allarme sparisce dal display.

Elenco degli allarmi: L
Cancellazione degli allarmi: C
Caricamento degli allarmi da eeprom: R (non necessario comunque perché li ricarica ad ogni avvio o reset)
Salvataggio degli allarmi su eeprom: S
Elenco degli allarmi in formato "macchina", per una futura lettura su PC: D

Quindi ricapitolando per memorizzare una serie di allarmi su eeprom si fa così:
1) inserire uno ad uno gli allarmi desiderati con il comando A descritto prima
2) una volta terminato, mandare il comando S per salvarli in eeprom.
3) Fatto: d'ora in poi gli allarmi verranno letti da eeprom.

Si possono memorizzare più allarmi con gli stessi valori ora:minuto.

Note hardware:
il mio "pulsante" è un tastierino analogico, quindi per me la condizione di "premuto" significa che leggendo il canale A0 leggo un valore al di sotto di una certa soglia. Nel caso di un pulsante digitale bisogna modificare la funzione ackButtonPressed() in modo che legga lo stato alto o basso di un pin digitale (se si usa una resistenza di pullup lo stato premuto è LOW).

La segnalazione di un allarme avviene per ora soltanto tramite una scritta sul display. Ovviamente in futuro bisognerà copiare il codice del programma originale che interagisce con i led e i buzzer...

Note software:
l'allarme è una struct, l'elenco degli allarmi è un array di struct, intorno al quale però ho costruito una classe per rendere il codice più maneggevole. L'ho scritto un po' di fretta, quindi se avrò più tempo nei prossimi giorni cercherò di migliorarlo.
Ho cercato di abbondare con i commenti per rendere il tutto più comprensibile.

Giuseppe G.

:smiley-eek:  wow! da paura!

Dalle descrizioni che dai, hai dedicato un bel pò di tempo al progetto! Bravo!
Darò un'occhiata e se riesco provvedo all'inserimento del codice su A.M.R. R05d con l'implementazione del comando dei led.

Ciao.
Un saluto a tutta la comunità.
Giuseppe G.

tuxduino

Preso dall'entusiasmo, temo di essere entrato un po' troppo "a gamba tesa"  :P
Il fatto è che avevo scritto qualcosa di simile l'anno scorso, per cui oltre a qualche idea nuova ho riciclato anche qualche "pensata" vecchia ma implementata in modo nuovo...

Credo che potrei essere maggiormente d'aiuto, almeno ora, con piccole migliorie mirate al tuo codice, e/o rispondendo a tue domande specifiche...

(ho comunque intenzione di portare avanti il codice che ho appena postato :) )

Giuseppe G.

Quote
(ho comunque intenzione di portare avanti il codice che ho appena postato smiley )


Ciao tuxduino.  :smiley-mr-green:

Intanto ottimo lavoro scrupoloso che determina interesse al progetto ArduoMemoryReminder. Grazie!

La "gamba tesa" spesso è fonte di miglioramento, come credo in questo caso.

Osservando il tuo post, ed in particolare il codice fornito, occorre chiarire e determinare lacuni aspetti del progetto.

1) La programmabilità del device, che dovrà essere di semplice intuizione, possibilmente senza PC (il PC si userà solo per verifiche e/o programmazione)
2) La funzionalita e la comprensione del device che verrà utilizzato da persone con problemi di varia natura
3) Lo spazio disponibile per il codice hex da caricare su arduino Uno.


Premessa:
Comincio con il chiederti se hai postato tutto correttamente o se manca qualcosa, perchè caricandolo sull'IDE 1.0.1, compreso le librerie "Alarms" e "Alarm" mi dà errore su:

// Oggetto che gesetisce l'elenco degli allarmi.
Alarms alarms;

Segnalando:
LCDDailyAlarmClock:446: error: 'alarms' was not declared in this scope

"Ricorda che non sono esperto nell'utilizzo di librerie ed IDE"


In riferimento al Punto 1:
"Poco rilevante al momento, il codice non prevede ancora una cfg dei parametri"

In riferimento al Punto 2:
"Tenere presente che una volta funzionante, il dispositivo sarà utilizzato da persone diversamente abili o con problemi di memoria, quindi il paziente non dovrà preoccuparsi di fare nulla al di fuori della pressione del pulsante ACK per consentire al device di memorizzare l'assunzione del medicinale."

In riferimento al Punto 3:
"Con la gestione delle variabili char, sei sicuro che la UNO supporti almeno 64 di queste da 10-15 caratteri ciascuna + codice + eventuali implementazioni?"


Una volta definita la modalità di gestione di questi tre punti, si può procedere con l'upgrade al codice.

Sono sicuro che saprai già come gestire eventualmente il tutto.

Intanto ancora grazie per il lavoro svolto. E' bello vedere che esiste ancora qualcuno disponibile a partecipare a qualcosa di creativo ed utilie a tutti, specialmente a chi ne ha veramente bisogno.

PS.: Sei d'accordo se inserisco il tuo nickname nel progetto postato al FABLAB come (main software developer), questo invoglierebbe altri a partecipare al progetto ed a uno scambio di opinioni credo interessanti anche di un certo livello?

Giuseppe G.
Un saluto a tutta la comunità.
Giuseppe G.

Go Up