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.
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)
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);
}