Show Posts
Pages: 1 ... 5 6 [7] 8 9 ... 25
91  International / Generale / Re: Lettura Tasti con PCF8574 on: February 01, 2014, 04:09:12 am
Ciao Etemenanki,
grazie, mi stai suggerendo quindi un circuito come quello in allegato?

Ciao Riccardo.
92  International / Generale / Re: Lettura Tasti con PCF8574 on: February 01, 2014, 03:41:20 am
1. Ho visto che esegui un blocco di codice solo se la pressione del pulsante è avvenuta a più di 200 ms dalla precedente. E' una specie di debounce, per evitare che l'utente si diverta a pigiare sui pulsantini magari 2 volte, o mi sbaglio?
Comunque, tu fai un'assegnazione a oldtasto del valore di millis, poi esegui tutta la pappardella del blocco di codice. Se la metti in fondo al blocco, quell'assegnazione, in questo modo la prox volta il controllo viene eseguito su 200 ms dal termine del blocco di codice. Consideri, cioè, una specie di "comporto" tutto qui  smiley-wink

2. if (counter) equivale ad un if(counter>=1) oppure a if(counter!=0).
Non vedo perché non debba funzionare, a meno che non abbia tralasciato qualche altra porzione del tuo codice che fa qualcos'altro.

Ciao Leo,
ora ho compreso la parte 1 ed ho modificato lo sketch.
Per la parte 2, non ho tralasciato nessuna parte di codice.
Provo a spiegare cosa succede nello sketch:
1. premo il tasto e la ISR statotasto() incrementa counter a 1
2. leggitasto verifica counter ed esegue la lettura del pcf, qui di fatto può effettivamente valere solo la condizione if (counter == 1) ciò è dovuto al fatto che la ISR si riattiva anche se rilascio a causa del fatto che INT del PCF si disattiva e dopo una lettura torna basso ed ecco quindi che la condizione if (counter) equivale ad un if(counter>=1) oppure a if(counter!=0) mi fa rientrare nella lettura effettiva del tasto e non reset del PCF che di fatto esegue si una lettura ma ha lo scopo di riattivare appunto l'INT del PCF, non o se sono riuscito a farmi capire, ma di fatto è ciò che succede.
3. rilascio il tasto INT del PCF va basso per il motivo di cui sopra, la ISR statotasto incrementa nuovamente counter che diventa 2 ed attiva l'else in cui resetto il pcf con una lettura a vuoto ed azzero la variabile tasto.

Complimenti e grazie per la condivisione.
Una cosa pero'
Nel titolo citi pcf8574 ma nel post PCF8774AP, quale usi?

Hai ragione, in effetti esistono due versioni di questo expander: PCF8574 e PCF8574A, i miei hanno anche una P finale ma non so cosa significhi.
Di fatto in ogni caso le differenza tra le due versioni è unicamente nell'indirizzamento degli IC, in allegato ti ho messo delle immagini che spero spieghino quello che ho appena scritto  smiley-wink

Ciao Riccardo.

P.S. In allegato anche il codice corretto con il suggerimento di Leo sulla variabile oldtasto.

93  International / Generale / Re: Lettura Tasti con PCF8574 on: January 31, 2014, 02:19:05 pm
Intanto mi segno e ti faccio i complimenti per la realizzazione.
Nel fine settimana leggo tutto con calma.

Grazie Paolo, aspetto le tue conclusioni  smiley

Complimenti!  smiley

Grazie, ma non è che abbia fatto poi chissa cosa, ho voluto però condividere per i principianti come me..

Complimenti per il progettino.
Due suggerimenti, sono sciocchezze, ma mi preme dirle perché poi te le ritrovi anche in altri progetti  smiley-wink
1. Quando nei casi in cui usi millis per il debounce, io suggerisco di fare l'assegnazione alla variabile che contiene il momento dell'attivazione all'uscita del blocco di codice.
Tu fai un oldtasto = millis() prima di eseguire diverse cose che ti portano via del tempo, comprese accesi sul bus I2C e scritture seriali. Perdi poco, ma quel poco in caso di un intoppo potrebbe diventare molto. E sfalsarti il dato.

2. Fai un controllo if (counter == 1) per controllare se è stato premuto un tasto, ma c'è la possibilità che counter possa diventare maggiore di 1?
Per evitare questi dubbi, farei un controllo generico sul fatto che counter sia 0 o maggiore, quindi metterei un semplice if(counter), che risulta vero in tutti i casi in cui counter abbia un valore diverso da 0.

Grazie Leo, ma perdonami se non ho capito bene cosa vuoi dirmi...
1. Non ho usato millis per fare il debounce, di fatto è proprio quello che ho cercato di evitare complicando, ma nemmeno poi tanto, la parte hardware, in realtà oldtasto lo uso per fare un timing sulla ripetizione del valore del tasto nel caso lo si tenga premuto, appena lascio tasto torna=0.
2. Appena ti ho letto, ho subito pensato che era così, ma appena ho provato, leggitasto() ha smesso di funzionare, ma non ho capito perché...  smiley-red

Ciao Riccardo.
94  International / Generale / Lettura Tasti con PCF8574 on: January 31, 2014, 12:55:53 pm
Ciao a tutti,  smiley
purtroppo, con il mio progetto, per motivi vari sono un po’ fermo, così mi concentro un po’ sulle ottimizzazioni…
Una cosa che volevo fare da tempo, era migliorare la lettura dei tasti: attualmente, nel mio sketch, vengono letti utilizzando la libreria IOexp che interroga a ripetizione il PCF8774AP a cui sono collegati i tasti sperando che prima o poi venga premuto un tasto, di fatto il bus I2C è perennemente spazzolato inutilmente e questo non mi piaceva affatto…
L’obiettivo quindi era interrogare il PCF incriminato solo se effettivamente premo un tasto ed ho avuto il compito facilitato dal PCF stesso che ha un bel piedino INT open drain, ovvero attivo quando è basso (ha bisogno di una R di pull up da 4K7).
Mi ha un po’ messo in difficoltà perché a causa di un’errata traduzione del datasheet, non avevo capito che ad ogni lettura l’INT si disabilita, poi però è andato tutto bene, in allegato c’è lo sketch (che poi implementerò in quello del controller), nel quale è incluso anche l’utilizzo di un buzzer per avere un feedback sonoro quando viene premuto un tasto.
Non contento del lavoro fatto, mi sono dedicato sul lato hardware al debouncing dei tasti, attualmente, sempre nel mio progetto, uso un semplice circuito basato su RC, ma non ero soddisfatto, così ho voluto migliorare anche questa parte; ho fatto un po’ di ricerche ed alla fine ho scelto di realizzare quello che ho trovato a questo link: http://www.ikalogic.com/de-bouncing-circuits/
Fatte un po’ di prove su breadboard, ho disegnato il circuitino ed il PCB in allegato che poi diventerà il modulo tasti del mio progetto. Non sono ancora però sicuro di aver fatto un buon lavoro, così eccomi a chiedervi cosa ne pensate.  smiley-red
Grazie in anticipo per il tempo che vorrete dedicarmi.

Documentazione:
http://www.ti.com/lit/ds/symlink/pcf8574a.pdf
http://www.settorezero.com/wordpress/utilizzare-l-io-expander-pcf8574/
http://www.ti.com/lit/ml/scyb031/scyb031.pdf
http://www.ikalogic.com/de-bouncing-circuits/

P.S. Ho postato in “Generale” generale perché tratto sia di hardware che di software e non nel topic del mio progetto, perché ho pensato che l’input con i tasti così come l’ho realizzato può tornare utile in altre applicazioni, spero di aver fatto la cosa giusta.


95  International / Megatopic / Re: Ardu-Acquarium Controller v. 3.0 on: January 18, 2014, 02:02:16 pm
Ciao Michele,
perdonami ma no ti capisco, cosa intendi per

ma non riesco a capire dove e come inserire ImpostaDosatore

Se intendi la funzione/procedura la puoi mettere ovunque purché al di fuori del setup e del loop. poi la richiami nel loop dove ti serve, di più non so cosa dirti.
Mi pare di capire poi che userai una seconda scheda relè giusto? non so come funziona un dosatore, ma sono un pò perplesso...
poi che senso ha modificare tutto lo scketch principale se ti manca ancora la procedura/funzione che pilota i dosatori e la procedura/funzione che acquisisce i dati di funzionamento dei dosatori, diciamo che quest'ultima la puoi non fare se inserisci dati direttamente nello sketch, rimane scomodo pero questo caso perché ogni volta che vuoi aggiornare i dati in questione devi riflashare Arduino.
In pratica ti ridò il consiglio che ti ho dato inizialmente, non partire dalla fine, scrivi prima cio che ti serve per far funzionare i dosatori quando avrai qualcosa di funzionante modifichi lo sketch principale per inserire ciò che hai fatto.
Ciao e buon fine settimana  smiley
96  International / Megatopic / Re: Ardu-Acquarium Controller v. 3.0 on: January 18, 2014, 01:11:31 pm
Si si , lo avevo capito questo, me lo guardo bene, ma sono ormai abbastanza avanti col mio progetto, però magari ti rubo qualche idea...  smiley-mr-green smiley-mr-green smiley-mr-green
Rimane il fatto che sono colpito dalla tua competenza in campo elttronico, sembra quasi che la respiri ti invidio un pochino...
97  International / Megatopic / Re: Ardu-Acquarium Controller v. 3.0 on: January 18, 2014, 11:45:58 am
Ciao elleffe,

Chiedo anche se è possibile usare l’Arduino Mega invece che l’Arduino Uno.

Si è possibile devi solo combiare i pin di SDA e SCL che sulla UNO corrispondono ai pin A4 e A5, mentre sulla mega corrispondono ai pin 20 e 21, naturalmente poi devi compilare per la mega, non credo che serva latro, magari se qualche guru ti legge ti saprà dire meglio.

Ho potuto leggere tutte le pagine di questo progetto e se mi è permesso vorrei capire il perché è stato pensato di usare quel sistema di controllo livelli, non era più semplice mettere un sensore di massima e uno di minima per eseguire i rabbocchi?

Con il tuo sistema hai un unico rabbocco fisso, e se vuoi cambiare, devi regolare fisicamente i sensori in vasca, con il ns sistema invece hai lettura in continuo del livello dell'acqua qualunque esso sia, quindi si può usare come osmo regolatore, o per programmare cambi di diverse quantità schedulando nel tempo parziali giornalieri o settimanali cambiando a piacimento via software le quantità d'acqua e tutto con un unico sensore...

La mia non vuole assolutamente essere una critica, ma visto che il progetto è ancora in fase di collaudo fate le giuste scelte.

Ogni critica o suggerimento, sono sempre bene accetti, quindi non farti scrupoli se ti viene in mente altro  smiley


Accipicchia Etemenanki questo mi era sfuggito, vedo di guardarmelo bene bene, grazie infinite per averlo condiviso.  smiley-grin

Riccardo.

98  International / Megatopic / Re: Ardu-Acquarium Controller v. 3.0 on: January 13, 2014, 05:36:27 am
Ciao Michele,
scusa se ci metto tanto a rispondere, ma il tempo è sempre scarsissimo, iniziamo:
se vai a riga 1092 dello sketch, trovi un esempio di menù, come vedi si tratta di dichiarare un array di stringhe, dove la prima voce (blocco 0 dell’array) è l’intestazione del menù stesso, nonché l’intestazione della schermata dove scorre il menù, a seguire poi tutte le voci che ti servono per quel menù, ad esempio:

Code:
char* VociMenuDosatori[] ={"    IMP. DOSATORI",       // Intestazione e voci del menu luci
"Dosatore 1 ",
" Dosatore 2 ",
" Dosatore 3 ",
" Dosatore 4",
};

Quando richiami la funzione del menù, devi passare nell’esatto ordine questi parametri:
  • variabile che conterrà il valore scelto nel menù
  • numero delle voci del menù
  • il vettore di strighe che hai creato
In questo modo:

Code:
Scorrimenu (MenuDosatori, 4, VociMenuDosatori);

Ma lo devi fare nel loop all’interno di una struttura switch case:
Code:
switch (MenuDosatori)
{ case 0:
Scorrimenu (MenuDosatori, 4, VociMenuDosatori);
break;

case 1:
ImpostaDosatore (dosatore1);
break;

case 2:
ImpostaDosatore (dosatore2);
break;

case 3:
ImpostaDosatore (dosatore3); 
break;

case 4:
ImpostaDosatore (dosatore4);
break;
}

E’  importante che sia la variabile "MenuDosatori" che quella "Avvio" siano inizializzate a 0, la prima perché altrimenti non entri nello switch case, la seconda perché fa eseguire all’interno della funzione “Scorrimenu” la prima if, che è quella che popola il display la prima volta.
Nel display vedrai nella prima riga l’intestazione della schermata e poi le voci che scorrono quando premi i tasti su o giù, quando premi ok, “Scorrimenu” assegna alla variabile “MenuDosatori” il  valore che stai puntando ed automaticamente viene eseguito il codice all’interno di quel case.
Va da se che poi la procedura o funzione ImpostaDosatore(); te la devi creare da solo.
Spero di esserti stato utile.
Ciao.
99  International / Megatopic / Re: Ardu-Acquarium Controller v. 3.0 on: January 07, 2014, 02:52:40 am
Ciao Michele73,
mi fa piacere leggere che ti funziona tutto, anche i sensori di temperatura, che confermo essere quelli che hai linkato, anche se a breve forse verranno sostituiti con altri più performanti.
Per ciò che riguarda le modifiche che chiedi, il primo consiglio che ti do è di iniziare a testare le cose che vuoi implementare separatamente e solo quando avrai le funzioni/procedure definitive integrarle nel progetto, è quello che faccio sempre ed anche il modo migliore di procedere, altro consiglio è di attivare la pompa tramite menù senza aggiungere un altro tasto.
Il discorso dosatori mi intriga parecchio, non ho mai approfondito più di tanto, ma so che ne esistono di diversi tipi con modi di funzionamento diversi, aiutarti quindi diventa difficile, ho visto quello che hai fatto tentando di modificare il mio sketch e fin da ora ti dico di evitare come la peste il "delay()" perché letteralmente blocca il flusso dello sketch per il tempo che imposti, nell'IDE File/Esempi/02.Digital/BlinkWithoutDelay trovi un bell'esempio su come fare, ma anche il Ns. buon Leo72 ha scritto un bellissimo articolo http://www.leonardomiliani.com/2013/programmiamo-i-compiti-con-millis/ dove impari anche come evitare l'overflow di millis(), rimane il fatto che essendo io ora impegnato su ben altri fronti, compreso il dover far entrare tutto nella poca flash di Arduino, non ti posso essere molto di aiuto...
Il discorso PH è a divenire, appena definito l'uso dei nuovi sensori di temperatura, con Leouz stiamo valutando come procedere.

Ciao, tienici aggiornati sui tuoi progressi.  smiley

Riccardo.
100  International / Generale / Re: Auguri di buone feste on: December 23, 2013, 12:49:10 pm
Auguroni di vero cuore a tuttiiiiiiii!!!!
101  International / Hardware / Re: Arduino Nano V. 3.0 - Libreria Eagle on: December 23, 2013, 01:16:33 am
Scusate, ma ho dovuto correggere la posizione dei pin nel simbolo a causa di disallineamento rispetto alla griglia che creava problemi nel disegno dello schema, ora va molto meglio.
Allego sia quì che nel primo post la nuova versione.

Ciao   smiley
102  International / Hardware / Re: Arduino Nano V. 3.0 - Libreria Eagle on: December 20, 2013, 06:29:48 am
Grazie a voi,
che quotidianamente condividete generosamente la vostra esperienza e tempo libero  smiley

Buon Natale e Felice Anno Nuovo anche a voi.
103  International / Hardware / Arduino Nano V. 3.0 - Libreria Eagle on: December 20, 2013, 05:29:36 am
Ciao a tutti,
per il mio progetto, ho cercato la libreria in oggetto ma non ho trovato granché, così visto che non avevo mai creato dal nulla una libreria, ho colto l'occasione per fare un pò di esercizio.
La metto in allegato nel caso possa essere utile a qualcuno, ma anche per consigli, critiche o correzioni.

Riccardo.
104  International / Megatopic / Re: Ardu-Acquarium Controller v. 3.0 on: November 20, 2013, 01:31:45 am
@ricciweb
nello schema del circuito trovo questi componenti... che nell'elenco non ci sono, mi spieghi a cosa servono?
sono LM358 e E-TARE U4.
per quanto riguarda l'impianto d'illuminazione volevo utilizzare 4 serie di led pensi ke sia facile collegarli al tutto?

Quella parte dello schema, si riferisce alcircuito per la lettura del sensore di livello; l'LM358 è un amplificatore ooperazionale mentre E-TAPE è questo http://www.milonetech.com/uploads/eTape_Datasheet_12110215TC-8_040213.pdf per ora se vuoi puoi soprassedere, è una parte del progetto che ho momentaneamente abbandonato perché non posso testarne gli sviluppoi in caso di utilizzo perché al momento sto rifacendo la vasca, ma se vuoi divertirti, tieni presente che tutte le resistenze di quella parte dello schema, sono a film metallico con tolleranza 1% per poter ottenere la maggior precisione possibile.
Trovi più o meno tutto quello che ho fatto fino ad ora con quel sensore, una 10 post piu su.

Ciao

Riccardo
105  International / Megatopic / Re: Ardu-Acquarium Controller v. 3.0 on: November 19, 2013, 06:25:22 am
Ehm, no dai non farmelo aprire, costa un casino e poi alla fine col circuitino funziona bene lo stesso, però ti posso dire che le misurazioni, non sono influenzate dalla salinità o dalla durezza dell'acqua, perché ho fatto delle prove anche con acqua distillata e salando.
Dalle foto si capisce poco, ma è una sottile striscia di materiale plastico stagno con all'interno (si vedono in trasparenza delle striscioline di un qualche materiale, di fatto anche non alimentato, al variare del livello dell'acqua varia la resistenza misurabile ai capi del sensore (i pin rsense).

Mi piacerebbe conoscere il principio, ma non so dirti altro.

Riccardo

P.S. hai MP.
Pages: 1 ... 5 6 [7] 8 9 ... 25