Es sieht so aus als würde "fenster_schliessen" nie durchlaufen. Ich komm nicht drauf warum ? Die Schalter "Hand_Zu" und "Hand_Auf" liefern ihre 5V sauber an den Pins ab.
Die Signale "ZylAus_I" und "ZylEin_I" sind auf dauerhigh gelegt.
Ist warscheinlich wieder son Anfängerding...
Code: Alles auswählen
//*************** HW Pinbelegung Leonardo Micro ***************************
//Pin 2 - I2C SDA
//Pin 3 - I2C SCL
//Pin 4 - OneWire Data (mit PullUp 4k7 an Vcc)
//Pin 5 - ZylAus_O Output für Signal Zylinder ausfahren
//Pin 6 - ZylEin_O Output für Signal Zylinder einfahren
//Pin 7 - ZylAus_I Input für Signal Zylinder ausgefahren (hinter Endschalter Endposition)
//Pin 8 - ZylEin_I Input für Signal Zylinder eingefahren (hinter Endschalter Anfangsposition)
//Pin 9 - Hand_Auf Input für Signal Fenster manuell öffnen
//Pin10 - Hand_Zu Input für Signal Fenster manuell schliessen
// ************* Libraries **************************
// Library starten
// ************* Variablen ******************************
int ZylAus_O = 5; // Output für Signal Zylinder ausfahren
int ZylEin_O = 6; // Output für Signal Zylinder einfahren
int ZylAus_I = 7; // Input für Signal Zylinder ausgefahren (hinter Endschalter Endposition)
int ZylEin_I = 8; // Input für Signal Zylinder eingefahren (hinter Endschalter Anfangsposition)
int Hand_Auf = 9; // Input für Signal Fenster manuell öffnen
int Hand_Zu = 10; // Input für Signal Fenster manuell schliessen
// ************* Setup ******************************
void setup()
{
Serial.begin (9600); // UART Kommunikation initialisieren und auf 9600 Baud
// ************* Pinzuweisungen I/O *****************
pinMode(ZylAus_O, OUTPUT);
pinMode(ZylEin_O, OUTPUT);
pinMode(ZylAus_I, INPUT);
pinMode(ZylEin_I, INPUT);
pinMode(Hand_Auf, INPUT);
pinMode(Hand_Zu, INPUT);
digitalWrite(ZylAus_O,LOW); //Bei Programmstart Ausgänge auf LOW setzen
digitalWrite(ZylEin_O,LOW);
}
// ************* Routinen für öffnen und schliessen *****
// ******** offnen *******************
void fenster_oeffnen () // Starten der Funktion Fenster öffnen
{
if(digitalRead(ZylAus_I) == HIGH) // Wenn Endschalter nicht belegt, Zylinder ausfahren sonst Ausgang auf 0 setzen
{
digitalWrite(ZylAus_O, HIGH);// Wenn Endschalter nicht belegt, Zylinder ausfahren über Pin ZylAus_O (9)
Serial.println("fenster_oeffnen gelaufen");
delay(1000); //Nur zum testen weil noch ohne Endschalter
}
else
{
digitalWrite(ZylAus_O,0); // Wenn Endschalter nicht belegt, Ausgang auf 0 setzen
}
}
// ******** schließen ***************
void fenster_schliessen ()
{
if(ZylEin_I == HIGH)
{
digitalWrite(ZylEin_O, HIGH);
Serial.println("fenster_schliessen gelaufen");
delay(1000); //Nur zum testen weil noch ohne Endschalter
}
else
{
digitalWrite(ZylEin_O,0);
}
}
// ************* Ende Routinen für öffnen und schliessen *****
// ************* Hauptprogramm ***********************
void loop() {
// put your main code here, to run repeatedly:
if(digitalRead(Hand_Auf) == HIGH)
{
fenster_oeffnen();
Serial.println("Fenster ist offen");
}
else
if(digitalRead(Hand_Zu) == HIGH)
{
fenster_schliessen();
Serial.println("Fenster ist zu");
}
else
{
Serial.println("Automatik");
}
}