Hallo
arbeite mit Mega 2560
meine Übungsaufgabe ist eine LED mit der Fernbedienung Taste 1 ein und solange hell zu bleiben bis Taste 1 gedrückt wird zum abzuschalten (funktioniert)
der fade Effekt bei an bzw. aus mit delay funktioniert.
Der fade Effekt bei an bzw. aus mit Millis funktioniert nur wenn er permanent alleine im Loop lauft,
nicht jedoch so wie im Sketsch Geschieben.
Was mache ich falsch.
nächste Übungsaufgabe ist LED an mit fade Effekt und flacker Effekt ( flacker Effekt alleine schon geschafft jedoch nicht in kombinaton).
Ich will es Schaffen auch einmal Hilfe zu geben und nicht nur um Hilfe zu Bitten.
Danke im vorraus
mfg. Kapitano
const int buttonPin = 9; //alt 12
int Hof = 45; // LED 7
int EG = 12; // LED 1~ alt 11;
int EG1 = 11; // LED 2~ alt 10;
int FEU = 6; // LED 3~ alt 9;
int DG = 5; // LED 4~
int DG1 = 3; // LED 5
int ST = 2; // LED 6~
int ST1 = 44; // LED 8~
int itsONled[] = {0, 0, 0, 0, 0, 0, 0, 0, 0};
// 0, 1, 2, 3, 4, 5, 6, 7, 8
//int ledPins[] = {12, 11, 6, 5, 3, 2, 45, 44}; //array with all the LED's pins
//int i = 0; //LED index for the arrays
//--- IR-Receiver: ----------------------------------------------------------------
#include <IRremote.h>
int RECV_PIN = 13;
IRrecv irrecv(RECV_PIN);
decode_results results;
unsigned long result = results.value;
//IR Fernbedienugsmanegment-----------------------------------------
#define Taste1 16724175 // code received from button 1
#define Taste2 16718055 // code received from button 2
//--- Fade: -----------------------------------------------------------------
const unsigned int fadeAmount = 5; // how many points to fade the LED by
int fadeValue;
//--- Millis: ---------------------------------------------------------------------
const unsigned int loopTime = 30;
long previousMillis;
void setup() {
pinMode(EG, OUTPUT);
pinMode(EG1, OUTPUT);
pinMode(FEU, OUTPUT);
pinMode(DG, OUTPUT);
pinMode(DG1, OUTPUT);
pinMode(ST, OUTPUT);
pinMode(ST1, OUTPUT);
pinMode(Hof, OUTPUT);
pinMode(buttonPin, INPUT);
Serial.begin(9600);
irrecv.enableIRIn(); // Startet den IR-Receiver.
}
void loop() {
FB();
}
//### diese variante funktioniert NICHT was ist falsch ################
void prEG() {
if (itsONled[1] == 1) {
if ((millis() - previousMillis + loopTime)) {
fadeValue -= fadeAmount;
analogWrite(EG, fadeValue);
previousMillis = millis();
}
itsONled[1] = 0;
} else {
fadeValue += fadeAmount;
analogWrite(EG, fadeValue);
previousMillis = millis();
}
itsONled[1] = 1;
}
//### diese variante funktioniert ################
void prEG1() {
if (itsONled[2] == 1) {
for (int fadeValue = 255 ; fadeValue >= 0; fadeValue -= 5) {
analogWrite(EG1, fadeValue);
delay(30);
}
itsONled[2] = 0;
} else {
for (int fadeValue = 0 ; fadeValue <= 255; fadeValue += 5) {
analogWrite(EG1, fadeValue);
delay(30);
}
itsONled[2] = 1;
}
}
//##### Fernbedienung #####
void FB() {
if (irrecv.decode(&results)) {
unsigned long result = results.value;
Serial.println(result);
irrecv.resume(); // Receive the next value
//---Fernbedienung Tastenbelegung--------------------------------------------------------------
switch (result) {
break;
case Taste1:
Serial.println("Taste 1 getrueckt");
prEG();
break;
case Taste2:
Serial.println("Taste 2 getrueckt");
prEG1();
break;
} //#### switch (result) Ende #####
} //#### if irrecv Ende #####
}//#### void FB Ende #####