INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.

Antwort schreiben 
 
Themabewertung:
  • 0 Bewertungen - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Beispiel: Mega Uhr RTC DS3231 Anzeige auf LCD1602
22.07.2015, 18:48 (Dieser Beitrag wurde zuletzt bearbeitet: 22.07.2015 20:38 von HaWe.)
Beitrag #1
Beispiel: Mega Uhr RTC DS3231 Anzeige auf LCD1602
hi,
hier ein Codebeispiel für alle die sich mit der RTC und dem LCD1602 schwer tun (so wie ich bis jetzt):

Uhrzeit und Datum per RTC DS3231
Anzeige auf LCD1602

MCU: Arduino Mega,
Hinweis: besonderer LCD Verkabelungsplan (hält Pins 0-13 und SPI frei!) !

share and enjoy!


Code:
/*
Display LiquidCrystal Library
plus
real-time clock RTC-DS3231

Demonstrates the use a 16x2 LCD 1602
to display the values of a real-time clock RTC-DS3231

  The circuit:
  
* LCD pin  1 (VSS) to +5V
* LCD pin  2 (VDD) to GND
* LCD pin  3 (V0) to 2.2k to GND
* LCD pin  4 (RS) to Dpin 22
* LCD pin  5 (R/W) to GND
* LCD pin  6 (E)  to Dpin 2
* LCD pin  7 (D0) to N/A
* LCD pin  8 (D1) to N/A
* LCD pin  9 (D2) to N/A
* LCD pin 10 (D3) to N/A
* LCD pin 11 (D4) to Dpin 24
* LCD pin 12 (D5) to Dpin 25
* LCD pin 13 (D6) to Dpin 26
* LCD pin 14 (D7) to Dpin 27
* LCD pin 15 (A) to +5V (or via 2.2k)
* LCD pin 16 (K) to GND

This example code is in the public domain.

//     http://www.arduino.cc/en/Tutorial/LiquidCrystal      //


*/

#include <LiquidCrystal.h>
#include "Wire.h"
#define ADDR_RTCDS3231 0x68

// initialize the library with the numbers of the interface pins
LiquidCrystal lcd(22, 23, 24, 25, 26, 27);



//================================================================================​=====
// Convert normal decimal numbers to binary coded decimal
//================================================================================​=====
byte decToBcd(byte val) {  return( (val/10*16) + (val%10) );  }


//================================================================================​=====
// Convert binary coded decimal to normal decimal numbers
//================================================================================​=====
byte bcdToDec(byte val)  {  return( (val/16*10) + (val%16) ); }

//================================================================================​=====

char sdofweek[8][10] = {"         ","Monday  ","Tuesday  ","Wednesday","Thursday ","Friday  ","Saturday ","Sunday   "};

void displayTime()
{
  byte second, minute, hour, ndofweek, dday, dmonth, dyear;
  char sbuf[50];
  
  // retrieve data from DS3231
  readDS3231time(&second, &minute, &hour, &ndofweek, &dday, &dmonth,
  &dyear);
  // send it to the serial monitor
  
  sprintf(sbuf, "%02d:%02d:%02d   %02d/%02d ",hour, minute, second, dday, dmonth );
  Serial.print(sbuf);
  lcd.setCursor(0, 0);
  lcd.print(sbuf);
  
  sprintf(sbuf, "20%02d, %s", dyear, sdofweek[ndofweek]);
  Serial.print(sbuf);
  Serial.println();
  lcd.setCursor(0, 1);
  lcd.print(sbuf);  
}

//================================================================================​=====
//================================================================================​=====


void setDS3231time(byte second, byte minute, byte hour, byte ndofweek, byte
dday, byte dmonth, byte dyear)
{
  // sets time and date data to DS3231
  Wire.beginTransmission(ADDR_RTCDS3231);
  Wire.write(0); // set next input to start at the seconds register
  Wire.write(decToBcd(second)); // set seconds
  Wire.write(decToBcd(minute)); // set minutes
  Wire.write(decToBcd(hour)); // set hours
  Wire.write(decToBcd(ndofweek)); // set day of week (1=Sunday, 7=Saturday)
  Wire.write(decToBcd(dday)); // set date (1 to 31)
  Wire.write(decToBcd(dmonth)); // set dmonth
  Wire.write(decToBcd(dyear)); // set dyear (0 to 99)
  Wire.endTransmission();
}

//================================================================================​=====

void readDS3231time(byte *second,
     byte *minute,
     byte *hour,
     byte *ndofweek,
     byte *dday,
     byte *dmonth,
     byte *dyear)
{
  Wire.beginTransmission(ADDR_RTCDS3231);
  Wire.write(0); // set DS3231 register pointer to 00h
  Wire.endTransmission();
  Wire.requestFrom(ADDR_RTCDS3231, 7);
  // request seven bytes of data from DS3231 starting from register 00h
  *second = bcdToDec(Wire.read() & 0x7f);
  *minute = bcdToDec(Wire.read());
  *hour = bcdToDec(Wire.read() & 0x3f);
  *ndofweek = bcdToDec(Wire.read());
  *dday = bcdToDec(Wire.read());
  *dmonth = bcdToDec(Wire.read());
  *dyear = bcdToDec(Wire.read());
}


//================================================================================​=====
//================================================================================​=====


void setup() {
  // start USB serial
  Serial.begin(115200);
  
  // set up the LCD's number of columns and rows:
  lcd.begin(16, 2);  // init LCD 1602
  
  // start I2C
  Wire.begin();
  
  // set the initial time here ONCE: <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< !!!
  // DS3231 seconds, minutes, hours, day, date, dmonth, dyear
  // setDS3231time(00,00,20, 3,  22,07,15);  // (3 == )Mittwoch, 20:00:00 Uhr 22.07.15
}

//================================================================================​=====

void loop() {
  displayTime(); // display the real-time clock data on Monitor + LCD,
  delay(1000);   // every second
}

//================================================================================​=====
//================================================================================​=====


Angehängte Datei(en) Thumbnail(s)
   
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
23.07.2015, 08:58 (Dieser Beitrag wurde zuletzt bearbeitet: 23.07.2015 08:59 von HaWe.)
Beitrag #2
RE: Beispiel: Mega Uhr RTC DS3231 Anzeige auf LCD1602
wegen zeitlich zu stark begrenzter Nacheditier-Möglichkeiten hier im Forum jetzt immer der aktuelle Code hier (falls Berichtigungen/Verbesserungen kommen):

http://www.mindstormsforum.de/viewtopic....459#p67457
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
04.08.2015, 18:31
Beitrag #3
RE: Beispiel: Mega Uhr RTC DS3231 Anzeige auf LCD1602
Hi ...

es geht auch noch anders ... schau mal hier: http://www.blog.sa2bfo.com in Projekt 5 mit Temperatur und Feuchtefuehler DHT22 und autoamtischem Uhrabgleich via NTP-Server sowie LCD Ansteuerung ueber I2C!

Gruess
Andreas
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
04.08.2015, 21:26 (Dieser Beitrag wurde zuletzt bearbeitet: 04.08.2015 21:27 von HaWe.)
Beitrag #4
RE: Beispiel: Mega Uhr RTC DS3231 Anzeige auf LCD1602
ja klar, es gibt hunderttausend verschiedene Möglichkeiten! Es sollte nur MEINE Implementierung zeigen zur Orientierung - ein NTP Server war aber absolut nicht mein Thema!
Mach aber dazu gerne selber deinen eigenen Thread auf und stelle es ausführlich samt Code etc. vor. (Mit meinem TOP hat es ja nichts direkt zu tun!)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  Kombiinstrument mit Arduino Mega wwilhelm 4 392 07.11.2017 21:56
Letzter Beitrag: Tommy56
  Telemetrie-Shield für Arduino MEGA DL8MA 11 710 17.10.2017 19:15
Letzter Beitrag: DL8MA
  GSM800 & Arduino Mega Osotastic 7 841 29.04.2017 20:38
Letzter Beitrag: georg01
  Arduino Mega 2560 und Ethernetshield mit SD Card OLDARDUINO 0 1.056 29.11.2016 09:50
Letzter Beitrag: OLDARDUINO
  6 Projekte fuer Arduino MICRO, UNO, MEGA ... andreas002 20 14.829 28.11.2015 18:34
Letzter Beitrag: andreas002
  Tasterabfrage mit Arduino Mega 2560 robotzzz 13 4.833 19.09.2015 20:43
Letzter Beitrag: robotzzz
  Arduino Mega Netzwerkkarte MTML/CSS Haustechno 3 1.799 03.08.2015 21:18
Letzter Beitrag: Haustechno
  10-20 Volt Sensor am Arduino MEGA Nopody33 4 2.191 03.08.2015 10:57
Letzter Beitrag: Nopody33
  Mini Mega 2560 itsy 22 5.989 02.04.2015 18:01
Letzter Beitrag: itsy
Photo Programmieren eines Mähroboters mit dem Arduino Mega 2560 Leipzig 6 3.132 31.03.2015 21:36
Letzter Beitrag: Thorsten Pferdekämper

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste