Hallo guntherb,
ich habe deinen Code von hier:
guntherb:
Um ein Ventil ein und wieder auszuschalten, brauchst du also 2 Aktionen.
jetzt mal umgesetzt, wobei ich ja bei der Kamera keine Ausschaltzeiten habe. Ich hoffe ich habe das so "richtig" umgesetzt?
// Sketch zur Steuerung von drei Ventilen und einer Kamera
const int VENTIL1 = 8; // Pin 8 = Ventil 1
const int VENTIL2 = 9; // Pin 9 = Ventil 2
const int VENTIL3 = 10; // Pin 10 = Ventil 3
const int FOCUS = 11; // Pin 11 = fucus
const int SHUTTER = 12; // Pin 12 = shutter
const int TRIP = 13; // Pin 13 = Starttaste
// Steuerungszeiten Veintile
unsigned long ven1_on = 1000;
unsigned long ven1_of = 1050;
unsigned long ven2_on = 1100;
unsigned long ven2_of = 1180;
unsigned long ven3_on = 1150;
unsigned long ven3_of = 1200;
// Steuerungszeiten Kamera
unsigned long focus_on = 1000;
unsigned long shutter_on = 1060;
// Steuerungszeiten sonstige
unsigned long endzeit = 2000;
unsigned long startzeit = 0;
unsigned long timestamp = 0;
// Boolsche Variablen zum starten/anhalten der einzelnen Aktionen
boolean ven1on = false;
boolean ven1of = false;
boolean ven2on = false;
boolean ven2of = false;
boolean ven3on = false;
boolean ven3of = false;
boolean focuson = false;
boolean shutteron = false;
boolean action = false;
void setup()
{
pinMode(VENTIL1, OUTPUT);
pinMode(VENTIL2, OUTPUT);
pinMode(VENTIL3, OUTPUT);
pinMode(FOCUS, OUTPUT);
pinMode(SHUTTER, OUTPUT);
pinMode(TRIP, INPUT_PULLUP);
}
void loop()
{
if (digitalRead(TRIP) == LOW && !action)
{
delay(100);
action = true;
startzeit = millis();
}
if (action && !ven1on && startzeit + ven1_on < millis())
{
timestamp = millis();
digitalWrite(VENTIL1, HIGH);
ven1on = true;
}
if (action && !ven1of && startzeit + ven1_of < millis())
{
timestamp = millis();
digitalWrite(VENTIL1, LOW);
ven1of = true;
}
if (action && !ven2on && startzeit + ven2_on < millis())
{
timestamp = millis();
digitalWrite(VENTIL2, HIGH);
ven2on = true;
}
if (action && !ven2of && startzeit + ven2_of < millis())
{
timestamp = millis();
digitalWrite(VENTIL2, LOW);
ven2of = true;
}
if (action && !ven3on && startzeit + ven3_on < millis())
{
timestamp = millis();
digitalWrite(VENTIL3, HIGH);
ven3on = true;
}
if (action && !ven3of && startzeit + ven3_of < millis())
{
timestamp = millis();
digitalWrite(VENTIL3, LOW);
ven3of = true;
}
if (action && !focuson && startzeit + focus_on < millis())
{
timestamp = millis();
digitalWrite(FOCUS, HIGH);
focuson = true;
}
if (action && !shutter && startzeit + shutter_on < millis())
{
timestamp = millis();
digitalWrite(SHUTTER, HIGH);
delay(10);
digitelWrite(SHUTTER; LOW);
shutter = true;
}
if (action && !shutter && startzeit + endzeit < millis())
{
action = false;
ven1on = false;
ven1of = false;
ven2on = false;
ven2of = false;
ven3on = false;
ven3of = false;
fucuson = false;
shutteron = false;
}
}