Pages: 1 2 3 [4] 5 6   Go Down
Author Topic: problema lettura secondi RTC  (Read 8053 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 1
Posts: 49
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

si: attenzione solo di non sovrapporre la fase di fadeup a quella di fadedown se no viene fuori un casino... quindi tieni sempre più di mezz'ora tra le due fasi.... non lo stai facendo.

Ho letto che c'è gente che usa al posto delle lampade fluorescenti delle righe di led: sicuramente sarebbe più semplice da controllare (e sicuramente più costoso) ma mi chiedo: i led hanno le giuste frequenze? che luce abbisognano questi pesci?
Mi sa tanto che opto per i LED, considerando che non si tratta di marino quindi non necessitano di una notevole quantità di luce. Stavo pensando di farmi fare 4 tubi con strip LED da +o- 35 lumen/LED con 1 red, 1 royal blue e 2 bianchi ma con ºK differenti.
Di questi tubi vorrei che si accendessero in fasi diverse.
Tipo: nella scala di 1ora da 0-100% blu nella prima 30min poi si aggiunge il rosso dopo 15 min partono i bianchi per avere tutto ON in 60 minuti. Secondo te se po fa?
Ps perche in fase di accensione spegnimento si da il valore 255?
Code:
ms = 255-ms;
Logged

Global Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 333
Posts: 22973
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Questo codice:
Code:
long ms = millis()-oldMillisFade;
ms = ms / 7050;
è concettualmente sbagliato.

Una variabile di tipo "long" può contenere solo numeri INTERI, cioè senza virgola.
Se il risultato della divisione fra ms e 7050 è inferiore a 0, ms conterrà 0. Se il risultato sarà 1.2, ms conterrà 1. Se il risultato sarà 1.9, ms conterrà 1. ecc...
Logged


Offline Offline
Newbie
*
Karma: 1
Posts: 49
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Questo codice:
Code:
long ms = millis()-oldMillisFade;
ms = ms / 7050;
è concettualmente sbagliato.

Una variabile di tipo "long" può contenere solo numeri INTERI, cioè senza virgola.
Se il risultato della divisione fra ms e 7050 è inferiore a 0, ms conterrà 0. Se il risultato sarà 1.2, ms conterrà 1. Se il risultato sarà 1.9, ms conterrà 1. ecc...
quindi per avere una scala di tempo di 30 minuti dovrei fare 7060*255fade completo/1000"ms"/60"un minuto" per ottenere 30,005 che verra letto come 30
giusto?
Logged

Offline Offline
Sr. Member
****
Karma: 8
Posts: 293
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Questo codice:
Code:
long ms = millis()-oldMillisFade;
ms = ms / 7050;
è concettualmente sbagliato.

Una variabile di tipo "long" può contenere solo numeri INTERI, cioè senza virgola.
Se il risultato della divisione fra ms e 7050 è inferiore a 0, ms conterrà 0. Se il risultato sarà 1.2, ms conterrà 1. Se il risultato sarà 1.9, ms conterrà 1. ecc...

non l'ho testato... non ho nulla per poterlo testare...non ho ben capito perchè è sbagliato.... be... ecco... diremo che ms non è il nome di variabile più adatto... vi spiego cosa volevo creare così mi dite se e dove sbaglio:
- il long l'ho usato perchè ho pensato che si potesse avere un tramonto lungo di passa una ora... quindi 1000ms*60secondi = 60.000... 2^15 fa 32000 e rotti se non uso il segno arrivo a 64000 e rotti ma ci stò  un po' troppo a pennello.
poi ho diviso il long per un tempo: inizialmente era di 10ms per fare una rampa rapida di debug ed ora è stato posto a 7000 e rotti... nelle mie intenzioni ogni uno di questi step (7000) si ha l'incremento di ms che poi viene sfruttato dal analogwrite... cioè sale a scalini... del troncamento della divisione me ne sono fregato: non mi sono proprio posto il problema tanto ho già 256 scalini che sono più che sufficenti.

il 255 del fadeDown è perchè il 100% dell'uscita in pwm ce l'hai con 255 (se non hai picchignato con i timer).... quindi per pigrizia mentale di trovare altre soluzioni ho fatto il down uguale all'up solo invertendo il valore scritto con 255-ms...


per mettere più "fade" puoi fare altri codici fadeup e fadedown usando delle nuove variabili (fadeup_2 fadedown_2) e duplicando anche l'oldMillisFade e usando altre uscite nel analogwrite
Oppure si può mettere poco prima del analogwrite si mette un if e se il segnale è maggiore o minore di tot si accende o si spengono dei bit.
Attenzione che il fade funziona se il led è attaccato su un'uscita pwm (quelle contrassengate con la cedilia o come cavolo si chiama l'ondina  smiley-mr-green)
Logged

Global Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 333
Posts: 22973
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Se il risultato è un numero ragionevolmente grande allora va bene: il troncamento dei decimali non si farà sentire.
Esempio:
705000/7050=100

Ma se il dividendo ed il divisore sono vicini come ordini di grandezza, allora puoi rischiare di avere un risultato troncato anche allo zero.
6000/7050=0.85 -> 0
E l'incremento non esiste.

Non so su che ordini di grandezza andate, forse sarebbe meglio usare un float e poi fare il casting in fase di analogWrite
Logged


Offline Offline
Newbie
*
Karma: 1
Posts: 49
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Se il risultato è un numero ragionevolmente grande allora va bene: il troncamento dei decimali non si farà sentire.
Esempio:
705000/7050=100

Ma se il dividendo ed il divisore sono vicini come ordini di grandezza, allora puoi rischiare di avere un risultato troncato anche allo zero.
6000/7050=0.85 -> 0
E l'incremento non esiste.

Non so su che ordini di grandezza andate, forse sarebbe meglio usare un float e poi fare il casting in fase di analogWrite

attualmente stiamo testando in scala di pochi minuti per vedere come funziona, diciamo che si tratta di una beta, ringrazio tantissimo "qsecofr" che mi sta aiutando pur non avendo l'hardware da testare, quindi si basa sulle mie analisi, così da poter studiare un po meglio il funzionamento e la logica usata.
quello che stiamo cercando di fare è un controller per acquario "dolce" quindi niente pretese particolari. vorremmo inserire un menu per gestire le varie accensioni e regolare orario, data e orari di accensione dei vari tubi LED. per me so già che sarà un lavoraccio, però sarebbe bello finirlo con l'aiuto del forum, anche perché in giro per la baia ci sono molti di questi 3D aperti ma che poi finiscono alla deriva.
dovrò sistemare bene anche l'hardware perché al momento è un groviglio di fili, che per il momento fa il suo lavoro........... 


* IMG_0174.JPG (1983.16 KB, 3264x2448 - viewed 62 times.)
Logged

Offline Offline
Sr. Member
****
Karma: 8
Posts: 293
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Se il risultato è un numero ragionevolmente grande allora va bene: il troncamento dei decimali non si farà sentire.
Esempio:
705000/7050=100

Ma se il dividendo ed il divisore sono vicini come ordini di grandezza, allora puoi rischiare di avere un risultato troncato anche allo zero.
6000/7050=0.85 -> 0
E l'incremento non esiste.

Non so su che ordini di grandezza andate, forse sarebbe meglio usare un float e poi fare il casting in fase di analogWrite

il valore del dividendo lo vedi calcolato appena sopra (tutte le volte che passa di li il loop): è dato da millis- oldmillis e pertanto partirà da 0 ed arriverà (nel caso ipotetico di un'albatramonto di un'ora) a 60.000... e chissà: se serve anche oltre.... Nel caso di un divisore di 7050 quindi il fade comincierà effettivamente 7050 millesimi di sec. dopo il lancio orario: se vogliamo è un po' inesatto perchè sarebbe stato da farlo partire immediatamente ma tanto da 0 a 1 (su 255) sull'uscita analogica non si ha comunque un cambiamento visibile ad occhio nudo (anzi probabilmente rimane sotto la soglia del led) e l'alba in questo caso la facciamo durare mezz'oretta: sette secondi non ci spostano la vita.

per il groviglio di fili è meglio che non vedi dove lavoro io... diremo solo che è in zona di interdizione totale dalla moglie... io non so come fare per tenere questa stanza "presentabile"... ci sono fili ovunque... resistenze...pc... stagno...stampanti e cosi spaccati per prendere i componenti... ogni tanto passo con la mano sopra il tavolo e butto giù un po' di stagno o residui di filo poi lancio la roomba perchè appunto la moglie...ma la cosa non migliora affatto...
Logged

Offline Offline
Newbie
*
Karma: 1
Posts: 49
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Se il risultato è un numero ragionevolmente grande allora va bene: il troncamento dei decimali non si farà sentire.
Esempio:
705000/7050=100

Ma se il dividendo ed il divisore sono vicini come ordini di grandezza, allora puoi rischiare di avere un risultato troncato anche allo zero.
6000/7050=0.85 -> 0
E l'incremento non esiste.

Non so su che ordini di grandezza andate, forse sarebbe meglio usare un float e poi fare il casting in fase di analogWrite

il valore del dividendo lo vedi calcolato appena sopra (tutte le volte che passa di li il loop): è dato da millis- oldmillis e pertanto partirà da 0 ed arriverà (nel caso ipotetico di un'albatramonto di un'ora) a 60.000... e chissà: se serve anche oltre.... Nel caso di un divisore di 7050 quindi il fade comincierà effettivamente 7050 millesimi di sec. dopo il lancio orario: se vogliamo è un po' inesatto perchè sarebbe stato da farlo partire immediatamente ma tanto da 0 a 1 (su 255) sull'uscita analogica non si ha comunque un cambiamento visibile ad occhio nudo (anzi probabilmente rimane sotto la soglia del led) e l'alba in questo caso la facciamo durare mezz'oretta: sette secondi non ci spostano la vita.

per il groviglio di fili è meglio che non vedi dove lavoro io... diremo solo che è in zona di interdizione totale dalla moglie... io non so come fare per tenere questa stanza "presentabile"... ci sono fili ovunque... resistenze...pc... stagno...stampanti e cosi spaccati per prendere i componenti... ogni tanto passo con la mano sopra il tavolo e butto giù un po' di stagno o residui di filo poi lancio la roomba perchè appunto la moglie...ma la cosa non migliora affatto...
per la stanza ti capisco benissimo mi sa che siamo messi bene noi due.
vorrei approfittare per farti tanti sinceri auguri di una buona fine e un migliore inizio 2013 a te e tutta la tua famiglia.
ora vado a prepararmi altrimenti mia moglie chiede il divorzio con l'anno nuovo ;-)
ci sentiamo il prossimo anno, ciao ciao
Logged

Rome
Offline Offline
Sr. Member
****
Karma: 9
Posts: 378
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ciao,
ho letto solo oggi il topic e con molto piacere devo dire...
Anche io sto lavorando ad una centralina per controllare un acquario, ho iniziato mooolto tempo fa, anche io partendo da zero, ma per mancanza di tempo vado pianissimo, in più un'altro ragazzo con il quale brutalizzavamo insieme arduino per il progetto in questione si è tirato momentaneamente fuori con ullteriore rallentamento di tutto.
Ad ogni modo, ti allego una fotina della mia bread, sulla quale vedi anche la scheda relé che mi sono autocostruito perché l'avorando con l'acqua ho voluto relè a doppio contatto. Il topic dove i ragazzi del forum mi hanno aiutato: http://arduino.cc/forum/index.php/topic,128951.0.html
Ad ogni modo il nostro sketch attualmente permette con una serie di menù di impostare l'ora dell'rtc, di inserire i dati per i 2 fotoperiodi, 2 perché voglio gestire due linee inipendenti di luci e c'è anche una funzione che in base ai dati inseriti gestisce i fading delle due linee ed infine in base al dato inserito gestisco la temperatura dell'acqua leggendo e mediando la lettura di due sensori dallas come quello che stai usando anche tu, ovviamente il codice è molto sporco, va snellito e modificato, perché nel frattempo è cambiato l'ide le librerie e via dicendo, ma credo ci sia del buono da utilizzare, sono un neofita anche io  smiley-roll-sweat
Mi piacerebbe se formassimo un gruppetto di lavoro tutti insieme, se la cosa interessa approfondisco quanto ho fatto e molto volentieri lo condivido...

Riccardo  smiley

P.S. Anche a me interessa un'acquario di discus  smiley-lol


* IMG_0423.JPG (336.92 KB, 800x606 - viewed 62 times.)
Logged

Riccardo

Cagliari, Italy
Offline Offline
Tesla Member
***
Karma: 114
Posts: 7210
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ciao Rici.
Complimenti per l'ottimo risultato. smiley-mr-green
Le tue board sono sempre ordinatissime. smiley-wink
Logged

Code fast. Code easy. Codebender --> http://codebender.cc/?referrer=PaoloP

Offline Offline
Newbie
*
Karma: 1
Posts: 49
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ciao,
ho letto solo oggi il topic e con molto piacere devo dire...
Anche io sto lavorando ad una centralina per controllare un acquario, ho iniziato mooolto tempo fa, anche io partendo da zero, ma per mancanza di tempo vado pianissimo, in più un'altro ragazzo con il quale brutalizzavamo insieme arduino per il progetto in questione si è tirato momentaneamente fuori con ullteriore rallentamento di tutto.
Ad ogni modo, ti allego una fotina della mia bread, sulla quale vedi anche la scheda relé che mi sono autocostruito perché l'avorando con l'acqua ho voluto relè a doppio contatto. Il topic dove i ragazzi del forum mi hanno aiutato: http://arduino.cc/forum/index.php/topic,128951.0.html
Ad ogni modo il nostro sketch attualmente permette con una serie di menù di impostare l'ora dell'rtc, di inserire i dati per i 2 fotoperiodi, 2 perché voglio gestire due linee inipendenti di luci e c'è anche una funzione che in base ai dati inseriti gestisce i fading delle due linee ed infine in base al dato inserito gestisco la temperatura dell'acqua leggendo e mediando la lettura di due sensori dallas come quello che stai usando anche tu, ovviamente il codice è molto sporco, va snellito e modificato, perché nel frattempo è cambiato l'ide le librerie e via dicendo, ma credo ci sia del buono da utilizzare, sono un neofita anche io  smiley-roll-sweat
Mi piacerebbe se formassimo un gruppetto di lavoro tutti insieme, se la cosa interessa approfondisco quanto ho fatto e molto volentieri lo condivido...

Riccardo  smiley

P.S. Anche a me interessa un'acquario di discus  smiley-lol
Cavolo, sei avanti rispetto a me, io sto impazzendo per riuscire a creare un menu, dove ti nascondevi smiley-lol il lavoro che sto portando avanti grazie a un membro del forum è un po indietro, io ho iniziato a lavorarci da qualche mese, anche se ho arduino da un anno quasi, e pure io gli dedico quel po di tempo tra una cosa e un altra.
Comunque si mi farebbe piacere condividere tutto il materiale, anche se il mio è poco. Sarebbe bello condividere tutto qui sul forum perchè come ho gia detto si trova tanto in rete, ma poi tutto si incaglia. Sarebbe utile condividere i possibili schemi delle varie schede montate come la tua relay etc etc.
Beh che dire!?!?!?!
Benvenuto
Logged

Rovereto
Offline Offline
Full Member
***
Karma: 5
Posts: 172
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

@riciweb

mi sono innamorato appena ho visto la tua breadboard  smiley-eek

per quanto posso aiutare il rpogetto mi interessa molto! e posso aiutare a dipanare un po' di codice!
Logged

Rome
Offline Offline
Sr. Member
****
Karma: 9
Posts: 378
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ciao Rici.
Complimenti per l'ottimo risultato. smiley-mr-green
Le tue board sono sempre ordinatissime. smiley-wink

mi sono innamorato appena ho visto la tua breadboard  smiley-eek

Ciao Paolop, e leouz,
mi fate arrossire…  smiley-red confesso che tutto quell’ordine, non è un esercizio estetico, ma un più semplice tentativo di avere la circuiteria chiara e facile da seguire ed eventualmente correggere, sono a così basso livello in elettronica che non solo quello che vedete è scopiazzato, ma è pure scopiazzato male…  smiley-red

Cavolo, sei avanti rispetto a me, io sto impazzendo per riuscire a creare un menu, dove ti nascondevi smiley-lol il lavoro che sto portando avanti grazie a un membro del forum è un po indietro, io ho iniziato a lavorarci da qualche mese, anche se ho arduino da un anno quasi, e pure io gli dedico quel po di tempo tra una cosa e un altra.
Comunque si mi farebbe piacere condividere tutto il materiale, anche se il mio è poco. Sarebbe bello condividere tutto qui sul forum perchè come ho gia detto si trova tanto in rete, ma poi tutto si incaglia. Sarebbe utile condividere i possibili schemi delle varie schede montate come la tua relay etc etc.
Beh che dire!?!?!?!
Benvenuto

per quanto posso aiutare il rpogetto mi interessa molto! e posso aiutare a dipanare un po' di codice!

Per cominciare nel modo migliore  smiley, vorrei spiegare la filosofia (che parolone  smiley-roll-sweat) che sto seguendo nel realizzare il mio progetto.
In pratica vorrei che il tutto sia semplice da usare ed allo stesso tempo non ponga limitazioni eccessive nell’utilizzo degli accessori acquaristici che andrò a comandare, ti faccio un paio di esempi, sperando che chi legge e capisce più di me (ci vuole veramente poco  smiley-small), mi corregga se scrivo castronerie:

- Per il fading (lato HW) ho deciso di usare pilotati in PWM da arduino dei mosfet IRF540, sopportano molta corrente e mi permettono di pilotare strip led a 12VDC o 24VDC, rimanendo sempre nel range del datasheet, oggi poi leggendo velocemente come funzionano i ballast per T5  ho visto che variano la luce dei tubi grazie ad un ingresso variabile da 0 a 10V, probabilmente con un jumper che attivi il giusto partitore di tensione si potrebbe con la stessa funzione comandare in PWM anche un ballast (tutto da verificare ovviamente).

- Ho letto poi che già qualcuno ti ha scritto di usare per comandare gli accessori dell’acquario optoisolatori e triac, io ho scartato questa soluzione in favore dei, da molti ritenuti jurassici, relé, perché offrendo un contatto On/Off pulito mi permetteranno di comandare eventuali elettrovalvole per CO2 o per il cambio automatico dell’acqua funzionanti indifferentemente a 12/24/230 VAC o VDC, con i triac solo VAC  smiley-wink.

E così vorrei continuare a seguire questo orientamento per gli sviluppi futuri  smiley-lol

Per quello che ho già realizzato invece ti anticipo che sto usando:
  • Display LCD 20*4 HD44780 pilotato con IO/Expander  PCF8574 e libreria LiquidCrystal_I2C
  • RTC DS1307 con libreria DS1307 (da rivedere perché ho intenzione di passare alla libreria Time e DS1307RTC)
  • 5 pulsanti per navigazione nei menù e inserimento dati Su/+, Giù/-, Dx, Sx e Ok letti anchessi via I2C con libreria IOexp
  • 2 sensori DS18B20 per la rilevazione della temperatura
  • 1 Shift register 74HC595 per comandare la scheda relé
  • 1 circuitino con LM7805 per abbassare i 12v usati per la scheda relé a 5V per alimentare tutto quello che ho scritto sopra (è quello in alto a dx sulla bread) perché i 5v in uscita da Arduino hanno poco amperaggio e avevo qualche problema.

OK, credo di aver più o meno scritto in sintesi quasi tutto, se ti/vi piace questo mio modo di vedere le cose allora direi che forse è il caso di aprire un topic dedicato e veder cosa tiriamo fuori.

Ciao a tutti.

Riccardo  smiley
Logged

Riccardo

Offline Offline
Newbie
*
Karma: 1
Posts: 49
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

per me non ci sono problemi, anzi spero di essere utile perché devo ammettere che sono proprio asino.
volevo chiederti se hai lo schema del collegamento tasti che  vorrei utilizzare anche io.
Logged

Rome
Offline Offline
Sr. Member
****
Karma: 9
Posts: 378
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Non ho ancora disegnato nessuno schema, ma ti basta scopiazzare la mia bread, ti serve:
  • il PCF8574
  • 5 resistenze per il pull-down dei tasti da 10k
  • 1 condensatore da 100nF  per il disaccoppiamento del PCF (molti non lo usano), quello azzurro
  • 5 condensatori da 100nF sui tasti, questi li uso per il debouncing HW quelli marroncini tra positivo ei rispettivi piedini sul pcf
  • 2 resistenze 10k per il bus I2C
  • 1 resistenza 10k sul piedino int del PCF

Scusa se tisembro sbrigativo, appena ho tempo raccolgo meglio il materiale e cerco di essere preciso proverò con fritzing a fare qualcosa.

Ad ogni modo, se vuoi che mandiamo avanti insieme la cosa dovresti dotarti dele stesse cose che ho io altrimenti poi non riusciamo a stendere il software.

In quanto all'asino pensa che io non provo nemmeno a paragonarmici per non offenderlo...
Ho iniziato da zero anche io, ma leggendo sul forum, googlando all'infinito, combinando casini a rotta di collo (mi è pure esploso un'elettrolitico in faccia) e chiedendo sul forum, ho imparato qualcosa.

Ciao Riccardo.
Logged

Riccardo

Pages: 1 2 3 [4] 5 6   Go Up
Jump to: