Hallo zusammen!
Dank der Hilfe hier im Forum habe ich einen Ein-Taster aktiv/deaktiv Sketch erhalten.
Das war ein allererster Schritt.
Wie der Titel schon zeigt bin ich absoluter Neuling, habe noch nie programmiert.
Da ich, ausser diesem einen Projekt, auch keine weiteren Anwendungen für einen Arduino sehe ist für mich der Aufwand relativ hoch aber auch wenn es schon fertig zu beziehende Produkte für z.B. die Tropfenfotografie gibt, die sehr ähnlich funktionieren, genau meine Bedürfnisse erfüllen diese Produkte nicht.
Sollte es hier jemanden geben, der gegen Entgelt oder aus Enthusiasmus, bereit wäre mir den Sketch zu programmieren, gerne melden. ![]()
Ansonsten hoffe ich auf Hilfe/Tipps um das Projekt selber umzusetzen.
Eine Prinzipzeichnung, die die "Verkabelung" deutlich machen soll, habe ich beigefügt. (Wie fügt man Bilder direkt ein?)
Grundlegende Punkte:
Es soll mit dieser Schaltung eine Kamera, ein Blitz und ein separater Highspeed Verschluss gesteuert werden.
Grundsätzlich funktioniert meine Anlage auch ohne elektronische Steuerung, mein Ziel ist es jedoch durch das Zusammenspiel des internen Kameraverschlusses, des Blitzes und des externen Verschlusses die reine Belichtungszeit des Verschlusses bei einer Auslösung zu verkürzen.
Da ich Highspeed Bilder im hellen Sonnenlicht mache ist dieses Licht ein Problem. Idealerweise wird die Belichtung somit ausschließlich vom Blitz bestimmt.
Meine Idee dazu:
Bei einer Auslösung durch die LS soll der externe Verschluss geöffnet werden (Ansteuerung ist vorhanden)
Bevor dieser ganz offen ist, soll der Blitz über einen Timer gezündet werden
Direkt nach dem Zünden des Blitzes soll der interne Kameraverschluss sich schließen.
Durch das Zusammenspiel beider Verschlüsse hoffe ich die Belichtungszeit verkürzen zu können.
Ob das wirklich funktioniert können nur Tests zeigen.
Nun zum Aufbau wie ich ihn mir vorstelle:
12V Stromversorgung für Lichtschranke (LS) und Arduino (UNO)
Ein Piezolautsprecher ist direkt, parallel zum UNO am PNP Ausgang der LS angeschlossen.
Somit piepst dieser IMMER wenn die LS durchbrochen wird. Dies dient der Justage der Fokussierung.
Solange der Taster nicht gedrückt wurde passiert weiter nichts.
Wird nun der Taster gedrückt wird die Anlage aktiv.
Damit wird der Kameraverschluss ohne vorgeschalteten Timer, geöffnet
Wird der Taster erneut gedrückt fällt die Steuerung wieder in den Ausgangszustand zurück
Die Kamera schließt den Verschluss (und speichert ein schwarzes Bild)
Ist die Steuerung durch den Taster aktiv und der Kameraverschluss ist offen, soll beim Durchbrechen der Lichtschranke folgendes passieren:
- Ausgang für externen Verschluss soll möglichst verzögerungsfrei aktiv werden
- Über einen in 0,25ms Schritten einstellbaren Timer soll der Blitzausgang aktiviert werden
- Über einen in 0,25ms Schritten einstellbaren Timer soll der Kameraausgang desaktiviert werden
- Als letzte Aktion soll über ein Delay der Kameraverschluss wieder geöffnet werden.
- Wird der Taster nicht erneut gedrückt wird bei jedem Durchbrechen der LS dieser Ablauf wiederholt
Ich denke das war es.
Einige haben mir in meinem Thread zum Taster geraten eine Nachtwächterschaltung oder einen endlichen Automaten zu erstellen.
Ob das bei der Aufgabenstellung wirklich nötig ist kann ich nicht beurteilen.
Für mein Verständnis sollte der Programmablauf so aussehen:
Zustand 1 Taster nicht aktiv, alle Ausgänge sind deakiv, der LS Eingang am UNO reagiert nicht auf Impulse
Zustand 2 Taster ist aktiv, der Kameraausgang wird aktiviert
Impuls am LS Eingang aktiviert der Reihe nach zwei Ausgänge (Verschluss und Blitz) und deaktiviert den Kameraausgang.
Nach einem Delay wird der Kameraausgang erneut aktiviert und die Routine läuft erneut ab wenn ein LS Signal kommt.
Bei erneutem Tastendruck wird Zustand 1 wiederhergestellt.
Das sollte es gewesen sein.
Entgegen irgendwelchen Roboteransteuerungen o.ä. sollte das für einen "Profi" wohl vermutlich keine große Hereusforderung sein, für mich leider schon...
Viele Grüße und mit der Hoffnung auf Hilfe
Jürgen
Hier noch der vorhandene Sketch, der bislang nur eine LED per Tastendruck schaltet.
// this constant won't change:
const byte buttonPin = 2; // the pin that the pushbutton is attached to
const byte ledPin = 7; // the pin that the LED is attached to
// Variables will change:
int buttonPushCounter = 0; // den kannst Du auch rausnehmen! // counter for the number of button presses
bool buttonState = 0; // current state of the button
bool lastButtonState = 0; // previous state of the button
bool buttonPress;
void setup() {
pinMode(buttonPin, INPUT); // initialize the button pin as a input:
pinMode(ledPin, OUTPUT); // initialize the LED as an output:
digitalWrite(ledPin, LOW);
Serial.begin(9600); // initialize serial communication:
}
void loop() {
buttonState = digitalRead(buttonPin); // read the pushbutton input pin:
if (buttonState != lastButtonState) // compare the buttonState to its previous state
{
if (buttonState == HIGH) // if the state has changed, increment the counter
{
//buttonPress != buttonPress; // LED wird beim drücken eingeschaltet
buttonPress = false; // erst beim loslassen, siehe unten
buttonPushCounter++; // if the current state is HIGH then the button went from off to on:
Serial.println("on");
Serial.print("number of button pushes: ");
Serial.println(buttonPushCounter);
} else {
//buttonPressed != buttonPress; //
buttonPress = true; // so wird beim loslassen die LED eingeschaltet
Serial.println("off"); // if the current state is LOW then the button went from on to off:
}
delay(50); // Delay a little bit to avoid bouncing
}
lastButtonState = buttonState; // save the current state as the last state, for next time through the loop
// turns on the LED every four button pushes by checking the modulo of the
// button push counter. the modulo function gives you the remainder of the
// division of two numbers:
if (buttonPress) {
digitalWrite(ledPin, HIGH);
} else {
digitalWrite(ledPin, LOW);
}
}




