Seguimi su Youtubue
Iscriviti
Se desideri, puoi effettuare un'iscrizione gratuita al forum per entrare nella nostra community.
Ricerca Avanzata
Pubblicità Google AdSense
Answers
Se necessiti di aiuto, clicca il pulsante "Cerco Aiuto" (disponibile anche per i non iscritti).
Ultimi argomenti
» Come realizzare un impianto antincendio con Arduino - v1.0
Da papat Ieri a 11:47 am

» Sketch per realizzare un semplice semaforo con Arduino
Da Poderak Dom Feb 26, 2017 6:27 pm

» problemi con stazione meteo e schema arduino
Da Poderak Dom Feb 26, 2017 6:23 pm

» Ethernet Shiel compatibile non pinga
Da Poderak Mer Feb 22, 2017 10:03 am

» FUNZIONE I2C
Da papat Dom Feb 19, 2017 6:21 pm

» Come controllare motori DC con L298N e Arduino
Da Poderak Mer Feb 15, 2017 2:14 pm

» Recensione mini drone Aukey - Video
Da Poderak Sab Feb 11, 2017 7:05 pm

» Recensione gamepad Xbox per PC EasySMX - Video recensione
Da Poderak Sab Feb 11, 2017 7:03 pm

» Lampada tech Aukey LT-T6 - Video recensione
Da Poderak Sab Feb 11, 2017 7:02 pm

I postatori più attivi del mese
Poderak
 
papat
 
Mrskizzo
 
SistemaL
 
Charade
 

Come funziona RTC del Fishino - Codice

Vedere l'argomento precedente Vedere l'argomento seguente Andare in basso

Come funziona RTC del Fishino - Codice

Messaggio Da Poderak il Lun Giu 27, 2016 4:23 pm

Il modulo RTC è già integrato nel Fishino e questo ci permette di aver la possibilità di avere un orario sempre in funzione, anche a scheda spenta. Per un corretto funzionamento dell'RTC è consigliato inserire la batteria già inclusa quando comprate un Fishino Uno:
Inserita la batteria, dobbiamo scaricare la libreria che viene utilizzata da Arduino per la Shield RTC. L'RTC presente nel retro del Fishino UNO funziona allo stesso modo e potete scaricare questa libreria gratuitamente da qui sotto:
Download RTClib: qui.

Inclusa anche la libreria nell'IDE, possiamo realizzare il nostro orologio sfruttando un display con interfaccia I2C. Non preoccupatevi, se non sapete come funziona trovate qui una guida dettagliata. Adesso siamo pronti a scrivere il codice! Lo sketch è il seguente (commentato!):
Codice:
#include <Wire.h> //libreria per interfacciare i2c e rtc
#include "RTClib.h" //libreria rtc
#include <LiquidCrystal_I2C.h>  //libreria display i2c

//////////////////////addr, en,rw,rs,d4,d5,d6,d7,bl, blpol
LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE); //impostazione indirizzo del display e pin del display LCD collegati all'i2c

RTC_DS1307 rtc; //nome rtc
//array nomi giorni
char daysOfTheWeek[7][12] = {"Dom.", "Lun.", "Mar.", "Mer.", "Gio.", "Ven.", "Sab."};

void setup () {
  Serial.begin(57600); //inizializzazione serial monito
  lcd.begin(16,2); //inizializzazione lcd
  if (! rtc.begin()) { //verifico la presenza dell'RTC
    Serial.println("Impossibile trovare RTC");
    while (1);
  }

  if (! rtc.isrunning()) { //verifico funzionamento dell'RTC
    Serial.println("RTC non è in funzione!");
    //inserisce l'orario del computer durante la compilazione
    rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
    // Se vuoi un orario personalizzato, togli il commento alla riga successiva
    // l'orario: ANNO, MESE, GIORNI, ORA, MINUTI, SECONDI
    //rtc.adjust(DateTime(2014, 1, 21, 3, 0, 0));
  }

}

void loop () {
    DateTime now = rtc.now(); //creo istanza ora/data
    Serial.print(now.year(), DEC); //stampo anno in decimale
    Serial.print('/');
    Serial.print(now.month(), DEC); //stampo mese in decimale
    Serial.print('/');
    Serial.print(now.day(), DEC); //stampo giorno in decimale
    Serial.print(" (");
    Serial.print(daysOfTheWeek[now.dayOfTheWeek()]); //stampo nome giorno
    Serial.print(") ");
    Serial.print(now.hour(), DEC); //stampo ora in decimale
    Serial.print(':');
    Serial.print(now.minute(), DEC); //stampo minuto in decimale
    Serial.print(':');
    Serial.print(now.second(), DEC); //stampo secondi in decimale
    Serial.println();
    lcd.clear(); //pulisce lo schermo
    lcd.setCursor(0,0); //imposta il cursore nella prima riga e colonna,  
    lcd.print(now.day(), DEC);     //stampo giorno numero in decimale
    lcd.print('/');
    lcd.print(now.month(), DEC); //stampo mese in decimale
    lcd.print('/');
    lcd.print(now.year(), DEC); //stampo anno in decimale
    lcd.print(' ');
    lcd.print(daysOfTheWeek[now.dayOfTheWeek()]);
    lcd.setCursor(0,1); //imposta il cursore nella seconda riga e prima colonna.
    //stampo orario in decimale
    lcd.print(now.hour(), DEC);
    lcd.print(':');
    lcd.print(now.minute(), DEC);
    lcd.print(':');
    lcd.print(now.second(), DEC);
    delay(1000);
    /* //rimuovi questo commento se vuoi...
    Serial.print(" since midnight 1/1/1970 = "); //..sapere quanti secondi sono passati da questa data
    Serial.print(now.unixtime());
    Serial.print("s = ");
    Serial.print(now.unixtime() / 86400L); //.. sapere i giorni passati dal 1/1/1970
    Serial.println("d");
    
    // calculate a date which is 7 days and 30 seconds into the future
    DateTime future (now + TimeSpan(7,12,30,6)); //imposta quanto deve andare nel futuro
    //imposta una data/ora del futuro:
    Serial.print(" now + 7d + 30s: ");
    Serial.print(future.year(), DEC);
    Serial.print('/');
    Serial.print(future.month(), DEC);
    Serial.print('/');
    Serial.print(future.day(), DEC);
    Serial.print(' ');
    Serial.print(future.hour(), DEC);
    Serial.print(':');
    Serial.print(future.minute(), DEC);
    Serial.print(':');
    Serial.print(future.second(), DEC);
    Serial.println();
    
    Serial.println();
    delay(3000);
    */
}

Poderak
♔ Amministratore

Messaggi Messaggi : 4136
Crediti Crediti : 11626
Reputazione Reputazione : 185
Data d'iscrizione Data d'iscrizione : 08.03.11
Età Età : 18
Località Località : Brescia

Vedere il profilo dell'utente http://www.wikiinfo.net

Tornare in alto Andare in basso

Vedere l'argomento precedente Vedere l'argomento seguente Tornare in alto


 
Permesso di questo forum:
Non puoi rispondere agli argomenti in questo forum