Arduo Memory Reminder Medicine

:roll_eyes:
Ciao tuxduino,

Colgo l'occasione per segnalarti che nell'ottica di inserire un RTC, i pin A4 e A5 sarebbero occupati dalla trasmissione I2C. Ora sono utilizzati uno per un led e l'altro per il suono, se non ricordo male.

l'idea di utilizzare i pin A4 e A5, può andare bene, ma bisogna risolvere prima il problema per la segnalazione delle 8 medicine che si perderebbero, utilizzandoli per I2C.
Implementare un integrato di basso costo come driver led, può avere effetto, mentre implementare un LCD seriale che come minimo costa 20-30 euro, un po meno.
Conosco 74LS138 che converte da 3 a 8 bit singoli (3 to 8 line decoder), che, rivedendo il circuito, ed usandolo in combinazione con con altri 3 pin di arduino, si riuscirebbe a risparmiare 2 pin ed avere 64 led a disposizione polarizzati direttamente (8 linee x 8 righe).
Poi servirebbe una NOT per comandare il catodo delle 8 linee o righe, tipo un 40106.
Il problema è che il 78LS138 è ormai obsoleto e credo non si trovi più, in compenso ci dovrebbe essere l'Hitachi HD74HCT238, ma non capisco quanta corrente può supportare nel pin out sia verso GND che verso la VCC.
Questo invece potrebbe fare al caso nostro MC74HC259ADG, con +/-25mA output, e costa meno di 50 cent., naturalmente in internet.

Qualcuno ha idee a riguardo?

In alternativa si potrebbe usare una tastiera analogica (vedi ad esempio lo shield lcd+keypad di nuelectronics). Con un unico pin analogico si implementano facilmente 5 o 6 tasti. Non ho controllato bene lo schema, ma mi pare che questo permetterebbe di guadagnare 2 pin.

:*
Ciao BrainBooster,
utilizzare le fotoresistenze, potrebbe essere molto semplice, ma hai idea di quanti ingressi analogici occorrono? Come per i diodi!
Occorre trovare una soluzione per comandate il sensore, e leggerne lo stato, sempre con un multiplex, magari lo stesso dei led, ma con una logica specifica per controllarne la risposta.
Ad esempio, nel caso dei diodi led o fotodiodi, una volta polarizzati, si potrebbe leggere lo stato traminte un pin analogico.
Bisogna lavorarci un pò, per restare alla UNO, altrimenti, questa opzione, si dovrà implementare solo quando si passerà alla DUE o al MEGA.
I riferimenti che hai postato, indicano che per ogni fotodiodo, c'è dedicato un ingresso ed in questo caso ne avremmo bisogno di ben 32!!!!!

Per le prove, prenderemo comunque in considerazione le modalità di utilizzo dei diodi.

Pensa..... se hai compreso il funzionamento del circuito, quando il led della medicina si accende, ed in parallelo a questo, colleghiamo un diodo emitter, dall'altra parte ci sarà bisogno solo di un controllo in ingresso, perchè il led e quindi la medicina presa in considerazione sarà solo quella attivata.
Se ricevo il segnale nel fotodiodo ricevitore, la medicina non è presente, quindi eseguo una sub che ne segnala la mancanza, se non lo ricevo, la medicina si trova al suo posto, quindi attivo solo la chiamata al paziente per l'assunzione. :wink:

Per quanto riguarda la libreria "TimeAlarm", ho voluto tener separata la possibilità di settare gli allarmi in modo indipendente, senza alcun vincolo, in maniera che le variabili possano essere gestite senza alcun problema.

Ciao.

:stuck_out_tongue:
Si tuxduino, ho usato lo stesso sistema su arduoalarm ed effettivamente mi sembra la soluzione meno invasiva, anzi si guadagnano 2 o 3 pulsanti in più, che possono far comodo alla programmazione.
L'idea di usare i driver per pilotare più led, al momento mettiamola da parte.
Potrà tornarci utile, nel caso servano altri pin, come ad esempio il feedbak per i fotodiodi presenza medicina. :wink:

Ecco a proposito dei tasti... nella versione attual dell'hw io mi trovo un po' in difficoltà nel programmare le pagine di impostazione dei parametri con così pochi pulsanti... :slight_smile:

L'hw a mia disposizione attualmente include questo benedetto sheild della nuelectronics (che probabilmente avrò già nominato 100 volte... :slight_smile: ) in cui ci sono 5 tasti, disposti così:

       [·]
[·] [·]   [·]
       [·]

Se non si preme nulla, A0 legge 1023, se si preme un pulsante, il valore è inferiore grazie ad una resistenza. I vari pulsanti connettono altre res. in serie, producendo letture sempre più basse, fino all'ultimo che produce circa 0 (in realtà è poco preciso, ma bastano soglie "a maglie larghe" per discriminare con affidabilità i tasti).
Un limite è che non puoi premere due tasti contemporaneamente.

Propongo di dare questo significato:

           SU
ENTER/OK SX  DX
           GIU

Vista l'importanza della funzione e l'utenza prevista, lascierei comunque l'ACK come un bel pulsantone su un pin digitale (pin permettendo).

L'idea sarebbe di usare SX e DX per spostarsi tra le varie schermate, SU GIU per scorrere eventuali elenchi (es. allarmi), ENTER per entrare in modalità modifica (il cursore lampeggia), e a quel punto SX, DX per spostarsi tra i campi e SU GIU per modificare il valore del campo selezionato.
Di nuovo ENTER per salvare i valori ed uscire dalla modalità modifica.
Se abbiamo anche ACK si potrebbe pensare di usarlo come tasto ANNULLA (ACK/ESC), cioè farebbe uscire dalla modalità modifica ricaricando però i valori precedenti alle variazioni fatte con SU/GIU.

Qui c'è lo schema elettrico, le soglie, ecc.:

http://www.nuelectronics.com/estore/index.php?main_page=project_lcd

Ma quanti slot per medicinali contiene la scatola?

:grin: BrainBooster
Sono un totale di 32 medicine, 16 per paziente al momento.

:roll_eyes: tuxduino
Dunque, si usano 3 pin digitali dedicati ai pulsanti.
Se si usano 2 per la I2C (pin 2 e 3 di arduino), il terzo lo si usa per la colonna 4 dei led, che al momento occupa A0, che a sua volta verrà utilizzato per l'igresso analogico dei tasti. Dobbiamo spostare anche ACK/Enter su in analog, eventualmente collegandolo in parallelo al tasto select/enter.
Il fatto di non spostare i pin A5 e A6 per usare la I2C, garantisce una maggiore impedenza per evitare che i led si accendano involontariamente o comunque tendano ad eccendersi quando attiviamo la riga collegata ai 4 led polarizzati.(vedi schema)
Appena posso integro la libreria AnalogButtons per liberare i pin e modifico lo schema.

:astonished:
Sorry! Mi correggo da solo!

Il fatto di non spostare i pin A5 e A6 per usare la I2C, garantisce una maggiore impedenza per evitare che i led si accendano involontariamente o comunque tendano ad eccendersi quando attiviamo la riga collegata ai 4 led polarizzati.(vedi schema)
Appena posso integro la libreria AnalogButtons per liberare i pin e modifico lo schema.

Occorre rivedere il circuito con una certa logica per poter liberare i pin A4 e A5 da dedicare alla comunicazione I2C ed A0 da dedicare all'ingresso analogico dei pulsanti.

GGGRRRANDE CASINEN !!!!!!....... ma cerco di sistemarlo, così si può implementare eventualmente anche una eprom esterna tipo 24C64 nel caso ci sia la necessità. "questo era un consiglio che qualcuno aveva già postato in precedenza"

A questo punto, sposto anche l'uscita dell' altoparlante in una uscita digitale se è il caso.

Un saluto a tutti. :*

La eeprom esterna mi sembra non prioritaria... 1k dovrebbe ssere più che sufficiente se non si inseriscono nomi di pazienti e nomi di medicine...

azz! 32 slot significa che vi ci vuole un mux/demux (o un mega)

BrainBooster:
azz! 32 slot significa che vi ci vuole un mux/demux (o un mega)

Ma no, sono 16 celle con due led... è una 4x4, consuma 8 pin.

:slight_smile: Ecco la nuova versione del circuito del device con l'iserimento di un RTC ed una eprom esterna per memorizzare il report delle assunzioni dei medicinali.

Il circuito è stato postato anche nel sito ufficiale del FABLAB Torino.

Ciao

a questo punto aggiungici anche un PCF8574 e ti liberi i 6 pin che usa l'LCD.
Oltretutto la libreria usa gli stessi comandi

a questo punto aggiungici anche un PCF8574 e ti liberi i 6 pin che usa l'LCD.
Oltretutto la libreria usa gli stessi comandi

:astonished:

Ciao brunello,

buona idea !!! Se non ricordo male lo avevi già consigliato qualche giorno fà !

Credo proprio che questa soluzione faccia al caso nostro.

Sai mica dove reperire gli integrati ?

:roll_eyes:
Per pilotare il display, però, visto che esiste la libreria, non cambia proprio nulla?
Devo usare la stessa libreria con gli stessi comandi o un'altra?

Credo si debba dichiarare l'indirizzo di pilotaggio del PCF8574!

Ecco alcuni riferimenti che ho trovato:

http://garagelab.com/profiles/blogs/tutorial-arduino-i-o-port-expander-with-pcf8574

http://arduino.cc/playground/Main/I2CPortExpanderAndKeypads

http://arduino.cc/playground/Code/I2CPortExpanderAndLCDs

la libreria e' la stessa, ma in versione I2C liquidCrystal_i2c.
Il bello e' che usa gli stessi comandi, quindi nessuna modifica agli sketch.

L'indirizzo lo dichiari nell'assegnazione

#include <Wire.h>
#include <LiquidCrystal_I2C.h>

LiquidCrystal_I2C lcd(0x20); // Set the LCD I2C address ( 0x38 per PCF8574A )

:slight_smile:
Fantastico brunello!

Inizio ad implementare l'RTC, poi la eprom 24C64, così inizio a prendere dimestichezza con la wire.h ed i vari indirizzamenti.
Nel frattempo ordino un LCD seriale. A proposito, ne consigli uno in particolare?

:wink:
Grazie tuxduino!

L'idea è chiara, ora occorre implementare l'RTC. Sbaglio o avevi già fatto qualcosa? Riusciresti ad inserire le modifiche al SW per l'utilizzo dell'RTC, io nel frattempo, inserisco la EPROM che ho già. La versione del SW sarà la R1.0, legata quindi all' HD con stessa release R1.0

:roll_eyes: Domanda.... ma se inserisco la modifica SW per L'RTC ed in realtà non lo collego (almeno fino a quando non mi arriva) arduino continua a funzionare con una data ed ora di default o non funziona niente?

Nel frattempo ordino un LCD seriale. A proposito, ne consigli uno in particolare?

Seriale ?
Con due euro di chip ti adatti qualunque LCD parallelo, come quello che hai gia'.
PS. che abbia anche la Backlight, cosi' quando il tutto e' in standby lo spegni