Ciao a tutti, ho cercato molto su internet prima di postare ma ho trovato soluzioni un po intricate oppure che non spiegavano vene lo sketch.
Chiedo a voi come realizzare una semplice automazione che accende un relè per esempio allo 8:00 di mattina e lo spegne alle 15:00
Da quanto ho capito bisogna importare le librerie RTC
poi creare delle variabili ora, minuti, secondi che prendono i valori direttamente dal modulo RTC
poi fare una comparazione tra il valore che devo scegliere per l' accensione con quello della variabile, ma non
ho tempo per studiare da zero...credetemi.
Potete almeno consigliarmi un qualcosa di analogo da modificare secondo le mie esigenze? magari uno sketch già compilato solo da modificare. Scusatemi, ma ultimamente non ho tempo nemmeno di scrivere. Spero nel vostro aiuto.
Grazie comunque, in questo forum ho sempre trovato aiuto.
Daniele
Ah, e vorresti anche che andiamo a casa Tua per saldare il circuito visto che hai poco tempo??? ] ] ]
magari uno sketch già compilato solo da modificare.
Uno sketch compilato ovvero il file .HEX non puoi modificarlo.
Scusatemi, ma ultimamente non ho tempo nemmeno di scrivere. Spero nel vostro aiuto.
È il Tuo passatempo e non il nostro. Devi investire Tu il tempo. Come insuato sopra lo sketch é una cosa, produrre il circuito é un altra cosa che necessita di tempo.
Ciao, hai ragione, mi sono espresso male.
Non chiedovo di realizzarmi la parte hardware e non intendevo nemmeno di prepararmi il lavoro bello fatto.
Chiedevo solo se c' era uno sketch già pronto molto semplice, non chiedevo che qualcuno facesse questa cosa solo per me.
Nella fretta ho scritto .hex ed hai ragione, quello è il file esadecimale già compilato per essere scritto su micro controllore. Volevo intendere un piccolo sketch base che includeva un ciclo "if" per accendere un solo relè tramite orario, infondo mi sembrava una cosa abbastanza richiesta...Gestire temporizzazioni tramite arduino con modulo RTC.
Scusate se mi sono espresso male...
Ho trovato questo sketch, potrebbe andare bene?
Credevo di trovare qualcosa di più semplice. Posso investire il mio tempo per capire se questa potrebbe essere una soluzione?
int start_h=00; // ora in cui si deve attivare il relè
int start_m=00; // minuto in cui si deve attivare il relè
int start_s=00; // secondo in cui si deve attivare il relè
int end_h=00; // ora in cui si deve disattivare il relè
int end_m=00; // minuto in cui si deve disattivare il relè
int end_s=00; // secondo in cui si deve disattivare il relè
// per comodità eseguo la conversione
// dell'orario di accensione in secondi
int start_secondi = start_s+ start_m*60 +start_h*60*60;
// per comodità eseguo la conversione
// dell'orario di spegnimento in secondi
int end_secondi = end_s+ end_m*60 +end_h*60*60;
int releacceso=0;
void setup()
{
pinMode(2, OUTPUT); // PIN DOVE E' COLLEGATO IL RELE'
// inizializzo la comunicazione seriale
Serial.begin(9600);
// inizializzo la libreria
Wire.begin();
// adesso, inizializzo la comunicazione con il DS1307.
// L’indirizzo del DS1307 di default è 0x68
Wire.beginTransmission(0x68);
// il primo byte stabilisce il registro
Wire.write((byte)0x00);
// imposto l’orario e la data
Wire.write((byte)0x00); // 1° byte SECONDI da 0x00 a 0x59
Wire.write((byte)0x10); // 2° byte MINUTI da 0x00 a 0x59
Wire.write((byte)0x80 | 0x10); // 3° byte ORE da 0x00 a 0x24
Wire.write((byte)0x01); // 4° byte GIORNO della settimana da 0x01 a 0x07
Wire.write((byte)0x21); // 5° byte GIORNO del mese da 0x00 a 0x31
Wire.write((byte)0x03); // 6° byte MESE da 0x00 a 0x12
Wire.write((byte)0x12); // 7° byte ANNO 0x00 a 0x99
Wire.endTransmission();
}
void loop()
{
// inizzializzo la trasmissione partendo dall'indirizzo 0x00
Wire.beginTransmission(0x68);
Wire.write((byte)0x00);
Wire.endTransmission();
// richiedo 7 byte dal dispositivo con indirizzo 0x68
Wire.requestFrom(0x68, 7);
// recupero i 7 byte relativi ai corrispondenti registri
byte secondi = Wire.read();
byte minuti = Wire.read();
byte ora = Wire.read();
byte giorno_sett = Wire.read();
byte giorno_mese = Wire.read();
byte mese = Wire.read();
byte anno = Wire.read();
// di seguito la variabile per convertire l'ora corrente in secondi
int Secondigiorno = secondi+ minuti*60 +ora*60*60;
// stampo sul monitor seriale la data corrente
Serial.print("Ora corrente: ");
Serial.print(ora, HEX);
Serial.print(":");
Serial.print(minuti, HEX);
Serial.print(":");
Serial.println(secondi, HEX);
Serial.print("Giorno della settimana: ");
Serial.println(giorno_sett, HEX);
Serial.print("Data corrente: ");
Serial.print(giorno_mese, HEX);
Serial.print("/");
Serial.print(mese, HEX);
Serial.print("/");
Serial.println(anno, HEX);
Serial.println();
delay(1000);
// QUI' IMPOSTO I PARAMETRI DI ACCENSIONE DEL RELE'
if (Secondigiorno >=start_secondi && Secondigiorno < end_secondi){
digitalWrite(2, HIGH); // eccito il relè collegato al pin2
delay(1000);
releacceso = 1;
}
else
if (releacceso = 1){
digitalWrite(2, LOW); // stacco il relè collegato al pin2
delay(1000);
releacceso = 0;}
}
edstarink:
Ho trovato questo sketch, potrebbe andare bene?
Per partire a studiare può fare anche questo.
Credevo di trovare qualcosa di più semplice. Posso investire il mio tempo per capire se questa potrebbe essere una soluzione?
Non te n'offendere ma dovresti investire il tempo a studiare un pò di programmazione. L'errore di tutti i principianti è quello di pensare che Arduino sia facile perché così portati a pensare dal battage pubblicitario che lo spacciano per scheda facile da usare anche da chi non conosce l'elettronica e l'informatica. Invece è l'opposto: devi saper programmare perché altrimenti non puoi farci nulla, e devi conoscere l'elettronica perché altrimenti friggi i componenti ad uno ad uno. Prendere uno sketch di un altro è solo come avere il classico pesce per mangiare: risolvi per oggi, ma domani sei punto e a capo a richiedere aiuto per un altro problema. E sono problemi semplici.
Se ti va cerca qui sul forum i due tutorial sull'uso degli RTC: sono 2 thread molto corposi (diverse pagine l'uno) in cui il nostro buon Guglielmo, armato di pazienza, ha spiegato per filo e per segno ad un altro utente alle prime armi come affrontare il discorso della gestione dei chip che tengono l'ora e di come attivare/disattivare le uscite. Perché nello sketch che hai pubblicato c'è una soluzione al problema della gestione degli eventi basati sul tempo (un delay(1000)) che è un vero cazzotto in un occhio, ma spiegarti il motivo qui porterebbe a dover riscrivere le 30 e più pagine di quei 2 thread.
Ciao Leo condivido tutto quello che hai scritto...niente da commentare.
Non ho mai pensato che sia facile programmare in c++ anzi, è molto più difficile di quanti sembra e sentito dire.
Comunque non vorrei essere scambiato per il cretino di turno che chiede senza sapere niente.
Io programmo con un Software che per fortuna ci pensa lui a scrivere per me, ma la logica ce la devi mettere comunque. Ho realizzato un easy plc (che tra l' altro utilizza anche arduino come acquisizione segnali tramite seriale), un programma di demotica molto evoluto, un Software per valutare i riflessi con hardware dedicato realizzato per un medico sportivo dove allena squadre di serie A e non ti sto ad elencare tutto quello che ho realizzato, riparato in quasi 40 anni.
Nulla tolto a quanto mi hai scritto, è solo che lavoro come ingegnere e ho solo la terza media e non per conoscenze, ma per il merito nel corso degli anni visto che nessuno è stato in grado di fare quello che ho fatto e mi scoccia essere passato per uno che non ha la minima conoscenza in elettronica...tutto qua
Non per modestia, mi piace costruire, ma non ho mai avuto la possibilità di studiare programmazione e un' amico mi ha chiesto
se potevo realizzare un dispositivo indipendente ed ho pensato ad arduino, ma per molti aspetti, sono in alto mare.
cerca "labdomotic" su internet e vedi cosa realizzo e dimmi se è il lavoro di uno che non ha concetto di programmazione/elettronica.
Comunque mi sento una schiappa in questo settore, ecco perché ho chiesto già una base pronta, solo perché il mio progetto
mi impegna tutto il tempo e visto che ormai arduino fa parte del mio sistema demotica come acquisizione segnali analogici, mi tocca studiare se voglio ottenere una certa indipendenza senza richiedere aiuto sul forum.
Vabbè, me lo sono meritato...vedrò di studiare anche se non è facile dopo lavoro.
Grazie comunque Leo del tuo suggerimento.
Stai parlando con uno che ha la terza media e che la programmazione l'ha imparata per passione, programmo computer dall'età di 12 anni quindi anch'io mi sono "fatto da me" nel senso che non ho titoli di studio che attestino le mie conoscenze ma sono un autodidatta.
Trovi i link per scaricare delle belle guide gratuite che insegnano il C relativamente all'utilizzo con Arduino. E' tutto da imparare.
Ah, studiati anche il Reference del sito (link in alto): è una miniera di informazioni per tutte le funzioni integrate nel core, e molto spesso la gente lo ignora ma che invece spiega (anche se un pò stringatamente) come usare l'hardware principale della scheda (seriale, input, output, letture analogiche ecc..).
Ciao Leo, Tanto di cappello, io tutto quello che so fare l' ho imparato da me, anche nel suonare il piano, la chitarra e la composizione musicale. Sai qual' è il problema? faccio troppe cose, uso troppi Software, pensa che solo quello che uso per realizzare pcb, ares professional, se non lo uso per più di qualche mese, faccio fatica a ricordarmi tutte le regole, pensa quanto è difficile studiare c++ con tutte queste cose in testa. Ci ho provato e sono arrivato a buoni risultati, ma ho fatto il tremendo sbaglio di arrivare, (con una grandissima spinta di aiuto dal grande Guglielmo ) al risultato cercato senza continuare. Adesso, dopo diversi mesi, devo cominciare da capo perché ho dimenticato regole importanti anche se alcune cose le ricordo molto bene. Ho un sacco di persone che mi chiedono progetti, realizzazioni stranissime ed è già difficile stare dietro a questa cosa. Purtroppo ho sbagliato scuola, se tornassi indietro farei informatica. Se penso a quanto ero imbecille nel' odiare i pc credendo fossero catorci inutili, pavoneggiandomi della mia playstation...
A venticinque anni ho conosciuto il mio primo p.c., un acer extenza che mi ha portato alla programmazione musicale ed infatti per ventanni ho fatto il programmatore musicale (arrangiatore/fonico).
Se avessi fatto programmazione informatica, probabilmente sarei stato uno di voi ad aiutare e non a chiedere aiuto.
Mannaggia al tempo, non ne ho più...mentre scrivo, sento il suono delle email che pulsa maledettamente. Non smetto mai di scrivere.
Grazie ancora, anche se ho un papiro infinito di tutorial su arduino, non è mai abbastanza.
Se dovessi realizzare quella funzione con il software che utilizzo per realizzare programmi per le mie interfacce, un minuto sarebbe anche troppo e mi piacerebbe un casino se avessi questa velocità con arduino. è come se avessi imparato a suonare una chitarra con una sola corda ma riuscendo ad avere lo stesso risultato di una chitarra a cinque corde.
Vabbè, comunque sei un grande e anche se non ho trovato aiuto o soluzione che sia, mi sono un po sfogato.
Mi faccio risentire, magari quando sarò più preparato.
Ti saluto Leo e di nuovo grazie del consiglio
edstarink:
A venticinque anni ho conosciuto il mio primo p.c., un acer extenza che mi ha portato alla programmazione musicale ed infatti per ventanni ho fatto il programmatore musicale (arrangiatore/fonico).
Se avessi fatto programmazione informatica, probabilmente sarei stato uno di voi ad aiutare e non a chiedere aiuto.
Mi sa che c'è poca differenza in anni fra me e te
L'informatica che si faceva all'epoca alle superiori non era niente di che. In laboratorio l'assistente chiedeva aiuto a me
Forse all'università la cosa era diversa ma io avevo lasciato alla fine del triennio (il mio sbaglio... ognuno nella vita ne ha fatto uno... :* ) per andare a lavorare, quindi non posso saperlo.
Ai primi anni delle superiori, (che non ho finito e ne vado fiero... una scuola orribile) ho sostituito religione con informatica. Ero l' unico, pensa te, uscirono i primi pentium mmx. Purtroppo la professoressa era troppo giovane e poco vestita per la mia tenera età e il pascal e lotus non erano tra i miei interessi primari. puoi immaginare la situazione Mi spiegò bene come era composto il mouse e come pulirlo dalla polvere, il resto è noia....
Vabbè, è stato un piacere, comunque il post è sempre aperto, se conoscete un topic che spiega la funzione da me richiesta, postate
Più che altro mi farebbe piacere sapere i passaggi es:
Importi la libreria RTC o un consiglio su quale shield acquistare anche se dopo varie ricerche credo di averlo trovato.
definisci le variabili
fai un ciclo di IF per comparare l' ora di intervento ecc...
Anche a blocchi in modo da orientarmi.
Saluti