Guten Abend an alle, ich würde gerne mehrer Pumpen über Bluetooth gleichzeitig ansteuern. Ich bekomme per BT einen String mit den einzelnen millis wie lange jede Pumpe laufen soll z.B.:
(5000,6800,1000,500, usw)
Jetzt möchte ich das alle Pumpen gleichzeitig an gehen und nacheinander je nach Zeit aus gehen.
Hatte danach auch schon mal vor ca. 2 Jahren gefragt LINK
jetzt brauche ich genau das aber ich bekomme das nicht hin. Hier mal mein Code:
#include <SoftwareSerial.h> //Software Serial Port
#define DEBUG_ENABLED 1
const int Pumpe_1 = 22; //Apricot Brandy
const int Pumpe_2 = 23; //Rum
const int Pumpe_3 = 24; //Blue Curacao
const int Pumpe_4 = 25; //Gin
const int Pumpe_5 = 26; //Malibu
const int Pumpe_6 = 27; //Orangenlikör
const int Pumpe_7 = 28; //Tequila
const int Pumpe_8 = 29; //Wodka
const int Pumpe_9 = 30; //Ananssaft
const int Pumpe_10 = 31; //Maracujasaft
const int Pumpe_11 = 32; //Orangensaft
const int Pumpe_12 = 33; //Zitronensaft
const int Pumpe_13 = 34; //Grenadine
const int ANZAHL_PUMPEN = 13;
const byte pumpen[] = { 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34 };
bool pumpenStatus[] = { false, false, false, false, false, false, false, false, false, false, false, false, false };
unsigned int pumpenZeiten[ANZAHL_PUMPEN];
unsigned long pumpenPreviousMillis[13];
int pumpenIndex = 0;
SoftwareSerial blueToothSerial(10, 11); // RX, TX
void setup()
{
Serial.begin(9600);
pinMode(Pumpe_1, OUTPUT);
pinMode(Pumpe_2, OUTPUT);
pinMode(Pumpe_3, OUTPUT);
pinMode(Pumpe_4, OUTPUT);
pinMode(Pumpe_5, OUTPUT);
pinMode(Pumpe_6, OUTPUT);
pinMode(Pumpe_7, OUTPUT);
pinMode(Pumpe_8, OUTPUT);
pinMode(Pumpe_9, OUTPUT);
pinMode(Pumpe_10, OUTPUT);
pinMode(Pumpe_11, OUTPUT);
pinMode(Pumpe_12, OUTPUT);
pinMode(Pumpe_13, OUTPUT);
//Pumpen an-------------------------
digitalWrite(Pumpe_1, HIGH);
digitalWrite(Pumpe_2, HIGH);
digitalWrite(Pumpe_3, HIGH);
digitalWrite(Pumpe_4, HIGH);
digitalWrite(Pumpe_5, HIGH);
digitalWrite(Pumpe_6, HIGH);
digitalWrite(Pumpe_7, HIGH);
digitalWrite(Pumpe_8, HIGH);
digitalWrite(Pumpe_9, HIGH);
digitalWrite(Pumpe_10, HIGH);
digitalWrite(Pumpe_11, HIGH);
digitalWrite(Pumpe_12, HIGH);
digitalWrite(Pumpe_11, HIGH);
digitalWrite(Pumpe_13, HIGH);
blueToothSerial.begin(9800);
}
void loop()
{
char recvChar;
while (1)
{
if (blueToothSerial.available())
{ //check if there's any data sent from the remote bluetooth shield
for (pumpenIndex = 0; pumpenIndex < ANZAHL_PUMPEN; pumpenIndex++)
{
pumpenZeiten[pumpenIndex] = blueToothSerial.read();
}
for (int i = 0; i < ANZAHL_PUMPEN; i++)
{
pumpenAn(pumpen[i]);
}
unsigned long currentMillis = millis();
for (int i = 0; i < ANZAHL_PUMPEN; i++)
{
if ((pumpenStatus[i] == true) && (currentMillis - pumpenPreviousMillis[i] > pumpenZeiten[i]))
{
digitalWrite(pumpen[i], HIGH);
pumpenStatus[i] = false;
Serial.println(pumpen[i]);
}
}
pumpenIndex = 0;
for (int i = 0; i < ANZAHL_PUMPEN; i++)
{
pumpenZeiten[i] = 0;
}
while (blueToothSerial.read() != -1);
}
}
}
void pumpenAn(byte pumpe)
{
digitalWrite(pumpen[pumpe], LOW);
pumpenStatus[pumpe] = true;
pumpenPreviousMillis[pumpe] = millis();
}
Würde mich über ein paar Ratschläge freuen.
LG
Der Chris