Hallo Community, ich bräuchte mal eure Hilfe.
Ich habe mit hilfe von Bausteinen ein Programm geschrieben um, mittels Relais, Pumpen anzusteuern. Das ganze wird über IR gestartet und die Pumpen laufen eine gewisse Zeit. Gedacht ist das als Getränkespender.
Nun habe ich das Problem, wenn eine Pumpe gestartet wurde, kann ich keinen Stop-Befehl über die FB Senden..erst wenn die Zeit abgelaufen ist, werden neue IR-Befehle angenommen...
Ich möchte aber, falls ein "falsches Getränk" angewählt wurde, die Pumpe sofort stoppen können.
Ich würde mich freuen wenn ihr mir helfen könntet.
LG atomicmate
Hier das Programm:
#include <IRremote.h>
int RECV_PIN = 11;
IRrecv irrecv (RECV_PIN);
decode_results results;
#define ein LOW
#define aus HIGH
int Cola = 4;
int Fanta = 5;
int Sprite = 6;
int Wasser = 7;
void setup() {
digitalWrite(Cola, HIGH);
pinMode(Cola, OUTPUT);
digitalWrite(Fanta, HIGH);
pinMode(Fanta, OUTPUT);
digitalWrite(Sprite, HIGH);
pinMode(Sprite, OUTPUT);
digitalWrite(Wasser, HIGH);
pinMode(Wasser, OUTPUT);
Serial.begin(9600);
irrecv.enableIRIn();
}
void loop() {
if (irrecv.decode(&results)) {
Serial.println(results.value, DEC);
if (results.value == 16753245)
{digitalWrite(Cola, aus);}
if (results.value == 16724175) // Cola läuft für 6sek, stoppt selbstständig // Zeit für ca 200ml
{digitalWrite(Cola, ein);
delay(6000);
digitalWrite(Cola, aus);}
if (results.value == 16753245)
{digitalWrite(Fanta, aus);}
if (results.value == 16718055) // Fanta läuft für 6sek, stoppt selbstständig
{digitalWrite(Fanta, ein);
delay(6000);
digitalWrite(Fanta, aus);}
if (results.value == 16753245)
{digitalWrite(Sprite, aus);}
if (results.value == 16743045) // Sprite läuft für 6sek, stoppt selbstständig
{digitalWrite(Sprite, ein);
delay(6000);
digitalWrite(Sprite, aus);}
if (results.value == 16753245)
{digitalWrite(Wasser, aus);}
if (results.value == 16716015) // Wasser läuft für 6sek, stoppt selbstständig
{digitalWrite(Wasser, ein);
delay(6000);
digitalWrite(Wasser, aus);}
if (results.value == 16726215) // Mezzo-Mix
{digitalWrite(Cola, ein);
digitalWrite(Fanta, ein);
delay(3000);
digitalWrite(Cola, aus);
digitalWrite(Fanta, aus);}
if (results.value == 16769565) // Spülen für 5sek
{digitalWrite(Cola, ein);
digitalWrite(Fanta, ein);
digitalWrite(Sprite, ein);
digitalWrite(Wasser, ein);
delay(5000);
digitalWrite(Cola, aus);
digitalWrite(Fanta, aus);
digitalWrite(Sprite, aus);
digitalWrite(Wasser, aus);}
if (results.value == 16734885) // Cola läuft für 8sek, stoppt selbstständig // Zeit für ca 260ml
{digitalWrite(Cola, ein);
delay(8000);
digitalWrite(Cola, aus);}
if (results.value == 16728765) // Fanta läuft für 8sek, stoppt selbstständig
{digitalWrite(Fanta, ein);
delay(8000);
digitalWrite(Fanta, aus);}
if (results.value == 16730805) // Sprite läuft für 8sek, stoppt selbstständig
{digitalWrite(Sprite, ein);
delay(8000);
digitalWrite(Sprite, aus);}
if (results.value == 16732845) // Wasser läuft für 8sek, stoppt selbstständig
{digitalWrite(Wasser, ein);
delay(8000);
digitalWrite(Wasser, aus);}
irrecv.resume();
}
}