BMP280 - Kli­ma­an­la­ge mit Zeit­mes­sung

Lese­zeit: 4 Minu­ten
Navi­ga­ti­on

Zusätz­lich zur Steue­rung des Lüf­ters soll die Zeit ange­zeigt wer­den.

So sieht es aus:

Benö­tig­te Bau­tei­le:

  • RTC-Modul DS3231
  • Tem­pe­ra­tur­mes­ser BMP280
  • LCD 1602
  • 5V Lüf­ter
  • Lei­tungs­dräh­te

Baue die Schal­tung auf.
(Fah­re mit der Maus über das Bild, um die Bezeich­nun­gen der Bau­tei­le zu sehen)

Benö­tig­te Biblio­the­ken:
Sketch → Biblio­thek ein­bin­den → Biblio­the­ken ver­wal­ten

Bin­de die benö­tig­ten Biblio­the­ken ein und defi­nie­re die Varia­blen.

# include <Adafruit_BMP280.h>
# include <LiquidCrystal_I2C.h>

#include <RTClib.h>
RTC_DS3231 rtc;
char daysOfTheWeek[7][12] = {"Sonntag", "Montag", "Dienstag", "Mittwoch", "Donnerstag", "Freitag", "Samstag"};

// Sensor einen Namen zuweisen (bmp)
Adafruit_BMP280 bmp;

// LCD einen Namen zuweisen
LiquidCrystal_I2C lcd(0x27, 20, 4);

// Pin des Lüfters
int LUEFTER = 8;

Der setup-Teil. Beach­te die Kom­men­ta­re.

void setup()
{
  // LCD einschalten
  lcd.init();
  lcd.backlight();

  pinMode(LUEFTER, OUTPUT);

  // BMP280 starten
  bmp.begin();

  // RTC starten
  rtc.begin();
  /*
    wenn Datum und Zeit nicht korrekt -> Datum/Zeit setzen
    Jahr, Monat, Tag, Stunde, Minute, Sekunde
    keine führende 0 setzen
    Beispiel:
    rtc.adjust(DateTime(2019, 8, 22, 20, 12, 30));
  */
}

Der loop-Teil. Beach­te die Kom­men­ta­re.

void loop()
{
  // aktuelle Zeit holen
  DateTime aktuell = rtc.now();
  
  // wenn Stunden < 10 -> führende 0 setzen
  if (aktuell.hour() < 10) lcd.print("0");
  lcd.print(aktuell.hour());
  lcd.print(':');

  // wenn Minuten < 10 -> führende 0 setzen
  if (aktuell.minute() < 10) lcd.print("0");
  lcd.print(aktuell.minute());
  lcd.print(':');

  // wenn Sekunden < 10 -> führende 0 setzen
  if (aktuell.second() < 10) lcd.print("0");
  lcd.print(aktuell.second());
  
  // Daten BMP280 lesen
  String AnzeigeTemperatur = String(bmp.readTemperature());
  
  // . durch , ersetzen
  AnzeigeTemperatur.replace(".", ",");

  // Anzeige LCD
  lcd.setCursor(0, 0);
  lcd.setCursor(0, 1);
  lcd.print("Temperatur: ");
  lcd.setCursor(0, 2);

  // \337C -> °
  lcd.print(AnzeigeTemperatur + " \337C -> BMP280");

  // Lüfter einschalten
  // round() -> Temperatur runden
  if (round(bmp.readTemperature()) > 25)
  {
    digitalWrite(LUEFTER, HIGH);
    lcd.setCursor(0, 3);
    lcd.print("L\365fter eingeschaltet");
  }
  // Lüfter ausschalten
  else
  {
    digitalWrite(LUEFTER, LOW);

    lcd.setCursor(0, 3);

    // \365 -> ü
    lcd.print("L\365fter ausgeschaltet");
  }

  delay(3000);
}


Ver­wand­te Auf­ga­ben:



Letzte Aktualisierung: 21. Mrz 2020 @ 19:07