Hallo Gemeinde
Ich sitze gerade an einem Problem.
Ich beschäftige mich erst seit einigen Stunden mit meinem Wemos D1.
Nun versuche ich einen Pumpensteuerung für meine Sprinkler im Garten zu realisieren.
Durch zeitweisen Grundwassermangel bin ich gezwungen eines der Relais von meinem Relaisshield einmal alle ca. 3 Stunden für eine Minute laufen zu lassen damit der Wasserspiegel nicht abfällt.
Ich hatte also folgendes vor und benutze dazu ArduBlock in Version 2.
Mit einer falls/sonst Schleife frage ich einen Taster ab.
Wenn dieser gedrückt wird soll das Programm für die Magnetventile über ein Relaisshield abgearbeitet werden. Ist der Taster nicht gedrückt öffnet ein bestimmtes Ventil alle 3 Stunden für 60 sek.
Die Abfrage des Tasters läuft aber nur wenn der Wemos nicht beim Warten ist.
Das ist völlig unbrauchbar.
void setup() {
pinMode(4, OUTPUT);
pinMode(5, OUTPUT);
pinMode(12, OUTPUT);
pinMode(13, OUTPUT);
pinMode(15, INPUT);
digitalWrite( 4 , HIGH );
digitalWrite( 5 , HIGH );
digitalWrite( 12 , HIGH );
digitalWrite( 13 , HIGH );
}
void loop() {
if (digitalRead(15)) {
digitalWrite( 4 , LOW );
delay( 1000 );
digitalWrite( 4 , HIGH );
delay( 1000 );
digitalWrite( 5 , LOW );
delay( 1000 );
digitalWrite( 5 , HIGH );
delay( 1000 );
digitalWrite( 12 , LOW );
delay( 1000 );
digitalWrite( 12 , HIGH );
delay( 1000 );
digitalWrite( 13 , LOW );
delay( 1000 );
digitalWrite( 13 , HIGH );
delay( 1000 );
}
else {
digitalWrite( 13 , LOW );
delay( 1000 );
digitalWrite( 13 , HIGH );
delay( 5000 );
}
}
Jetzt habe ich versucht dies über eine separate Interrupt-Schleife abzuhandeln.
Leider schalten die Relais nach hochladen auf den Wemos alle an und die BuildIn LED schaltet wie wild hin und her. Es gibt auch keine Reaktion auf den Tasterdruck.
Ich habe gelesen das ich jeden Eingang (bis auf GIO16) am Wemos als Interrupt verwenden kann.
Kann mir jemand verraten wo mein Problem liegt?
void interrupt();
void setup() {
pinMode(2, INPUT_PULLUP);
pinMode(4, OUTPUT);
pinMode(5, OUTPUT);
pinMode(12, OUTPUT);
pinMode(13, OUTPUT);
attachInterrupt(0, interrupt, CHANGE);
digitalRead(2);
digitalWrite( 4 , HIGH );
digitalWrite( 5 , HIGH );
digitalWrite( 12 , HIGH );
digitalWrite( 13 , HIGH );
}
void loop() {
digitalWrite( 13 , LOW );
delay( 1000 );
digitalWrite( 13 , HIGH );
delay( 5000 );
}
void interrupt() {
digitalWrite( 4 , LOW );
delay( 1000 );
digitalWrite( 4 , HIGH );
delay( 1000 );
digitalWrite( 5 , LOW );
delay( 1000 );
digitalWrite( 5 , HIGH );
delay( 1000 );
digitalWrite( 12 , LOW );
delay( 1000 );
digitalWrite( 12 , HIGH );
delay( 1000 );
digitalWrite( 13 , LOW );
delay( 1000 );
digitalWrite( 13 , HIGH );
delay( 1000 );
}