Status LED ohne Delay, Sleep und Infrarot

Und ist weiter günstig nur die Konkurrenz hat ihn überholt zb .Reichelt ist schneller und mann ist sicher das dass auf lager liegt

naja aber kann ich jetzt auch nicht ändern. laut dhl ist es zumindest schonmal an die übergeben worden, kann also nicht mehr so lange dauern.
Wegen dem sleep mode gibt es da irgendwelche funktionierenden Ideen. An sich muss sowas ja in jeder 0815 IR Fernbedienung drin sein.

Du vergisst das Gerätschaften mit IR haben eignen Prozessor und abgestimmte PRG für die und nur den Senderchip

Der Empfänger ist ja auch noch in Arbeit

hm was ist mit Sender was für Typ?
Empfänger ist ja nicht die Welt damit hat Arduino null probleme

Ich sag dir was, vergiss die Idee eigne Protokolle zu schreiben. Das Rad haben wir schon mehr als 1000J

Ne einfach ir led sollte doch reichen um nen hex Code zu senden. Empfangen klappt schon hab mal meine fernbedienungen vom TV ausgelesen

Welche eigene protokolle meinst du damit?

In den IR Beispielen ist auch "Senden" spiel damit rum

OK guter Tipp fehlt nur noch dieser sleep mode

Meine Dammen und Herren hiermit erkläre ich, das wen auf der Tafel erscheint die EINS gehen wir schlafen == sleep mode.
Studiere den Datenblatt da ist er beschrieben ---- sory habe keinen Tiny

kann man da das Datenblatt nicht auch gegen Erfahrungswerte tauschen?

Nach sleep mode im Forum gesucht ?,
wenn in englisch nicht zu Stark deepl Übersetzer benutzen google im dem Fall ist mist

So ich melde mich nochmal zu Wort.
Code und Schaltaufbau sind nochmal geändert.

//#include <Arduino.h>
#include <IRremote.h>
#include <avr/io.h>
#include <avr/wdt.h>
#include <avr/sleep.h>
#include <avr/interrupt.h>
#define adc_disable() (ADCSRA &= ~(1<<ADEN)) // disable ADC (before power-off)


const int b2 = 3;     //Auslöse Button Tasten
const int G_LED = 0;  //Grüne status LED

IRsend irsend;

//  LED Blink Loop Rechner 

boolean value = LOW;              // Startwert der LED
unsigned long previousMillis = 0; // speichert wie viele Sekunden seit derletzten Änderung vergangen sind
unsigned long interval = 500;    // Interval zwischen zwei Änderungen

//  Sleep Timmer Rechner 

unsigned long sleeptimerMillis = 0;       // speichert wie viele Sekunden seit derletzten Änderung vergangen sind
unsigned long sleeptimerinterval = 30000; // Wartezeit bis Warnlicht des Sleep Mode 30s später 10min=>600 000 ms



void setup()
{
  pinMode(b2, INPUT_PULLUP); //Tasten
  pinMode(G_LED, OUTPUT);
  adc_disable(); // ADC uses ~320uA
  set_sleep_mode(SLEEP_MODE_PWR_DOWN);
  //Serial.begin(9600);
}


void sleep()
{
  digitalWrite(G_LED, LOW);
  sleep_enable();
  sleep_cpu();
}


void loop()
{
  //+++++++++++Taster Abfrage+++++++++++++++
  if (digitalRead(b2) == HIGH)
  {
    //irsend.sendNEC(0x56E5FC10, 32);
    delay(10);
    //Serial.print("Taster ausgelenkt ");
    sleeptimerMillis = millis(); //Timmer für Sleep Mode reset
    previousMillis = millis();   // aktuelle Zeit abspeichern
    digitalWrite(G_LED, HIGH);
  }

  //++++++++++LED Status Blinken++++++++++++
  if (millis() - previousMillis > interval)
  {
    previousMillis = millis(); // aktuelle Zeit abspeichern

    value = !value; // LED Zustand wecheln.

    digitalWrite(G_LED, value); // Wert auf den Ausgang schreiben
  }
  //+++++++++Timer Sleep Mode zähler++++++++
  if (millis() - sleeptimerMillis > sleeptimerinterval)
  {
    sleeptimerMillis = millis(); // aktuelle Zeit abspeichern
    //Serial.print("Schlafmodus wird aktiviert ");
    sleep();
  }
}

An sich Funktioniert der Großteil und ich bin wieder ein paar Ecken schlauer, aber:
Ich habe die Verdatung so angepasst wie es in dem integriertem Sleep Mode verlangt wird. Und zwar das er über den INT0 einen Interrupt bekommt. Dieser liegt an PB2 und ist nun auch so anschlossen. Genauso wird von der IRremote Librarry vorgegeben das der pin PB4 der Ausgang für die IR LED ist. Auch das ist nun so verkabelt.
Der Button der das Tasten Simuliert wurde durch einen Schalter NC ersetzt. Die Platine des echten Tasters ist ja dann später auch ein ganz einfacher mechanischer Öffner.

  1. Sobald ich aber //irsend.sendNEC(0x56E5FC10, 32); entkommentiere geht gar nichts mehr und die Grüne LED bleibt genauso wie gestern nach einmaligem Tasten in einem an Zustand stecken.
    Dort Lag also auch gestern igwie das Problem.

  2. der void sleep wird zwar aufgerufen, aber er überspringt sleep_enable(); sleep_cpu(); und springt sofort wieder in den loop.

Das kann nichts werden.

Danke für deine absolut informative Antwort

Mit einem Pullup sind gedrückte Taster Low

Bitte.
Dann ist ja alles schick und Du kommst allein klar.

(Sehr gerne für Dich debugging betrieben und Fehler aufgezeigt)

Außer sie sind NC. Aber so unübliche Elemente sollten im Code ausreichend kommentiert werden, damit nicht jeder fälschlicherweise drüber stolpert.

Mich stört oft die Verwendung von HIGH und LOW wenn absolut nicht erkennbar ist, ob das nun einen offenen oder geschlossenen Schalter bedeutet, oder eine LED ein oder aus schaltet. Ein #define b2Active könnte hier Klarheit schaffen, ohne daß man nachsehen muß, ob damit HIGH oder LOW gemeint ist. Puristen können auch eine inline Funktion draus machen...

Erst sollte ich alles kosmetische raus nehmen und nun wird sowas überlesen. Im Text von #74 steht ganz klaar drin das der "Button" ein NC ist. Weiterhelfen tun mir solche Kommentare leider nicht viel.
Mein Problem mit dem sleep mode und dem irsend bleiben so trotzdem bestehen.