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
  Arduino Mega 2560 und Ethernetshield mit SD Card OLDARDUINO 0 67 29.11.2016 09:50
Letzter Beitrag: OLDARDUINO
  6 Projekte fuer Arduino MICRO, UNO, MEGA ... andreas002 20 9.777 28.11.2015 18:34
Letzter Beitrag: andreas002
  Tasterabfrage mit Arduino Mega 2560 robotzzz 13 3.370 19.09.2015 20:43
Letzter Beitrag: robotzzz
  Arduino Mega Netzwerkkarte MTML/CSS Haustechno 3 1.274 03.08.2015 21:18
Letzter Beitrag: Haustechno
  10-20 Volt Sensor am Arduino MEGA Nopody33 4 1.492 03.08.2015 10:57
Letzter Beitrag: Nopody33
  Mini Mega 2560 itsy 22 4.441 02.04.2015 18:01
Letzter Beitrag: itsy
Photo Programmieren eines Mähroboters mit dem Arduino Mega 2560 Leipzig 6 2.289 31.03.2015 21:36
Letzter Beitrag: Thorsten Pferdekämper
  Arduino Mega und Due am Lego NXT HaWe 0 1.174 02.01.2015 11:21
Letzter Beitrag: HaWe
  Beispiel Button Problem citycar 4 1.179 26.10.2014 22:18
Letzter Beitrag: citycar
  Schrankensteuerung - optische Anzeige do1xxy 5 1.812 23.10.2014 15:48
Letzter Beitrag: Stefan

Gehe zu:


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