Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <SPI.h>
- #include <Wire.h>
- #include <Adafruit_GFX.h>
- #include <Adafruit_SSD1306.h>
- #include <Bme280BoschWrapper.h>
- #define DS3231_ADDRESSE 0x68
- #define OLED_RESET 4
- Adafruit_SSD1306 display(OLED_RESET);
- Bme280BoschWrapper bme280(true);
- int offsettemp = 0;
- int offsethum = 0;
- int offsetpress = 0;
- int taster = 3;
- //int counter = 0;
- void setup() {
- Wire.begin();
- Serial.begin(9600);
- Serial.println("BME280 Bosch test");
- while(!bme280.beginI2C(0x76))
- {
- Serial.println("Cannot find sensor.");
- delay(1000);
- }
- display.begin(SSD1306_SWITCHCAPVCC, 0x3C); //////Display mit der Adresse 0x3C initialisieren
- display.clearDisplay();
- pinMode(taster, INPUT);
- }
- void loop() {
- int val = digitalRead(taster);
- if(val == HIGH){
- disptemp();
- }
- if(val==LOW){
- dispzeit();
- }
- }
- byte decToBcd(byte val) {
- // Dezimal Zahl zu binary coded decimal (BCD) umwandeln
- return((val/10*16) + (val%10));
- }
- byte bcdToDec(byte val) {
- // BCD (binary coded decimal) in Dezimal Zahl umwandeln
- return((val/16*10) + (val%16));
- }
- void leseDS3231zeit(byte *sekunde, byte *minute,byte *stunde, byte *wochentag, byte *tag, byte *monat, byte *jahr) {
- Wire.beginTransmission(DS3231_ADDRESSE);
- Wire.write(0); // DS3231 Register zu 00h
- Wire.endTransmission();
- Wire.requestFrom(DS3231_ADDRESSE, 7); // 7 Byte Daten vom DS3231 holen
- *sekunde = bcdToDec(Wire.read() & 0x7f);
- *minute = bcdToDec(Wire.read());
- *stunde = bcdToDec(Wire.read() & 0x3f);
- *wochentag = bcdToDec(Wire.read());
- *tag = bcdToDec(Wire.read());
- *monat = bcdToDec(Wire.read());
- *jahr = bcdToDec(Wire.read());
- }
- void disptemp(){
- bool ok = bme280.measure();
- display.setTextColor(WHITE);
- display.setTextSize(1);
- display.setCursor(0,1);
- display.println("Temperatur:");
- display.setCursor(75,1);
- display.println((bme280.getTemperature() / 100.0) - offsettemp);
- display.setCursor(110,1);
- display.println("C");
- display.setCursor(0,10);
- display.println("Luftfeuchte:");
- display.setCursor(75,10);
- display.println((bme280.getHumidity() / 1024.0) - offsethum);
- display.setCursor(110,10);
- display.println("%");
- display.setCursor(0,20);
- display.println("Druck:");
- display.setCursor(75,20);
- display.println((bme280.getPressure()/100) - offsetpress);
- display.setCursor(110,20);
- display.println("hPa");
- display.display();
- display.clearDisplay();
- }
- void dispzeit(){
- byte sekunde, minute, stunde, wochentag, tag, monat, jahr;
- leseDS3231zeit(&sekunde, &minute, &stunde, &wochentag, &tag, &monat, &jahr);
- display.setTextColor(WHITE);
- display.setTextSize(1);
- ////////////////////////////////////Datum////////////////////////////////////
- display.setCursor(0,1);
- display.println("Datum:");
- if (tag < 10) {
- display.setCursor(38,1);
- display.println("0");
- display.setCursor(45,1);
- display.println(tag);
- }
- else{
- display.setCursor(40,1);
- display.println(tag);
- }
- display.setCursor(55,1);
- display.println(".");
- if (monat < 10) {
- display.setCursor(63,1);
- display.println("0");
- display.setCursor(70,1);
- display.println(monat);
- }
- else{
- display.setCursor(70,1);
- display.println(monat);
- }
- display.setCursor(80,1);
- display.println(".");
- display.setCursor(90,1);
- display.println(jahr);
- /////////////////////////////////////Uhrzeit////////////////////////////////////////
- display.setCursor(0,12);
- display.println("Zeit:");
- display.setCursor(40,12);
- display.println(stunde);
- display.setCursor(55,12);
- display.println(":");
- if (minute < 10) {
- display.setCursor(63,12);
- display.println("0");
- display.setCursor(70,12);
- display.println(minute);
- }
- else{
- display.setCursor(65,12);
- display.println(minute);
- }
- display.setCursor(80,12);
- display.println(":");
- if (sekunde < 10) {
- display.setCursor(88,12);
- display.println("0");
- display.setCursor(95,12);
- display.println(sekunde);
- }
- else{
- display.setCursor(90,12);
- display.println(sekunde);
- }
- display.setCursor(35,24);
- display.println("maker.ino");
- display.display();
- display.clearDisplay();
- }
- void zeigeZeit(){
- byte sekunde, minute, stunde, wochentag, tag, monat, jahr;
- leseDS3231zeit(&sekunde, &minute, &stunde, &wochentag, &tag, &monat, &jahr); // Daten vom DS3231 holen
- if (tag < 10) { Serial.print("0");}
- Serial.print(tag); // ausgeben T.M.J H:M:S
- Serial.print(".");
- if (monat < 10) { Serial.print("0");}
- Serial.print(monat);
- Serial.print(".20");
- Serial.print(jahr);
- Serial.print(" ");
- if (stunde < 10) { Serial.print("0");}
- Serial.print(stunde, DEC); // byte in Dezimal zur Ausgabe
- Serial.print(":");
- if (minute < 10) { Serial.print("0");}
- Serial.print(minute, DEC);
- Serial.print(":");
- if (sekunde < 10) { Serial.print("0"); }
- Serial.println(sekunde, DEC);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement