Steuerung von Ventilen und Kamera für TaT-Aufnahmen

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;
   }
}