Infrarotsensor mit Lauflicht

Hallöschen,

ich probiere gerade mit Hilfe von einer IR Fernbedienung und Sensor ein Lauflicht anzusteuern. Und das Lauflicht so funktioniert auch.

Hier mein Problem: Das Lauflicht geht immer nur einen Schritt weiter und man muss dann erneut drücken um wieder einen Schritt weiter zu gehen.

#include <IRremote.h>
#include <IRremoteInt.h>

const int IRSensor = 11;
IRrecv ausgelesen(IRSensor);
decode_results Ergebnis;

int pArray = {0,0,0,2,3,4,5,6,7,8,9,10,0,0,0};
int pCount = 15;
int activeP = 2;
int dx = 1;
int Pause = 100;

void setup() {
if (ausgelesen.decode(&Ergebnis)) {
Serial.println(Ergebnis.value,DEC);

if (Ergebnis.value == 16718055) { //Zahl für Taste 2

for (int i=0; i<pCount; i++) { //Anfang Lauflichtprogramm
digitalWriteNot0(pArray*, LOW); *

  • }*
  • if (activeP == (pCount-1)) {*
  • activeP = (pCount - 2);*
  • dx = -1;*
  • }*
  • if (activeP == 0) {*
  • activeP = 1;*
  • dx = 1;*
  • }*
  • activeP += dx;*
  • digitalWriteNot0(pArray[activeP], HIGH);*
  • digitalWriteNot0(pArray[activeP-dx], HIGH);*
    _ digitalWriteNot0(pArray[activeP-2*dx], HIGH);_
  • delay(Pause); //Ende Lauflichtprogramm*
  • }*
  • if (Ergebnis.value == 16769055) { //Zahl für -Taste*
  • Pause = Pause - 20;*
  • }*
  • if (Ergebnis.value == 16754775) { //Zahl für +Taste*
  • Pause = Pause + 20;*
  • }*
  • ausgelesen.resume();*
  • }*
    }
    void digitalWriteNot0(int p, boolean state) { //Nur zur Defiierung vom Begriff digitalWriteNot0
  • if (p > 0) {*
  • digitalWrite(p,state);*
  • }*
    }
    Kann man das irgendwie so machen, dass das Lauflicht kontinuierlich läuft wenn man die Taste 2 drückt und aufhört wenn man die 2 erneut drückt, aber dabei die “-” bzw. “+” Taste drücken kann ohne das das Lauflicht aufhört? Würde mich über Hilfe echt freuen:D

Du must einfach zwischenspeichern, dass du gedrückt hast und darauf dein Licht laufen lassen.

Erst wenn du das nächste startest, den Zwischenspeicher neu setzen.

Beispiel ist hier: Beispielcode

Und setze deinen Sketch bitte in Code-Tags.

Verwende dazu die Schaltfläche </> oben links im Editorfenster.
Das kannst du auch nachträglich machen.
Dazu den Sketch markieren und die Schaltfläche klicken.

Damit wird dieser für alle besser lesbar.

Und was ich bis jetzt erkennen kann, ist dein Sketch auch total falsch.
Das ist kein IR-Sensor sondern eine IR-Fernbedienung und die fragst du total falsch ab.

Sieh dir das mal im Beispiel an.

Da das im Setup aufgerufen wird, kann es auch nur einmal funktionieren. Wenn überhaupt.

Wo ist da die Loop ?

... und den Variablen-Overhead kann man auch noch reduzieren, wenn du statt modus1=true und modus2=true einen uint8_t x nimmst und dann bspw x = 1 // modus1 und x = 2 // modus 2 und x = 3 // modus 1 + 2 machst. Wie du das dann ausschmückst ist dann ganz deine Sache.