Ardu-Aquarium Controller v. 3.3.1

Rinnovo i complimenti fatti sull'altro topic.
Bellissimo progetto. :grin:
Io lo proporrei per la sezione Megatopic.

Una osservazione: secondo me dovresti spostare i pin pwn 10 e 11 su altri pin pwm in modo da lasciare disponibile l'interfaccia SPI per sviluppi futuri come l'aggiunta di una Ethernet Shield.

Il codice potevi anche aggiungerlo come allegato. ]:slight_smile:

EDIT: Ho notato che c'è l'include Wprogram.h. :astonished:
Con quale versione dell'IDE lavori?

Bene, il progetto parte, speriamo che venga messo in megatopic.
Il tempo di reperire i componenti mancanti cosi mi metto in pari.

Se decido di farmi un acquario, prendo pari pari il tuo progetto.

Sbaglio o non ho visto uno schema elettrico ?

PaoloP:
Rinnovo i complimenti fatti sull'altro topic.
Bellissimo progetto. :grin:
Io lo proporrei per la sezione Megatopic.

Una osservazione: secondo me dovresti spostare i pin pwn 10 e 11 su altri pin pwm in modo da lasciare disponibile l'interfaccia SPI per sviluppi futuri come l'aggiunta di una Ethernet Shield.

Il codice potevi anche aggiungerlo come allegato. ]:slight_smile:

EDIT: Ho notato che c'è l'include Wprogram.h. :astonished:
Con quale versione dell'IDE lavori?

Ciao, grazie per i complimenti ed anche per la giusta osservazione, ma :blush: :blush: :blush: io ancora non sapevo che l'interfaccia SPI usasse quei pin, di fatto sto studiando (parolone :roll_eyes:) le cose mano a mano che le affronto, comunque approfondisco e sicuramente provvedo.
Il codice come allegato... :blush: magari mi fosse venuto in mente, tanto ma tanto tempo risparmiato!!! Provvedo :sweat_smile:
Per l'IDE, ho iniziato con la versione 022 mi pare, ma ieri ho scaricato la 1.0.3 e intendo usarla con le librerie aggiornate...

danidiscus:
Bene, il progetto parte, speriamo che venga messo in megatopic.
Il tempo di reperire i componenti mancanti cosi mi metto in pari.

Ciao Dani ti aspetto.

brunello:
Se decido di farmi un acquario, prendo pari pari il tuo progetto.

Sbaglio o non ho visto uno schema elettrico ?

E che aspetti a decidere ]:slight_smile:

Lo schema elettrico non lo hai visto perché non l'ho ancora disegnato, di fatto per il momento ho disegnato solo il PCB della scheda relé senza passare dallo schema circuitale, ma quello era semplice, sto lavorando anche su quello del display e tasti, ma di schemi elettrici ancora non ne ho fatti.
Sto usando design spark, non mi trovo malissimo, avrei voluto usare eagle, ma le limitazioni sulle dimensioni, sono una gran rottura e l'ho abbandonato subito, anche se mi piaceva molto di più.

Ciao a tutti Riccardo

Un piccolo aggiornamento:

Ho cambiato la mappatura dei pin, seguendo i consigli di PaoloP ed eliminato tutti i post del software (una roba da chiodi effetivamente), ora l'ultima versione dello sketch è allegata al post : "Ed ecco cosa attualmente fa lo sketch: " mi sembra la cosa più logica da fare, appena ho un minuto aggiorno le foto della bread.

Riccardo

O.T. Oggi mi è arrivato il kit ufficiale di Arduino... per un principiantello come me una gran bella cosa, peccato che il cavo USB sia sbagliato, secondo voi a chi chiedo in merito?
al team di Arduino o a RS dove l'ho preso?

riciweb:
O.T. Oggi mi è arrivato il kit ufficiale di Arduino... per un principiantello come me una gran bella cosa, peccato che il cavo USB sia sbagliato, secondo voi a chi chiedo in merito?
al team di Arduino o a RS dove l'ho preso?

Se era dentro la scatola chiusa al TeamArduino.
Se era accompagnato alla scatola a RS.

Potresti inserire i link dei sorgenti delle librerie che hai usato nel progetto?

Molto interessante il tuo progetto. Mi piacerebbe molto avere un acquario in casa, ma per ora non se ne parla. Ma chi sa per il futuro.
Il navigation switch navmed mi piace molto (io avevo visto anche qualli di shanpu, ma non ho trovato un distributore). Ma nel modulo hanno un connettore per un cavo piatto da 10 poli che forse non è la cos apià comoda. Se e quando farai il pcb fammelo sapere, mi piacerebbe averne qualcuno ... Magari si possono fare acquisti di gruppo risparmiando un po.
Visto che sei abbastanza avanti anche con l'interfaccia temo di non poter essere molto di aiuto.

brunialti:
Visto che sei abbastanza avanti anche con l'interfaccia temo di non poter essere molto di aiuto.

Si potrebbe progettare la versione 2 dello sketch con la tua libreria per la gestione dei menù. :wink:

PaoloP:
Se era dentro la scatola chiusa al TeamArduino.
Se era accompagnato alla scatola a RS.

Potresti inserire i link dei sorgenti delle librerie che hai usato nel progetto?

Ciao, in prima istanza ho deciso di chiamare RS e devo dire che sono dei grandi, mi spediscono gratis e subito due cavi giusti, anche se la cosa non dipende da loro in quanto i cavi era all'interno del del kit (ne ho ordinati 2, uno è per un amico).

Per i link, eccoti accontentato:

Liquidcristal_I2C - http://hmario.home.xs4all.nl/arduino/LiquidCrystal_I2C/LiquidCrystal_I2C.zip

IOexp - http://jaerder.videmogroup.org/arduino/IOexp_v09.zip

DS1307 - http://libds1307.googlecode.com/files/DS1307.zip

Dallastemperature - https://github.com/milesburton/Arduino-Temperature-Control-Library/archive/master.zip

Ad ogni modo ho aggiornato anche il topic "Scelta dei materiali:"

brunialti:
Molto interessante il tuo progetto. Mi piacerebbe molto avere un acquario in casa, ma per ora non se ne parla. Ma chi sa per il futuro.
Il navigation switch navmed mi piace molto (io avevo visto anche qualli di shanpu, ma non ho trovato un distributore). Ma nel modulo hanno un connettore per un cavo piatto da 10 poli che forse non è la cos apià comoda. Se e quando farai il pcb fammelo sapere, mi piacerebbe averne qualcuno ... Magari si possono fare acquisti di gruppo risparmiando un po.
Visto che sei abbastanza avanti anche con l'interfaccia temo di non poter essere molto di aiuto.

Magari poi ti viene l'acquolina in bocca e fai il passo, per i tasti, io li ho scelti perché oltre a piacermi, sul pannellino te la cavi con un unico foro da 32 :smiley:
In quanto all'interfaccia, ho la tua libreria e mi sono sempre riproposto di provarla, ma un pò la scarsità di tempo ed un pò il manuale tutto in inglese (una faticaccia per me :blush:) rimando in continuazione...

PaoloP:
Si potrebbe progettare la versione 2 dello sketch con la tua libreria per la gestione dei menù. :wink:

C'è ancora così tanto da fare che arriveremo alla versione 2xxxxxxxxx XD XD XD XD

Ciao Riccardo

PaoloP:
Si potrebbe progettare la versione 2 dello sketch con la tua libreria per la gestione dei menù. :wink:

infatti volevo chiedere a rici se eventualmente era possibile lavorare sulla libreria di brunialti MENWIZsarebbe comoda anche perché è molto snella

quello di snellire il codice è sicuramente un TO DO :wink:

danidiscus:
infatti volevo chiedere a rici se eventualmente era possibile lavorare sulla libreria di brunialti MENWIZsarebbe comoda anche perché è molto snella

Per me non c'é problema, si potrebbe fare il menù con la menwizz e da qesto richiamare le funzioni di inseriemnto dati che ho già fatto io, le schermate che ho creato per l'inserimento dei dati non mi sembrano malaccio, se avete altre idee dite pure, sono aperto a tutte le possibili soluzioni.

leouz:
quello di snellire il codice è sicuramente un TO DO :wink:

Caro dietologo, non ci sono dubbi su questo!!!
So che è difficile mettere le mani sul codice scritto da altri, ma se hai dato un'occhiata, da dove cominceresti?

Riccardo.

O.T. I due cavi USB sono già arrivati :astonished: che bravi a RS

Per il pannello, su internet c'è questo service (Pannelli frontali: semplicemente ottimi e rapidi | Beta LAYOUT GmbH), ma non l'ho mai provato.

Per compilare con la 1.0.3 devi modificare

void stampafrecce()          // Creata per semplificare il codice dell'impostazione di data e ora stampa semplicemente due frecce consecutive
  {
   lcd.print(0, BYTE);
   lcd.print(0, BYTE);
  }

in

void stampafrecce()          // Creata per semplificare il codice dell'impostazione di data e ora stampa semplicemente due frecce consecutive
  {
   lcd.print((byte)0);
   lcd.print((byte)0);
  }

Grazie,
ho corretto ed in realtà funziona anche con

byte frecciaalto[8] = {B00100,B01110,B11111,B00000,B00000,B00000,B00000,B00000}; //  vettore che contiene i dati per creare 
                                                                                 //  una freccia rivolta verso l'alto per 
                                                                                 //  evidenziare i dati da impostare nei
                                                                                 //  vari menu

void stampafrecce()          // Creata per semplificare il codice dell'impostazione di data e ora stampa semplicemente due frecce consecutive
  {
   lcd.write(0);
   lcd.write(0);
  }

In realtà questa è una delle tante cose che non ho capito ed ad un certo punto le ho assunte così come sono, in pratica io dichiaro un vettore chiamato frecciaalto, ma nella funzone dico srcivi 0 ????
Qualcuna sa spiegarmi perché?

Riccardo

:blush: Ecco mi auto rispondo, in setup avevo messo questa riga di comando:

lcd.createChar(0, frecciaalto);    // creo la freccia verso l'alto usando i dati del vettore frecciaalto

E' una cosa che avevo fatto chissà quanto tempo fà e l'avevo completamente dimenticata.
Scusate la domanda inutile. :blush:

Riccardo

Ciao a tutti,
ho ri-iniziato, tempo permettendo a lavorare sul controller, e siccome uno dei problemi principali che ho è la reattività dei pulsanti, ho deciso di iniziare da loro, cominciando dall'HW, in pratica, a parte le funzioni di acquisizione dei dati le funzioni che poi girano in continuazione quando il controller è operativo per il momento sono quella di mantenimento della temperatura dell'acqua e di gestione del fotoperiodo per entrambe le linee luci (sono entrambe da rivedere, soprattutto quelle delle luci).
Bene se faccio girare tutto non riesco più ad utilizzare i tasti, devo insistere parecchio prima che finalmente li legga, se commento le funzioni invece i tasti ricominciano a funzionare perfettamente, questo mi ha fatto capire che allo stato attuale delle cose, più implemento funzioni e più il problema diventerà evidente.

Avrei deciso quindi di sfruttare il piedino int del pcf collegato al pin 2 di arduino, per forzare la lettura dei tasti attraveso l'interrupt, anche se questo significa abbandonare la libreria IOexp e riscrivere una bella fetta di codice.

Secondo voi è la giusta strada?

Inoltre prima di iniziare a scrivere righe e righe di codice, volevo essere sicuro di sfruttare al meglio bus I2C, così seguendo le istruzioni di Leo in quest'altro topic (http://arduino.cc/forum/index.php/topic,138882.60.html), ho sostituito lel resistenze di pull-up del bus (prima usavo 10k), prima con valore di 2,2k e poi con valore 1k, la corrente misurata sul bus corrisponde rispettivamente 2,2 mA e 0,5mA, purtroppo non le ho da 1,5k ma i valori misurati corrispondono effettivamente ai calcoli così come suggeriti da Leo, quello che non mi torna è che pensavo seguendo i consigli sia di PaoloP che di LEO che disabilitando le pull-up interne, avrei visto i valori di corrente cambiare, invece non cambia nulla, con o senza pull-up la corrente misurata è sempre la stessa…
Mi viene il dubbio che l’attivazione delle pull-up influisca solo sulla frequenza di lavoro del bus, ma non avendo un oscilloscopio, non posso verificare… sempre che non abbia dette una Riccardata.

C'è qualcuno che mi sa dire qualcosa?

Grazie Riccardo

Le pull-up interne vengono attivate dalla libreria con la chiamata a Wire.begin(); quindi qualsiasi settaggio per disabilitarle deve essere messo dopo questo comando.

Per quando riguarda la libreria IOexp non credo ci debba rinunciare. Devi solo attivare il controllo dei pulsanti tramite interrupt, ma utilizzando sempre la libreria per leggerne lo stato.

Ciao,
come da suggerimento ho commentato le righe 76 e 77 di twi.c come da codice che segue:

// digitalWrite(SDA, 1);
// digitalWrite(SCL, 1);

ma nessuna variazione, poi ho provato a non commentarle, ma cambiando il valore di attivazione ovvero:

  digitalWrite(SDA, 0);
  digitalWrite(SCL, 0);

ed ancora nulla, quindi ho inserito le due righe dopo wire.begin();

  wire.begin()
  digitalWrite(SDA, 0);
  digitalWrite(SCL, 0);

ed ancora nulla, in pratica ora sto usando pull-up da 2,2k e quasiasi comando io usi per disattivare le pull-up interne, misuro sempre 2,2 mA, sto usando Arduino rev. 3.

Non so cosa devo fare o dove sbaglio, please help me :~

Riccardo

Controlla che sui device attaccati al bus non ci siano integrate delle resistenze.

Ciao PaoloP, grazie per il tuo interessamento,
sul bus I2C sono collegati:

  • 1 PCF8574AP per il display
  • 1 PCF8574AP per i tasti
  • 1 DS1307

Ho letto/cercato di decifrarne i datasheet, ma non leggo o comunque non ho trovato nulla, li metto in allegato, voi siete sicuramente più bravi di me...

Riccardo.

DS1307.pdf (298 KB)

PCF8574_4.pdf (135 KB)