IR LED

Hallo,

ich hab da eine Frage an euch.
Ich hab ein wenig erfahrung mit dem Arduino gesammelt und schon mehrere kleine Projekte realisiert, bin grad dabei 2 Led Streifen über Mosfets mit einem IR Sensor zu steuern.
Alles funktioniert soweit, jedoch möchte ich beide separat mit den selben 4 Tasten steuern.

Momentan funktioniert es so:
Taste 1 > An/Aus
Taste 2 > Heller Dimmen (wenn an)
Taste 3 > Dünkler Dimmen

Nun möchte ich aber mit Taste 4 Zwischen den beiden LED Streifen umwechseln können, um zu sehen welche ausgewählt ist, würde ich den Streifen gern 2x Blinken lassen.

Könnt ihr mir da helfen?
Wären da Variablen eine Lösung? Oder sollte ich es anders angehen?

Danke im vorraus.

Variablen sind immer eine gute Lösung :slight_smile:

Du musst halt irgendwie abspeichern in welchem Modus du gerade bist und dann dazwischen wechseln. Bei zwei Streifen reicht da ein bool(ean) den man invertiert. Also true/false. Man kann aber auch gleich eine Zahl nahmen. Dann würde es auch mit mehr Streifen gehen.

Woha, Danke für diese super schnelle Antwort, dachte gar nicht, dass ich Heute noch eine Antwort bekomme. :slight_smile:

Das heisst, ich sollte am besten alles in Variablen Speichern? Ausgewählten Streifen (Modus) & Helligkeitswert?
Sehe ich das Richtig?

Du brauchst nantürlich für jeden Streifen die Werte den Dimmwert für beide (byte PWMVal1,PWMVal2) evtl die Werte nach änderung und EEPROM speichern damit nach Einschalten die alten Werte genommen werden. (z.B. wenn der PWMWert 3s nicht mehr geändert wird damit während dem faden nicht jeder Wert gespeichert wird. Dann lebt der interne EEPROM Brereich länger)
EEPROM Handling ist auch in den Beispielen der IDE ersichtlich.

Dein bisheriger Sketch wäre schön zum helfen.
Gruß
DerDani

Ich muss mich mal in die Variablen erst einlesen, da ich da noch recht wenig Erfahrung habe.

EEPROM muss nicht zwangsläufig sein, wenn ich ihn einschalte, sollte der Arduino einfach bei 0 anfangen, da brauche ich die Werte von davor nicht zwangsläufig.
Außer ich komm an dem speichern im EEPROM nicht rum, da kenn ich mich leider wie gesagt noch nicht aus.

Mein Derzeitiger Code:

#include <IRremote.h>
int bright;
int before;
int out=9; //LED 
int steps=5; //dimmer steps
int RECV_PIN = 11; //data out IR receiver 

IRrecv irrecv(RECV_PIN);

decode_results results;

void setup(){
  irrecv.enableIRIn(); // start receiver
  before=0; //LED off
  bright=255; //brightness value max (255)
  pinMode(out,OUTPUT);
}

void loop() {
  if (irrecv.decode(&results)) {

  if (results.value==0xD00BCB1){ //LED ON/OFF
    if(before==0){ // if LED off, then turn on 
      digitalWrite(out,HIGH);
      before=1; //LED on
    }
    else{
      digitalWrite(out,LOW); //if LED on, then off
      before=0;
      bright=255; 
    }}
  if (results.value==0xD00ACA1 && before==1){ //decrease brightness
    if(bright-255/steps<0){ 
      analogWrite(out,bright);
  }
    else{
    bright=bright-255/steps;
    analogWrite(out,bright);
    
    }}
  if (results.value==0xD002C21 && before==1){ //increase brightness
    if(bright+255/steps>255){
      analogWrite(out,bright);
    }
    else{    
    bright=bright+255/steps;
    analogWrite(out,bright);
  }}
  
  irrecv.resume();
}}

Hallo Leute,

soweit mal alles zum laufen gebracht.

Da ich noch lange kein Pro bin, meine Frage: Was würdet ihr anders machen?

#include <IRremote.h>

int bright;
int bright1;
int bright2;

int mode;

int before;
int before1;
int before2;

int out; //LED 
int steps=5; //dimmer steps

int RECV_PIN = 11; //data out IR receiver

IRrecv irrecv(RECV_PIN);

decode_results results;

void setup(){
  Serial.begin(9600);
irrecv.enableIRIn(); // start receiver
before=0; //LED off
mode=1; //mode startet bei 1
bright=255; //brightness value max (255)
pinMode(out,OUTPUT);
}

void loop() {
if (irrecv.decode(&results)) {

// mode switch ab hier

if (results.value==0xD00000D){ //ModeKnopf
mode++;
}
// ende mode switch

//mode ist ausgang
    if (mode==1){
        out=6;
        bright1=bright;
        before1=before;
                 }
    if(mode==2){
        out=9;
        bright2=bright;
        before2=before;
                }
    if(mode==3){
        mode=1;
                }
//ende ausgang



// ab da steuerung

if (results.value==0xD00BCB1){ //LED ON/OFF
  if(before==0){ // if LED off, then turn on 
    digitalWrite(out,HIGH);
    bright=255;
    before=1; //LED on
    }
else{
  digitalWrite(out,LOW); //if LED on, then off
    before=0;
    bright=255; 
    }}

if (results.value==0xD00ACA1 && before==1){ //decrease brightness
  if(bright-255/steps<0){ 
    analogWrite(out,bright);
    }
  else{
    bright=bright-255/steps;
    analogWrite(out,bright);
      }}

if (results.value==0xD002C21 && before==1){ //increase brightness
  if(bright+255/steps>255){
    analogWrite(out,bright);
    }
  else{ 
    bright=bright+255/steps;
    analogWrite(out,bright);
      }}

irrecv.resume();
    Serial.println();
        Serial.print("mode:");
        Serial.print(mode);
    Serial.println();    
        Serial.print("bright:");
        Serial.print(bright);
    Serial.println();
        Serial.print("before:");
        Serial.print(before);
    Serial.println();
}
}//void loop