Hallo liebe gemeinde,
nach tagelangem versuchen & recherchieren muss ich mich jetzt an euch wenden.
Ich programmiere nun schon seit einiger Zeit am Arduino und habe mein Projekt bis auf eine letzte funktion schon abgeschlossen.
Mein Programmierhintergrund liegt in der Steuerungstechnik (SPS Siemens S7, udgl). bin aber am arduino doch noch relativ am Anfang
Overview für mein Modellbauprojekt
Alle funktionen werden über eine IR Fernbedienung gesteuert (diverse LED kreise, Servos, Steppermotor, & Motor mit Endschaltern)
Ich habe die Funktionen zum Testen immer einzeln programmiert und dann in das Hauptsketch eingefügt und entsprechend angepasst. hat bis dato immer problemlos funktioniert.
Soweit so gut.
Nun zu meinem eigentlichen Problem: Motoransteuerung mit 2 Endlagenschaltern:
Dies ist mein Testcode der funktioniert allein (eigentlich recht simpel)
const int EIN = A1; //taster statt IR FB *pulldown
const int AUS = A2; //taster statt IR FB *pulldown
const int EndeEIN = 4;
const int EndeAUS = 3;
const int RampeAUF = 12;
const int RampeZU = 13;
int EINState = 0;
int AUSState = 0;
int EndeEINState = 0;
int EndeAUSState = 0;
void setup() {
pinMode(EIN,INPUT);
pinMode(AUS,INPUT);
pinMode(EndeEIN,INPUT); //endschalter Rampe
pinMode(EndeAUS,INPUT); //endschalter Rampe
pinMode(RampeAUF,OUTPUT);//Motor AUF
pinMode(RampeZU,OUTPUT);//Motor ZU
EINState = digitalRead(EIN);
AUSState = digitalRead(AUS);
EndeEINState = digitalRead(EndeEIN);
EndeAUSState = digitalRead(EndeAUS);
if (EndeEINState == LOW && EndeAUSState ==LOW) { //beide endschalter aus Rampe ZU
digitalWrite (RampeZU,HIGH);
}
}
void loop() {
EINState = digitalRead(EIN);
AUSState = digitalRead(AUS);
EndeEINState = digitalRead(EndeEIN);
EndeAUSState = digitalRead(EndeAUS);
if (EINState == HIGH && EndeAUSState == HIGH){
digitalWrite(RampeAUF,HIGH);
}
if (AUSState == HIGH && EndeEINState ==HIGH){
digitalWrite(RampeZU,HIGH);
}
if (EndeEINState == HIGH) {
digitalWrite(RampeAUF,LOW);
}
if (EndeAUSState == HIGH) {
digitalWrite(RampeZU,LOW);
}
}
und dies ist der Code mit der IR Bibliothek. ich habe die beiden taster durch IR Funktion erstetzt.
Ich habe die Bibliothek bereits als quelle ausgemacht warum es nicht funktioniert. Verstehe aber nicht warum.
Und da mein Hauptsketch darauf beruht weiß nun nicht wie ich das obige Beispiel so umfunktionieren muss, dass es mit der IR funktioniert.
#include <IRremote.h>
const int RampeAUF = 12; //Ansteuerung Motor Rampe AUF über Doppel H Brücke Modul
const int RampeZU = 13; //Ansteuerung Motor Rampe ZU über Doppel H Brücke Modul
const int EndeAUF = 4; //Endschalter Rampe AUF
const int EndeZU = 3; //Endschalter Rampe ZU
int EndeAUFState = 0;
int EndeZUState = 0;
int currentstate = 0;
int RECV_PIN = 2; // PinEingang für den IR Empfänger
IRrecv irrecv(RECV_PIN);
decode_results results;
void setup() {
pinMode(RampeAUF, OUTPUT); //Motor Rampe AUF
pinMode(RampeZU, OUTPUT); //Motor Rampe Zu
pinMode(EndeAUF, INPUT); //Endschalter Rampe AUF
pinMode(EndeZU, INPUT); //Endschalter Rampe ZU
EndeAUFState=digitalRead(EndeAUF); //Auslesen Endschalter Rampe AUF
EndeZUState=digitalRead(EndeZU); //Auslesen Endschalter Rampe ZU
if (EndeAUFState == LOW && EndeZUState == LOW){ //wenn keiner der Endschalter der Rampe betätigt ist fährt Motor Rampe automatisch zu
digitalWrite(RampeZU, HIGH);
}
Serial.begin(9600);
irrecv.enableIRIn();
}
void loop() {
if (irrecv.decode(&results)) {
unsigned int value = results.value;
Serial.println(results.value);
irrecv.resume();
EndeAUFState = digitalRead(EndeAUF); //Auslesen Endschalter Rampe AUF
EndeZUState = digitalRead(EndeZU); //Auslesen Endschalter Rampe ZU
if (results.value == 16736925 && EndeZUState == HIGH){
digitalWrite(RampeAUF,HIGH);
}
if (results.value == 16754775 && EndeAUFState == HIGH) {
digitalWrite(RampeZU,HIGH);
}
if (EndeZUState == HIGH){
digitalWrite(RampeZU,LOW);
}
if (EndeAUFState == HIGH){
digitalWrite(RampeAUF,LOW);
}
}
}
ich bin für jeden vorschlag und unterstützung dankkbar!