Hallo an die Allwissenden,
ich arbeite an meinem zweiten Projekt, bei dem ich Arduino benötige. Die Schönheit eines Programms interressiert mich nicht, die Funktion steht im Vordergrund.
Mein Problem wird sich den meisten nicht sofort erschliessen, dennoch hoffe ich auf Hilfe.
Funktion:
-
durch einen Schrittmotor wird ein Zentralverschluss gespannt. Diese Funktion steht im Setup, da sie nur gebraucht wird, wenn der Zentralverschluss durch ein Signal von aussen ausgelöst worde.
-
Wenn der Zentralverschluss gespannt ist, wird der Schlitzverschluss der Kamera geöffnet. Dieser wird alle 30 Sekunden für 2 Sekunden geschlossen, um den Senor auszulesen (Langzeitrauschen minimieren)
-
wenn der Zentralverschluss ausgelöst worden ist (z.B. Lichtschranke), wird 0,2 Sekunden später der Kameraverschluss geschlossen.
-
jetzt soll das Ganze wieder mit dem Spannen des Zentralverschlusses von vorne beginnen.
Die Frage ist jetzt, wie den letzten Schritt realisieren kann. Inetrrupt un goto (bitte nicht schlagen) gehen hier wohl nicht.
Danke für konstruktive Hilfe
Bernhard
void setup()
{
small_stepper.setSpeed(270);
pinMode(ledPin, OUTPUT); // Kameradummy
pinMode(Ausloeser, INPUT);
{
// HIERHIN MUSS WIEDER ICH, NACHDEM DER ZENTRALVERSCHLUSS AUSGELÖST HAT
// bewege Motorachse in beide Richtungen, Verschluss spannen
small_stepper.setSpeed(270);
Steps2Take = 1150; // Rotate CW
small_stepper.step(Steps2Take);
delay(10);
small_stepper.setSpeed(270);
Steps2Take = -1150; // Rotate CCW
small_stepper.step(Steps2Take);
}}
void loop()
{
// check to see if it's time to change the state of the LED
unsigned long currentMillis = millis();
if((led == HIGH) && (currentMillis - previousMillis >= OnTime))
{
led = LOW; // LED aus
previousMillis = currentMillis; // Remember the time
digitalWrite(ledPin, led); // Update the actual LED
}
else if ((led == LOW) && (currentMillis - previousMillis >= OffTime))
{
led = HIGH; // LED an
previousMillis = currentMillis; // Remember the time
digitalWrite(ledPin, led); // Update the actual LED
}
else if ((led == HIGH) && (Ausloeser == HIGH)) // Loop abbrechen
{
delay(200);
led = LOW; //Kameraverschluss schliessen
//VON HIER MUSS ICH ZUM ANFANG IN VOID SETUP SPRINGEN
}
}