Arduino Forum

International => Deutsch => Topic started by: invisible09 on Jan 31, 2013, 06:16 pm

Title: Code in einer loop -Schleife wiederholen???
Post by: invisible09 on Jan 31, 2013, 06:16 pm
Hallo, Ich habe diesen code geschrieben:

Code: [Select]
#include <IRremote.h>

int RECV_PIN = 6;
int led1 = 13;
int led2 = 31;
int led3 = 30;
long randOn = 0;                  
long randOff = 0;
int x;

IRrecv irrecv(RECV_PIN);

decode_results results;

void setup()
{
 Serial.begin(9600);
 irrecv.enableIRIn();
  pinMode(led1, OUTPUT);
  pinMode(led2, OUTPUT);
  pinMode(led3, OUTPUT);
 
}

void loop() {
 if (irrecv.decode(&results)) {
   Serial.println(results.value, DEC);
   irrecv.resume();
 }
 switch(results.value){


 case 0x1CE3807F:                   //Der Code meiner ir-Fernbedienung
 [b]digitalWrite (led1, LOW);[/b]         //Möchte gerne dass sich dieser Teil immer wiederholt bis ich den Knopf erneut drücke!!
 [b]digitalWrite (led2, LOW);
 digitalWrite (led3, LOW);
 delay(600);
 digitalWrite (led1, HIGH);
 digitalWrite (led2, HIGH);
 digitalWrite (led3, HIGH);
 delay(600);[/b]
 
 }  
}


Nun hätte ich gerne wie oben schon gesagt dass sich der Teil immer wieder wiederholt
bis ich diese Taste erneut drücke!!

Ist das möglich?? Wenn antwortet bitte mit Vorschlägen  :)
Title: Re: Code in einer loop -Schleife wiederholen???
Post by: vieledinge on Jan 31, 2013, 08:35 pm
Ist doch simpel.

Du nimmst ne zwete Variable, die Du beim Eingehen des IR-Signals toggelst: Ist sie false, dann setzt Du sie auf true. Ist sie true, dann setzt Du sie auf false. Das Ganze dann noch entprellen bzw. nach dem Umschalten eine gewisse Zeit die IR-Auswertung aussetzen, damit nicht gleich wieder umgeschaltet wird.

Und dann noch im Loop die Variable auswerten und nur bei true die gewünschte Ausführung vornehmen.
Title: Re: Code in einer loop -Schleife wiederholen???
Post by: Doc_Arduino on Jan 31, 2013, 08:51 pm
Hallo,

laut meinem Verständnis würde ich das mit einer zusätzlichen Variablen machen und diese mittels if Schleife auswerten, wenn 1 wird die Schleife mit Deinem Programm durchlaufen, wenn die 0 ist, dann eben nicht. Mittels ExklusiveOder ( XOR )kann man eine 1 zur 0 machen und wieder zurück zur 1, je nach Tastendruck. Toggeln genannt.

http://www.arduino.cc/en/Reference/Bitwise (http://www.arduino.cc/en/Reference/Bitwise)

Jetzt änderst Du Dein Programm so, dann XOR nur ausgeführt wird wenn eine Taste gedrückt und und wertest es anschließend aus ...