Hallo zusammen,
Ich bin letztens mit meinem ersten Projekt angefangen, einem Cocktail Mischer der per Bluetooth gesteuert wird. Ich habe die ganze Hardware zusammen und auch schon das Programm teilweise geschrieben, jedoch hänge ich immer wieder an 2 Punkten:
- Warum ziehen meine Relais nicht an, wie sie sollten?
- Kann ich die Werte von Variabeln multiplizieren und als "delay"-Dauer nehmen?
Ich habe mein 8 Relais Modul, den Uno und das BT Modul wie nach Anleitung angeschlossen und ich bekomme auch Signale an den Relais wenn ich ein einfaches 0 oder 1 Signal ansteuere. Der Uno bekommt von der Handy App Signale wie z.B. 3430 für: 3= Longdrink, 4= 400ml, 30=30% Alkohol.
Hier einmal der Teil des Programms:
#define Pumpe1 2
#define Pumpe2 3
#define Pumpe3 4
#define Pumpe4 5
#include <SoftwareSerial.h> // Einbinden der Bibliothek für Software-UART
int WahreMenge, Dauer1, Dauer2, Menge, Alles;
long Anteil;
void setup() {
Serial.begin(38400);
Serial.println("AT+NAME=Mischer");
pinMode(Pumpe1, OUTPUT);
pinMode(Pumpe2, OUTPUT);
pinMode(Pumpe3, OUTPUT);
pinMode(Pumpe4, OUTPUT);
digitalWrite (Pumpe1, HIGH);
digitalWrite (Pumpe2, HIGH);
digitalWrite (Pumpe3, HIGH);
digitalWrite (Pumpe4, HIGH);
delay(1000);
}
void loop() {
{
while (Serial.available() > 0) { // Solange etwas empfangen wird, durchlaufe die Schleife
Alles = Serial.read(); // Speichere das empfangene Zeichen in der Variablen "Alles"
if (Alles > 3000) { // Beispiel: 3440 Alles über 3000 = Longdrink
Menge == (Alles-3000)/100; //4.4, da int => 4
Anteil == ((Alles - 3000) / 100 - Menge);
WahreMenge = Menge * 100;
Dauer1 = WahreMenge*Anteil*10;
Dauer2 = WahreMenge*(1-Anteil)*10;
digitalWrite (Pumpe1, LOW);
delay(Dauer1);
digitalWrite (Pumpe1, HIGH);
digitalWrite (Pumpe2, LOW);
delay(Dauer2);
digitalWrite (Pumpe2, HIGH);
}
if (2000 < Alles > 3000) { // Alles zwischen 2000 und 3000 = Shot
Menge == (Alles - 2000) / 100; // Beispiel: 2430 => 4.3 da int: 4
Anteil == ((Alles - 2000) / 100 - Menge);
WahreMenge == Menge * 10;
Dauer1 = WahreMenge*Anteil;
Dauer2 = WahreMenge*(1-Anteil);
digitalWrite (Pumpe1, LOW);
delay(Dauer1);
digitalWrite (Pumpe1, HIGH);
digitalWrite (Pumpe2, LOW);
delay(WahreMenge*(1-Anteil)*100);
digitalWrite (Pumpe2, HIGH);
}
if (1000 < Alles > 107) { // Zufallsshot Beispiel: 1004 = 40% Alk
Anteil == (Alles - 1000)/10;
Dauer1 = 20*Anteil;
Dauer2 = 20*(1-Anteil);
digitalWrite (Pumpe1, HIGH);
delay(Dauer1);
digitalWrite (Pumpe1, LOW);
digitalWrite (Pumpe2, HIGH);
delay(Dauer2);
digitalWrite (Pumpe2, LOW);
}
}
}
}
Ich hoffe jemand kann mir helfen, ich weiß nicht mehr was ich noch probieren kann ^.^
Liebe Grüße,
Gundulf