Hilfe für meine Uhr

Hallo ich wollte jetzt nach längerer Zeit mein Project vollenden.
Hatte es mit Hilfe des Forums zum laufen bekommen, aber jetzt stellt sich die Uhr nicht mehr und ich bekomme auch immer eine Fehlermeldung.
Hatte mein Rechner neuinstalliert und die Arduino Software auch neuinstalliert. danach waren die Bibliotheken weg.
Eigentlich wollte ich die Uhr auch ohne PC betreiben können.
Kann mir jemand bitte helfen?

#include "RTClib.h"
#include <Wire.h>
#include <IRremote.h>               // Die IRRemote- Library 
#include <Arduino.h>
#include <U8g2lib.h>
#include <SPI.h>

int freeRam () {
  extern int __heap_start, *__brkval; 
  int v; 
  return (int) &v - (__brkval == 0 ? (int) &__heap_start : (int) __brkval); 
}

U8G2_SSD1306_128X64_NONAME_1_HW_I2C u8g2(U8G2_R0);

#define ledPin 3
byte ledState = 0;

int RECV_PIN = 7;                   // An Pin 7 werden die Empfangenen Daten vom
// Infrarotsensor gesammelt

IRrecv irrecv(RECV_PIN);            // Ein IRrecv- Objekt wird definiert,

decode_results results;             // Die dekodierten Daten, werden in Results
// gespeichert 

RTC_DS3231  rtc;

void setup() {

  irrecv.enableIRIn();                // Der Infrarotsensor wird hier initialisiert
  pinMode(ledPin, OUTPUT);
  u8g2.begin();
  Serial.begin (9600);
Serial.println("\n[memCheck]");
    Serial.println(freeRam());

 if (! rtc.begin()) {
    Serial.print("RTC nicht gefunden");
    Serial.flush();
    abort();
  }


  if (rtc.lostPower()) {
    Serial.print("Zeit muss neu eingestellt werden");
    // Wenn die Zeit auf einem neuen Gerät oder nach einem Stromausfall eingestellt werden muss,
    //setzt die folgende Zeile die RTC auf das Datum und die Uhrzeit, zu der dieser Sketch erstellt wurde
    rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));

  }
}

void loop()
{
  
  u8g2.firstPage();
  do {
    
  
  DateTime now = rtc.now();
    u8g2.setFont(u8g2_font_crox4hb_tn); 
    u8g2.setCursor(15, 20);
    ausgabe(now.day());
    u8g2.print('.');
    ausgabe(now.month());
    u8g2.print('.');
    u8g2.print(now.year(), DEC);

    u8g2.setFont(u8g2_font_helvR24_tn);
    u8g2.setCursor(2, 60);
    ausgabe(now.hour());
    u8g2.print(':');
    ausgabe(now.minute());
    u8g2.print(':');
    ausgabe(now.second());
  } while ( u8g2.nextPage() );
  

  if (irrecv.decode(&results))
  {
    unsigned int value = results.value;
    switch (results.value)
    {
      case 16753245: //Keypad button "ON/OFF"

        if (ledState == 0 )
        {
          digitalWrite(ledPin, HIGH);
          ledState = 1;
          irrecv.resume();
        }
        else
        {
          digitalWrite(ledPin, LOW);
          ledState = 0;
          irrecv.resume();
        }
        break;
    }
  } 
  Serial.println("\n[memCheck2]");
  delay(1000);
  
}


void ausgabe(uint8_t zahl){
   if (zahl < 10) {
      u8g2.print('0');
    }
    u8g2.print(zahl, DEC);
}

Texte (Fehlermeldungen) sollten auch als Text, nicht als Bild eingestellt werden.
Das sind Warnungen (keine Fehler), das etwas deprecated (veraltet) ist. Der Sketch wird compiliert.

Es sieht außerdem so aus, als würde Dein Sketch-Ordner "Uhr_funktioniert" im Lib-Ordner liegen würde. Da gehört der nicht hin.

Gruß Tommy

Danke schön werde es in Zukunft berücksichtigen und die Fehler auch als Text hinterlegen.
Muss die Uhr immer am PC mit der Scetch-Software werden?

Nö, warum sollte sie?

Was gibt der serielle Monitor aus?
Dein Ordner Uhr_funktioniert wird als Lib betrachtet. Verschiebe den mal ins Sketchbook.

Gruß Tommy

Tommy56:
Nö, warum sollte sie?

Was gibt der serielle Monitor aus?
Dein Ordner Uhr_funktioniert wird als Lib betrachtet. Verschiebe den mal ins Sketchbook.

Gruß Tommy

Hab ich bereits gemacht. habe den Code jetzt neu hochgeladen und alles läuft sauber.
Das Projekt stand jetzt ca 3 Monate in der Ecke (Ohne Strom nur die Batterie der Uhr hab ich drin gelassen) aber nach dem Anschließen gestern abend war alles auf 01.01.2000 00:00 zurückgesetzt.
erst wo ich eben alle neu hochgeladen habe, hat sich die Uhr korrekt gestellt.

Aktuell gibt der Serielle Monitor
[memCheck2]
The function decode(&results)) is deprecated and may not work as expected! Just use decode() - without any parameter.
aus

Edit: jetzt funktioniert die Fernbedienung nicht mehr. -.-
(PS: dient nur für das Steuern einer Beleuchtung)

Lies mal, was Du unter [memCheck2] geschrieben hast.

Gruß Tommy

hab jetzt alles überarbeitet aber Serial.println(IRR.results.value,HEX); spuckt nur 0 aus.
Egal welche Taste ich drücke

#include "RTClib.h"
#include <Wire.h>
#include <IRremote.h>               // Die IRRemote- Library 
#include <Arduino.h>
#include <U8g2lib.h>
#include <SPI.h>

int freeRam () {
  extern int __heap_start, *__brkval; 
  int v; 
  return (int) &v - (__brkval == 0 ? (int) &__heap_start : (int) __brkval); 
}

U8G2_SSD1306_128X64_NONAME_1_HW_I2C u8g2(U8G2_R0);

#define ledPin 3
byte ledState = 0;

int input_pin = 7;                   // An Pin 7 werden die Empfangenen Daten vom
// Infrarotsensor gesammelt

IRrecv IRR(input_pin);            // Ein IRrecv- Objekt wird definiert,

decode_results results;             // Die dekodierten Daten, werden in Results
// gespeichert 

RTC_DS3231  rtc;

void setup() {

  Serial.begin (9600);
  IRR.enableIRIn();                // Der Infrarotsensor wird hier initialisiert
  pinMode(ledPin, OUTPUT);
  u8g2.begin();
  
//Serial.println("\n[memCheck]");
//  Serial.println(freeRam());

 if (! rtc.begin()) {
    Serial.print("RTC nicht gefunden");
    Serial.flush();
    abort();
  }


  if (rtc.lostPower()) {
    Serial.print("Zeit muss neu eingestellt werden");
    // Wenn die Zeit auf einem neuen Gerät oder nach einem Stromausfall eingestellt werden muss,
    //setzt die folgende Zeile die RTC auf das Datum und die Uhrzeit, zu der dieser Sketch erstellt wurde
    rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));

  }
}

void loop()
{
  
  u8g2.firstPage();
  do {
    
  
  DateTime now = rtc.now();
    u8g2.setFont(u8g2_font_crox4hb_tn); 
    u8g2.setCursor(15, 20);
    ausgabe(now.day());
    u8g2.print('.');
    ausgabe(now.month());
    u8g2.print('.');
    u8g2.print(now.year(), DEC);

    u8g2.setFont(u8g2_font_helvR24_tn);
    u8g2.setCursor(2, 60);
    ausgabe(now.hour());
    u8g2.print(':');
    ausgabe(now.minute());
    u8g2.print(':');
    ausgabe(now.second());
  } while ( u8g2.nextPage() );
  

  if (IRR.decode())
  {
    //unsigned int value = IRR.results.value;
    Serial.println(IRR.results.value,HEX);
    IRR.resume();
    switch (results.value)
    {
      case 16753245: //Keypad button "ON/OFF"

        if (ledState == 0 )
        {
          digitalWrite(ledPin, HIGH);
          ledState = 1;
          IRR.resume();
        }
        else
        {
          digitalWrite(ledPin, LOW);
          ledState = 0;
          IRR.resume();
        }
        break;
    }
    
  } 
  
  delay(1000);
  
}


void ausgabe(uint8_t zahl){
   if (zahl < 10) {
      u8g2.print('0');
    }
    u8g2.print(zahl, DEC);
}

Schaue doch einfach mal in die Beispiele zu IrRemote und versuche erst mal das Beispiel zum Laufen zu bekommen.

Gruß Tommy

Tommy56:
Schaue doch einfach mal in die Beispiele zu IrRemote und versuche erst mal das Beispiel zum Laufen zu bekommen.

Gruß Tommy

hab ich probiert da is es das selbe Spiel. bekomme nur 0 als Rückgabe

This topic was automatically closed 120 days after the last reply. New replies are no longer allowed.