Arduo Memory Reminder Medicine

tuxduino:
Questo è quanto riportato all'inizio del Tone.h che ho io:

/* $Id: Tone.h 113 2010-06-16 20:16:29Z bhagman@roguerobotics.com $

A Tone Generator Library

Written by Brett Hagman
  http://www.roguerobotics.com/
  bhagman@roguerobotics.com

Ma voi avete scaricato la Tone da qui, per caso?
http://code.google.com/p/rogue-code/

Quindi non state usando la Tone integrata nell'IDE?

Potreste usare la Tone integrata nell'IDE partendo da questo:
http://arduino.cc/en/Tutorial/tone

PS:
secondo me dovreste fare la conversione all'IDE 1.0.x quanto prima. Ormai nessuno più usa l'IDE 002x, così non solo costringete gli utenti a scaricarsi la versione vecchia se vuole modificare il vostro codice, ma costringe anche voi ad un doppio lavoro: ora, di adattamento dello sketch a librerie vecchie, ed in seguito alla conversione alle nuove versioni quando gli autori delle librerie non svilupperanno più le vecchie.

:cold_sweat:
Portato il codice su piattaforma IDE 1.0.3, inserito la patch

#if ARDUINO >= 100
#include <Arduino.h>
#else
#include <wiring.h>
#endif

ma la libreria V0006 Tone.h 113 2010-06-16 , solo al richiamo della dichiarazione include, mi genera questi errori.

C:\ARDUINO\arduino-1.0.3\libraries\Tone\Tone.cpp: In member function 'void Tone::begin(uint8_t)':
C:\ARDUINO\arduino-1.0.3\libraries\Tone\Tone.cpp:121: error: 'bitWrite' was not declared in this scope
C:\ARDUINO\arduino-1.0.3\libraries\Tone\Tone.cpp:123: error: 'digitalPinToPort' was not declared in this scope
C:\ARDUINO\arduino-1.0.3\libraries\Tone\Tone.cpp:123: error: 'portOutputRegister' was not declared in this scope
C:\ARDUINO\arduino-1.0.3\libraries\Tone\Tone.cpp:124: error: 'digitalPinToBitMask' was not declared in this scope
C:\ARDUINO\arduino-1.0.3\libraries\Tone\Tone.cpp: In member function 'void Tone::play(uint16_t, uint32_t)':
C:\ARDUINO\arduino-1.0.3\libraries\Tone\Tone.cpp:198: error: 'OUTPUT' was not declared in this scope
C:\ARDUINO\arduino-1.0.3\libraries\Tone\Tone.cpp:198: error: 'pinMode' was not declared in this scope
C:\ARDUINO\arduino-1.0.3\libraries\Tone\Tone.cpp:294: error: 'bitWrite' was not declared in this scope
C:\ARDUINO\arduino-1.0.3\libraries\Tone\Tone.cpp: In member function 'void Tone::stop()':
C:\ARDUINO\arduino-1.0.3\libraries\Tone\Tone.cpp:361: error: 'digitalWrite' was not declared in this scope

:slight_smile: x brunello

con questo comando "tone(pin, frequency, duration) " si può impostare il pin.

Perfetto!
brunello DOC!!! :wink:

Mi sà che rivedrò i comandi per generare il suono, utilizzando la nuova libreria "pitches.h" fornita con il nuovo IDE.

Un saluto a tutti.
Giuseppe G.

Ma la funzione Tone integrata nel core perché non vi piace? Non l'ho capito.

:roll_eyes:
leo72 ???? stiamo parlando della stessa cosa!
userò. la libreria tone integrata che si chiama pitches.h.

Ciao

La funzione Tone integrata nell'IDE non si chiama pitches. Si chiama Tone. :stuck_out_tongue:
http://arduino.cc/en/Reference/Tone

"Pitch" in inglese significa tra le altre "tono". Il file pitches.h che tu indichi altro non è che una collezione di note predefinite, con la propria frequenza definita con un una sfilza di #define. Ma si basa sempre sull'uso della funzione Tone.
Ed è quello che ti avevo suggerito di fare io, ossia di usare il modo di generazione delle note descritto qui:
http://arduino.cc/en/Tutorial/tone

In quel tutorial trovi appunto l'elenco dei #define da salvare in un file pitches.h, caricato poi dallo sketch mostrato che usa la Tone. Ma quel file non è una libreria.

:*
credo di aver interpretato male il consiglio leo72

La funzione Tone integrata nell'IDE non si chiama pitches. Si chiama Tone. smiley-razz
http://arduino.cc/en/Reference/Tone

"Pitch" in inglese significa tra le altre "tono". Il file pitches.h che tu indichi altro non è che una collezione di note predefinite, con la propria frequenza definita con un una sfilza di #define. Ma si basa sempre sull'uso della funzione Tone.
Ed è quello che ti avevo suggerito di fare io, ossia di usare il modo di generazione delle note descritto qui:
http://arduino.cc/en/Tutorial/tone

In quel tutorial trovi appunto l'elenco dei #define da salvare in un file pitches.h, caricato poi dallo sketch mostrato che usa la Tone. Ma quel file non è una libreria.

per me il comando tone è un comando, e la libreria è la pitches.h da dichiarare con l'include, mentre prima dichiaravo la tone.h ed usavo lil comando tone nel codice.

Solo questo.

Resta comunque il fatto che per usare il comando tone "nuovo" occorre dicharare con l'include la pitches.h.

Questa credo sia l'incomprensione reciproca.

In ogni caso utilizzerò il comndo tone del nuovo IDE.

Ciao

Giuseppe G.

:astonished:
Perfetto leo72. Incomprensione mia e SOLO MIA.

Il comando tone nell'IDE 1.0.3 non ha bisogno di dichiarazioni, è già attivo. Solo nel caso si vogliano utilizzare le note con frequenze corrette allora occorre dichiarate la pitches.h.

Scusa, ma in questi giorni, mi sono dedicato molto poco al progetto per problemi di salute.

Ecco il listato corretto funzionante della RSW.1.1A per la RHD1.1A compilato su IDE 1.0.3 che sfrutta il display con il bus I2C.

PS.: Ho dovuto inserire una modifica per evitare il refresh continuo del display, che ora lavorando in seriale, rallenterebbe il sistema notevolmente, con la variabile reflcd che se = 1 visualizza il refresh ogni 150 cicli del codice. :grin:

Un saluto a tutti e un Buon Natale a tutta la comunity.

Giuseppe G.

A_M_R_1_1A.ino (35.3 KB)

Era quello che cercavo di farti capire, ma probabilmente è anche colpa mia che non mi sono riuscito a spiegare come volevo :sweat_smile:
Cmq vedi che così non devi includere nessun software extra: usando le funzioni integrate tutti sono capaci di sentire i suoni del tuo sketch senza dover cercare librerie addizionali.

Scusa, ma in questi giorni, mi sono dedicato molto poco al progetto per problemi di salute.

Spero per malanni di stagione.

Un saluto a tutti e un Buon Natale a tutta la comunity.

Anche a te :wink:

:slight_smile:
Pensavate mi fossi arreso ?!? Un buon anno a tutti !

In questi giorni, sono purtroppo stato impegnato per problemi di salute di un famigliare.
Ho comunque testato l'ultima release del progetto con l'hardware qui sotto riportato, e devo dire che non ho riscontrato problemi di notevole importanza o bugs particolari, tranne un leggero rallentamento del refresh del display, dovuto alla modalità di gestione via bus.

Stavo pensando di inserire una funzione che gestisca una sorta di report, per memorizzare su eprom esterna le mancate assunzione dei medicinali, verificandole poi con un visualizzatore specifico che mi permetterà di cancellare eventuali segnalazioni.

In un secondo momento, pensavo di poter inserire un comando con specifica funzione di upload/download di configurazione dei parametri ed allarmi, per poter fare un backup della eprom interna ed eventualmente un ripristino. Questa poi da utilizzare con una comunicazione ETH per supervisionare ed aggiornare il device via internet.

Qualcuno ha idee a riguardo ed in particolare per la gestione sulla sicurezza della comunicazione?
(PS.: per Arduino Uno credo non si possa realizzare, perchè servono almeno 6 pin per gestire l'ETH giusto?)

Un ringraziamento anticipato ed un saluto a tutti.

Giuseppe G. :wink:

(PS.: per Arduino Uno credo non si possa realizzare, perchè servono almeno 6 pin per gestire l'ETH giusto?)

4 pin. Da io10 a io13.
piu' il Pin io4 se usi la SD CARD

:slight_smile: Ciao brunello.
Bene. quindi si può utilizzare, visto che abbiamo a disposizione 5 pin.
Occorre rivedere la mappatura dei pin per il pilotaggio dei led, visto che la ETH vuole tassativamente i pin 10-11-12-13 e 4 per funzionare.
Ma poi basta la memoria flash e sram per implementare l'ETH? Mi sà che siamo un po' tirati o addirittura fuori range!?

Al momento si occupa circa 17k di flash e rimangono poco più di 300 byte di sram.

Manca poi ancora la gestione della supervisione e la funzione della sicurezza! :*

Giunti 3 pcf8574, fatto qualche esp. A breve replico il possibile su breadboard, e si continua... :slight_smile:

:stuck_out_tongue: Ciao tuxduino!

Ok!
Pensi di utilizzare il PCF8574 anche per i led?

Bisogna vedere il bilancio dei pin. Con il PCF8574 non si può fare il tristate (mi pare) come invece con i pin diretti dell'Arduino (mi pare si chiami charlieplexing, BTW).

:roll_eyes:
Vero! Serve per forza il tristate, altrimenti i led si accendono anche quando non vengono polarizzati, visto che i pin delle linee e delle righe, con il PCF8574 potrebbero assumere solo 0V o 5V.

Aspetto allora che anche tu metta in funzione il device di test, per vedere poi quali upgrade portare avanti al progetto.

PS.: Che ne pensi di quelli mensionati nel post precedente ? :blush:

Se ti riferisci al discorso ethernet, non ho esperienza su quel fronte. Mi sembra un'idea molto interessante ma non so se restino sufficienti risorse sulla 328 per gestire tutto... Mi riferisco in particolare alla RAM. Inoltre c'è un problema di costi e di quale hardware utilizzare: arduino ethernet, breakout board, ethernet shield ufficiale... Poi lo metti col cavo o wifi ?

Come ho detto, per me è un campo tutto da sperimentare a prescindere dall'AMR.

:roll_eyes:
Qualcuno ha qualche idea / consiglio per eventuali upgrade del device, anche per quelli già mensionati ?

Un saluto a tutti.
Giuseppe G.

:slight_smile:
Un saluto a tutti. Scusate il ritardo !!!
Faccio un passo indietro alla R05i, anche perchè l'evoluzione diventa truppo costosa (Mega + Shield time e Shield ETH + driver).

Ho portato degli upgrade di perfezionamento e risoluzione bug non importanti ma comunque fastidiosi, passando alla revisione R05J1 e poi alla R05J2 che si sposa con il primo progetto hardware Arduo Memory Reminder R.0.0 composto da Arduino Uno, display LCD, 32 led, 3 tasti, una batteria tampone, un alimentatore e qualche resistenza e condensatore per non superare i 50Euro di costo complessivo.

Le modifiche riportate in questa release sono le seguenti.

1)Ho inserito il comando per attivare un telecomando esterno, sfruttando i pin di ingresso dei pulsanti UP e DW che si portano contemporaneamente a +5V in situazione di allarme. Questo mi attiva un telecomando esterno che trasmette il segnale via radio, in maniera che io possa posizionare il ricevitore dove voglio in casa per poter avvisare il paziente anche se non si trova davanti al device.

2)Ho inserito una funzione che mi permette di memorizzare su eprom le medicine non assunte durante la giornata, in maniera da poter verificare la dimenticanza, semplicemente premendo il pulsante di ACK/Enter in modalità di standby.
Vengono così scorsi tutti e 32 gli allarmi con la relativa visualizzazione dei medicinali, dove se assunti correttamente, viene visualizzato "OK", in caso contrario "Skip".

3)Sistemato il bug accensione led medicine fisso durante configurazione sistema, dopo allarme acquisito.Normalmente si spegneva dopo 1 minuto, ma in quel caso, rimaneva acceso fino al prossimo allarme.

4)Sistemato il bug accensione led medicine fisso durante configurazione allarmi, dopo allarme acquisito.Normalmente si spegneva dopo 1 minuto, ma in quel caso, rimaneva acceso fino al prossimo allarme.

5)Rimossa la libreria "tone.h" ed utilizzato lo standard IDE1.0.3.

6)Aggiunto l'esecuzione dell'audio selezionato durante la configurazione per udire il segnale ed accensione di tutti i led del paziente attivo.

7)Sistemato bug visualizzazione medicine durante selezione dal paziente 1 al 2.

8)Cambiato le note audio a basse frequenze, per persone anziane.

La nuova versione software, la potete scaricare qui sotto.

Ciao. :wink:
Giuseppe G.

A_M_R_05J2.ino (34.9 KB)