Salve,
vorrei costruire un orologio con un display 7 segment e il DS1307... poi vorrei aggiungerci funzioni ma quello verrà dopo
Fino ad ora sono riuscito a far funzionare il display da solo con la libreria SevSeg e ho provato ad inserire anche un int al posto del valore ma non riesco a farlo comunicare con lo sketch di esempioTime...
//Simple number displayer
#include "SevSeg.h"
//Create an instance of the object.
SevSeg sevseg;
int time = 1820; //Example number
void setup() {
//I am using a common anode display, with the digit pins connected
//from 2-5 and the segment pins connected from 6-13
sevseg.Begin(0,2,3,4,5,6,7,8,9,10,11,12,13);
}
void loop() {
sevseg.PrintOutput(); //Produce an output on the display
sevseg.NewNum(time,2); //Number to be displayed, the second argument is the , place
}
Qualcuno potrebbe aiutarmi?
PS: in futuro vorrei pilotare il display con il 74HC595 e questa libreria però non ce l'ho ancora e non voglio aspettare il prossimo ordine per averlo... intanto ho un 74HC164 solo che non ho trovato nulla di analogo...
edit by mod: di 4 link che hai messo, non ce n'era uno corretto... bisogna controllare i messaggi prima di pubblicarli
La libreria Time di per sé è imprecisa. Senza hardware esterno o senza mezzi per poter aggiornare l'orario dipende dall'imprecisione del risonatore ceramico, molto elevata.
Parti subito prevedendo un RTC esterno per non dover poi buttar via mezzo codice.
Se cerchi in rete ci sono una MAREA di esempi di orologi fatti con i display a 7 segmenti. Cerca e troverai quello che fa per te.
Sì sì come ho scritto il rtc è previsto e intendevo lo sketch che lo includeva
ho cercato tutto il giorno ma non ho trovato nulla che utilizzasse il mio hardware o come voglio io...
Il display già lo piloti senza problemi.
L'RTC si aggancia ai pin A4 e A5 (oppure SDA/SCL se hai una UNO R3) e su internet trovi tanti esempi di codice e librerie. Io uso quella di Adafruit:
Una volta connesso, non devi fare altro che chiedere all'RTC l'ora e visualizzarlo sul display come già stai facendo.
Hai cercato "ds1307 arduino" su internet? No, perché altrimenti non facevi la domanda: 172.000 risultati.
Devi dare alimentazione a quel modulo con VCC e GND presi dai pin di Arduino, poi collegare SDA e SCL ai pin che ti ho detto. Per usare la libreria non devi fare altro che leggere:
A questo punto interroghi l'RTC, prendi ora e minuti e poi li passi alla libreria SevSeg che stai usando.
Di più veramente non posso, mica posso farti io il codice, eh!
Ho già fatto tutto ciò, l'unico passaggio che mi manca è prendere il valore dall'RTC e darlo al display...
Non so come si fa! Non conosco abbastanza il codice... ho chiesto solo un aiuto eh
Letta già prima, provati gli esempi e funziona tutto fino a che è nel monitor seriale... ma non so come prendere le ore e i minuti, farci un numero a 4 cifre e darlo al display.
Ripeto mi manca quella linea di codice per passare da uno all'altro
Hai detto che non ti funziona l'esempio che hai postato, cioè non riesci a visualizzare nulla sul display nemmeno con quell'esempio banale? prova a cambiare nome alla variabile "time", che non stia andando in conflitto software con il linguaggio o con la libreria dell'RTC
nel link che ti ha passato leo è spiegato come prelevare le ore ed i minuti dall'RTC, una volta che hai questi valori li devi assegnare alla variabile time, facendo attenzione ai tipi, dov'è la difficoltà?
sì, muoversi con pazienza per piccoli passi, riparti dal display perfettamente funzionante che visualizza correttamente un qualsiasi valore numerico da te impostato. Al secondo step ricavati dalle istruzioni il comando per ricevere le ore o i minuti dall'RTC, a questp punto prova ad assegnare alla tua variabile di visualizzazione il valore ricevuto dall'RTC, una volta che riesci a vedere le ore procedi col resto.
Non avendo idea di come fare se cerchi di fare tutto non fai niente.
maxidvd:
Scusa ma sto cercando di imparare e non vedo altri metodi visto che nessuno è tanto gentile da spiegarmi le cose...
Proposte?
Questo non me lo dovevi dire.
Sono 2 pagine che ti sto mettendo link a tutto spiano, facendo quello che dovevi fare tu, ossia prendere Google e metterti a cercarti le cose che ti interessano. Dopo 2 pagine in cui ti ho dato tutti i link per poter fare la cosa con un MINIMO di impegno da parte tua, te ne esci che qui nessuno è tanto gentile da spiegarti le cose?
Facciamo così, mi PAGHi, io vengo a casa tua e ti faccio un corso dalla A alla Z.
Ora, se vuoi continuare a chiedere aiuto per favore impegnati a produrre qualcosa di TUO, altrimenti chiudiamo qui la discussione e tanti saluti. Ho fatto più di mezzanotte ieri a cercarti le cose e questo è il tuo ringraziamento??
leo72:
Maxidvd, hai letto il link che ti ho passato?
Lì c'è tutta la spiegazione di come collegare un RTC, c'è il codice da usare e c'è spiegato come usarlo.