Projekt Überwachung/Schalter/Termin Planung/ Abfall Kalender / Servo / Relais / LCD Menü über Encoder /offenes Projekt/ zum Nachbau

@my_xy_projekt
Jetzt könnte ich echt Hilfe und dein Wissen gebrauchen.
Mein Startbildschirmcode läuft jetzt in soweit das, Datum / Uhrzeit / Temperatur Angezeigt wird.
Auch ein kleiner TerminPlan ist drin aber der ist nur zur ansicht gedacht .
zurück zu #199 Sd Karte .
Gerade Eben habe ich von Joerg_L den Beitrag
https://forum.arduino.cc/t/vorstellung-arduino-mull-geburtstags-kalender/471797/2
gefunden . Was für mich persönlich super wäre .

  1. benutzt er ein Funkmodul als Uhr. und ich eben das DS3231
    bekomme ich nicht umgebaut.
  2. den Taster zum bestädigen brauch ich auch nicht .
  3. zum File auf der SD karte . Ich weiß nicht ob man 2 Files nutzen kann oder das Probleme machen könnte .
    er lässt sich ja genau das anzeigen wie ich das auch möchte ( geburtstage und Abfall ) .
    Ich könnte von hand jetzt alle termine aus der *.ics rausschreiben .
  • Frage:

  • hast du eine Idee dazu ob man 2 Files nutzen könnte, oder es sinnvoll wäre die paar termine von hand in eine TXT am anfang des jahres zu schreiben?

  • kannst du mein Code mit seinen kombinieren? ich bekomme das einfach nicht hin . :frowning:

  • mein code könnte ich Dir geben und seiner ist ja unter dem Link .

  • Ps. nur wenn du Lust und zeit hast . denke mal du könntest sowas in paar minuten schaffen.

LG Toni
mein Code bis jetzt
und in der 4 zeile sollen eben die Termine laufen .

/*
 
  0   RXD
  1   TXD
  2   Endcoder  CLK
  3   Endcoder   DT
  4   Endcoder  SW
  5   Ultraschall Echo
  6   Ultraschall Trigger
  7   Servo  Schliesser
  8   Relay 1 Licht aussen
  9   Lautsprecher 
  10  SC       SD
  11  MOSI     SD 
  12  MISO     SD
  13  SCK      SD 
  14  A0             DHT 11 Temperatur Sensor
  15  A1             Alkohol Tester
  16  A2             Porterweiterung SDA
  17  A3             Porterweiterung SLC
  18  A4 / SDA       Display
  19  A5 / SCL       Display
  20  A4.2           Echtzeit Uhr SDA   DS3231
  21  A5.2           Echtzeit Uhr SCL   DS3231
*/
#include <TimeLib.h>
#include <SPI.h>
#include <SD.h>

#include <LiquidCrystal_I2C.h>
#include <Wire.h>
#include <RtcDS3231.h>
#include <dht.h>
LiquidCrystal_I2C lcd(0x27, 20, 4);             // LCD: Adresse, Zeichen, Zeilen
RtcDS3231<TwoWire> Rtc(Wire);
int DHTPIN = A0;// benutzter ARDUINO-Pin (Analog-Pin 0)
dht sensor;

//#define DHTTYPE DHT11 // DHT 11
//DHT dht(DHTPIN, DHTTYPE);

#define countof(a) (sizeof(a) / sizeof(a[0]))


int TagNr = 0;
String Tag = "";
/// Das muss irgenwie in eine extra header datei oder sowas
String Aufgaben [] {
  "Ruhetag ",  // Sonntag
  "CNC Reparatur ", // Montag
  "17 Uhr Boni  ", // Dienstag
  "kein Termin ", // Mittwoch
  "treffen bei Thomas ",  // Donnerstag
  "Skatabend ",  // Freitag
  "zu den Eltern Fahren ", // Sonnabend
};
///////////////////////////////////////////////////

void setup () {
  lcd.init();                                   // Display initialisieren
  lcd.backlight();                              // Hintergrundbeleuchtung
  Serial.begin(115200);

  Rtc.Begin();
  Rtc.Enable32kHzPin(false);
  Rtc.SetSquareWavePin(DS3231SquareWavePin_ModeNone);

  delay(1000); //wait a sec (recommended for DHT11)

}



void loop ()  {
  delay(1000);
  sensor.read11(DHTPIN);
  RtcDateTime now = Rtc.GetDateTime();
  const RtcDateTime& dt = now;
  char datestring[20];
  snprintf_P(datestring,
             countof(datestring),
             PSTR("%02u/%02u/%04u %02u:%02u"),
             dt.Day(), dt.Month(), dt.Year(), dt.Hour(), dt.Minute() );

  TagNr = dt.DayOfWeek();
  switch (TagNr) {
    case 0: Tag = " Sonntag  "; break;
    case 1: Tag = "  Montag  "; break;
    case 2: Tag = " Dienstag "; break;
    case 3: Tag = " Mittwoch "; break;
    case 4: Tag = "Donnerstag"; break;
    case 5: Tag = " Freitag  "; break;
    case 6: Tag = " Samstag  "; break;
  }
  lcd.setCursor(0, 1);
  // lcd.print("Temp = ");
  lcd.print(sensor.temperature);
  lcd.print(" C\337");

  lcd.setCursor(2, 0);
  lcd.print (datestring); // aktuelles Datum in erste zeile setzen
  /* lcd.setCursor(5, 1);
    lcd.setCursor(0, 2);
    lcd.print ("Termine: ");
    lcd.print (Tag); */
  delay(3000);
  lcd.setCursor(0, 3);
  String Heutige_Aufgabe = Aufgaben [TagNr];
  int Satz_Laenge = Heutige_Aufgabe.length();
  String Ausgabe_Text = "                    ";

  for (int i = 0; i < Satz_Laenge; i++) {
    for (int j = 0; j < 19; j++) {
      Ausgabe_Text [j] = Ausgabe_Text [j + 1];
    }
    Ausgabe_Text [19] = Heutige_Aufgabe [i];
    lcd.setCursor(0, 3);
    lcd.print(Ausgabe_Text);
    delay(500);
  }
}


void printDateTime(const RtcDateTime& dt)
{
  char datestring[20];
  snprintf_P(datestring,
             countof(datestring),
             PSTR("%02u/%02u/%04u %02u:%02u:%02u"),
             dt.Month(),
             dt.Day(),
             dt.Year(),
             dt.Hour(),
             dt.Minute(),
             dt.Second() );

}