Hallo,
gleich vorab ich bin recht neu beim Programmieren und kenne mich entsprechende noch nicht so gut aus.
Ich möchte eine Steuerung für einen Verstärker Programmieren.
Es sollen 7 Relais und ein Motor gesteuert werden per Fernbedienung.
Die 5 Eingangsrelais anzusteuern funktioniert bereits.
Allerdings müssen 2 der Relais wie ein Taster geschaltet werden, also wenn ich den Knopf einmal auf der Fernbedienung drücke soll es angehen und anbleiben und wenn ich nochmal drücke ausgehen. Allerdings blinken im Testaufbau dann nur die Leds abwechseld von PIN 10 und dem ausgewählten A1-5 Pin.
Auserdem muss ich noch ein Motorpoti ansteuern. Hier soll der Motor drehen wenn ich den Knopf auf der Fernbedienung drücke bis ich in loslasse. Beim testen flackern dann aber auch die LEDs von PIN A1-5 (je nach dem welcher aktiv ist) und das soll ja so nicht sein. Außerdem fährt er immer stufenweiße mit High,Delay,LOW. Schöner währe aber Stufenlos.
#include <IRremote.h>
const int RECV_PIN = 12;
IRrecv irrecv(RECV_PIN);
decode_results results;
unsigned long key_value = 0;
bool geschaltet = false;
void setup() {
Serial.begin(9600);
irrecv.enableIRIn();
pinMode(A1, OUTPUT);
pinMode(A2, OUTPUT);
pinMode(A3, OUTPUT);
pinMode(A4, OUTPUT);
pinMode(A5, OUTPUT);
pinMode(10, OUTPUT);
pinMode(4, OUTPUT);
digitalWrite(A1, HIGH);
}
void loop() {
if (irrecv.decode(&results)) {
Serial.println(results.value, HEX);
irrecv.resume();
}
if (results.value == 0x9E6140BF)
{
if (geschaltet == false) {
geschaltet = true;
}
else {
geschaltet = false;
}
}
if (geschaltet == true) {
delay(100);
digitalWrite(10, HIGH);
}
if (geschaltet == false) {
delay(100);
digitalWrite(10, LOW);
}
if (results.value == 0XFFFFFFFF)
results.value = key_value;
switch (results.value) {
case 0x5EA19867:
digitalWrite(A2, LOW);
digitalWrite(A4, LOW);
digitalWrite(A5, LOW);
digitalWrite(A3, LOW);
delay(150);
digitalWrite(A1, HIGH);
break;
case 0x5EA1837C:
digitalWrite(A1, LOW);
digitalWrite(A4, LOW);
digitalWrite(A5, LOW);
digitalWrite(A3, LOW);
delay(150);
digitalWrite(A2, HIGH);
break;
case 0x5EA103FC:
digitalWrite(A2, LOW);
digitalWrite(A1, LOW);
digitalWrite(A4, LOW);
digitalWrite(A5, LOW);
delay(150);
digitalWrite(A3, HIGH);
break;
case 0x5EA128D7:
digitalWrite(A1, LOW);
digitalWrite(A5, LOW);
digitalWrite(A3, LOW);
digitalWrite(A2, LOW);
delay(150);
digitalWrite(A4, HIGH);
break;
case 0x5EA16897:
digitalWrite(A2, LOW);
digitalWrite(A1, LOW);
digitalWrite(A4, LOW);
digitalWrite(A3, LOW);
delay(150);
digitalWrite(A5, HIGH);
break;
key_value = results.value;
irrecv.resume();
}
}
Vielleicht kann mir ja jemand helfen
LG