Hallo zusammen, ich probiere einen Motor mit einer IR-Fernbedienung zu steuern. Der Motor soll 3 Geschwindigkeitsstufen haben, sowie bis zum stillstand bremsen.
Wenn ich im loop die Fahrstufen der Reihe nach aufrufe, funktionieren diese, aber sobald ich den IR-Empfänger einbinde funktioniert nichts mehr.
Hier mein Code:
#include <IRremote.h>
int motorPin2=3; // PWM
unsigned long prei;
int i;
bool a = false;
bool b = false;
bool c = false;
bool d = false;
int irPin = 8; //Pin für den IR Receiver
IRrecv irrecv(irPin); //Objekt initialisieren für die IR Übertragung
decode_results results;
void setup() {
// put your setup code here, to run once:
pinMode(motorPin2,OUTPUT);
pinMode(irPin, INPUT); //Den IR Pin als Eingang deklarieren.
irrecv.enableIRIn(); //Den IR Pin aktivieren
Serial.begin(9600); //Serielle kommunikation mit 9600 Baud beginnen.
}
void geschw1 (){
if (i<100){
for (i; i<100;){
if ((millis() - prei) >= 20){
analogWrite(motorPin2, i);
i++;
prei = millis ();
}
}}else if (i>100){
for (i; i>=100;){
if ((millis() - prei) >= 20){
analogWrite(motorPin2, i);
i--;
prei = millis ();
}
}
analogWrite (motorPin2, i);
}
}
void geschw2 (){
if (i<160){
for (i; i<160;){
if ((millis() - prei) >= 20){
analogWrite(motorPin2, i);
i++;
prei = millis ();
}
}}else if (i>160){
for (i; i>=160;){
if ((millis() - prei) >= 20){
analogWrite(motorPin2, i);
i--;
prei = millis ();
}
}
analogWrite (motorPin2, i);
}
}
void geschw3 (){
if (i<255){
for (i; i<255;){
if ((millis() - prei) >= 20){
analogWrite(motorPin2, i);
i++;
prei = millis ();
}
}}else if (i>255){
for (i; i>=255;){
if ((millis() - prei) >= 20){
analogWrite(motorPin2, i);
i--;
prei = millis ();
}
}
analogWrite (motorPin2, i);
}
}
void bremsen (){for (i; i>=0;){
if ((millis() - prei) >= 20){
analogWrite(motorPin2, i);
i--;
prei = millis ();
}
}
analogWrite (motorPin2, i);}
void loop() {
static unsigned long resultsvalue = 0; // eine statische Variable für den IR-Code
if (irrecv.decode(&results)) {
resultsvalue = results.value;
Serial.println(results.value, DEC);
irrecv.resume();
}
if (resultsvalue == 3249168798) {a=true; b=false; c=false; d=false;}
if (resultsvalue == 3249148398) {a=false; b=true; c=false; d=false;}
if (resultsvalue == 3249181038) {a=false; b=false; c=true; d=false;}
if (resultsvalue == 3249208323) {a=false; b=false; c=false; d=true;}
if (a == true) geschw1();
if (b == true) geschw2();
if (c == true) geschw3();
if (d == true) bremsen();
}
Das Problem ist folgende Zeile:
irrecv.enableIRIn(); //Den IR Pin aktivieren
sobald ich das hinzufüge geht es nicht mehr.
Danke für eure Hilfe!