#include LiquidCrystal lcd(12, 11, 10, 9, 3, 2); const int buttonPin = 5; // + Button const int buttonPin2 = 6; // - Button const int buttonPin3 = 4; // Shot Button const int buttonPin4 = 8; // Automatik 1 Button const int buttonPin5 = 0; // Automatik 2 Button const int buttonPin6 = 1; // Automatik 3 Button // Light Button = Analog 0 int buttonPushCounter = 0; int buttonState = 0; int buttonState2 = 0; int buttonState3 = 0; int buttonState4 = 0; int buttonState5 = 0; int buttonState6 = 0; int lightbuttonstate = 0; int lastButtonState = 0; int lastButtonState2 = 0; int delaytime = 2; // Zeit Spiegelvorauslösung void setup() { pinMode(buttonPin, INPUT); pinMode(buttonPin2, INPUT); pinMode(buttonPin3, INPUT); pinMode(buttonPin4, INPUT); pinMode(buttonPin5, INPUT); pinMode(buttonPin6, INPUT); pinMode(7, OUTPUT); // LCD Beleuchtung GND pinMode(13, OUTPUT); // Shutter zu Optokopler , oder TestLED digitalWrite(7, LOW); // Led Beleuchtung einschalten lcd.begin(16, 2); lcd.print("Starting... :)"); delay(1000); lcd.clear(); lcd.setCursor(5, 0);lcd.print("Bereit"); lcd.setCursor(0, 1); lcd.print("Druecke +/-/A1-3"); delay (3000); } void loop() { buttonState = digitalRead(buttonPin); buttonState2 = digitalRead(buttonPin2); buttonState3 = digitalRead(buttonPin3); buttonState4 = digitalRead(buttonPin4); buttonState5 = digitalRead(buttonPin5); buttonState6 = digitalRead(buttonPin6); lightbuttonstate = analogRead(A0); // Light Button if (lightbuttonstate > 0) { digitalWrite(7, LOW); } else { digitalWrite(7, HIGH); } // + Button if (buttonState != lastButtonState) { if (buttonState == HIGH) { buttonPushCounter++; lcd.setCursor(0, 0); lcd.clear(); lcd.print(buttonPushCounter); lcd.print(" Sekunden"); lcd.setCursor(0, 1); lcd.print("Einstellung + -"); } } // - Button if (buttonState2 != lastButtonState2) { if (buttonState2 == HIGH) { if (buttonPushCounter < 1) { buttonPushCounter = 1; } lcd.clear(); buttonPushCounter--; lcd.setCursor(0, 0); lcd.print(buttonPushCounter); lcd.print(" Sekunden"); lcd.setCursor(0, 1); lcd.print("Einstellung + -"); } } // Return Button if (buttonState3 == HIGH) { digitalWrite(7, LOW); lcd.clear(); lcd.setCursor(0, 0); lcd.print("Belichtung aktiv!"); digitalWrite(13, HIGH); for (int i=buttonPushCounter+delaytime; i>0; i--) { lcd.setCursor(0, 1); lcd.print("noch: "); lcd.print(i); lcd.print(" Sek."); delay(1000); } digitalWrite(13, LOW); lcd.clear(); buttonPushCounter = 0; lcd.setCursor(3, 0); lcd.print("Belichtung"); lcd.setCursor(5, 1); lcd.print("Beendet"); delay(2000); lcd.clear(); lcd.setCursor(5, 0);lcd.print("Bereit"); lcd.setCursor(0, 1); lcd.print("Druecke +/-/A1-3"); } //Belichtungsprogramm(1) 6 Bilder, 10,15,20,30,45,60Sekunden if (buttonState4 == HIGH) { digitalWrite(7, LOW); //Mittelung das Automatikmodus gewählt wurde. lcd.setCursor(0, 0); lcd.print("AutomatikModus:1"); for (int i=5; i>0; i--) { lcd.setCursor(0, 1); lcd.print("Start in: "); lcd.print(i); lcd.print(" Sek."); delay(1000); } ///////////////////////////////////////////////// // erste Belichtung 10 Sekunden buttonPushCounter = 10; digitalWrite(13, HIGH); //Auslösen for (int i=buttonPushCounter+delaytime; i>0; i--) { lcd.clear(); lcd.setCursor(0, 0); lcd.print(" Belichtung 1/6 "); lcd.setCursor(2, 1); lcd.print("noch: "); lcd.print(i); lcd.print(" Sek."); delay(1000); } digitalWrite(13, LOW); //Auslösung beenden // 15 Sekunden warten wegen Kamera Rechenzeit for (int wait=15; wait>0; wait--) { lcd.clear(); lcd.setCursor(0, 0); lcd.print(" Belichtung 1/6 "); lcd.setCursor(0, 1); lcd.print("Berechnen: "); lcd.setCursor(11, 1); lcd.print(wait); lcd.setCursor(13, 1); lcd.print("Sek."); delay(1000); } ///////////////////////////////////////////////// // zweite Belichtung 15 Sekunden buttonPushCounter = 15; digitalWrite(13, HIGH); //Auslösen for (int i=buttonPushCounter+delaytime; i>0; i--) { lcd.clear(); lcd.setCursor(0, 0); lcd.print(" Belichtung 2/6 "); lcd.setCursor(2, 1); lcd.print("noch: "); lcd.print(i); lcd.print(" Sek."); delay(1000); } digitalWrite(13, LOW); //Auslösung beenden // 25 Sekunden warten wegen Kamera Rechenzeit for (int wait=25; wait>0; wait--) { lcd.clear(); lcd.setCursor(0, 0); lcd.print(" Belichtung 2/6 "); lcd.setCursor(0, 1); lcd.print("Berechnen: "); lcd.setCursor(11, 1); lcd.print(wait); lcd.setCursor(13, 1); lcd.print("Sek."); delay(1000); } ///////////////////////////////////////////////// // dritte Belichtung 20 Sekunden buttonPushCounter = 20; digitalWrite(13, HIGH); //Auslösen for (int i=buttonPushCounter+delaytime; i>0; i--) { lcd.clear(); lcd.setCursor(0, 0); lcd.print(" Belichtung 3/6 "); lcd.setCursor(2, 1); lcd.print("noch: "); lcd.print(i); lcd.print(" Sek."); delay(1000); } digitalWrite(13, LOW); //Auslösung beenden // 30 Sekunden warten wegen Kamera Rechenzeit for (int wait=30; wait>0; wait--) { lcd.clear(); lcd.setCursor(0, 0); lcd.print(" Belichtung 3/6 "); lcd.setCursor(0, 1); lcd.print("Berechnen: "); lcd.setCursor(11, 1); lcd.print(wait); lcd.setCursor(13, 1); lcd.print("Sek."); delay(1000); } ///////////////////////////////////////////////// // vierte Belichtung 30 Sekunden buttonPushCounter = 30; digitalWrite(13, HIGH); //Auslösen for (int i=buttonPushCounter+delaytime; i>0; i--) { lcd.clear(); lcd.setCursor(0, 0); lcd.print(" Belichtung 4/6 "); lcd.setCursor(2, 1); lcd.print("noch: "); lcd.print(i); lcd.print(" Sek."); delay(1000); } digitalWrite(13, LOW); //Auslösung beenden // 45 Sekunden warten wegen Kamera Rechenzeit for (int wait=45; wait>0; wait--) { lcd.clear(); lcd.setCursor(0, 0); lcd.print(" Belichtung 4/6 "); lcd.setCursor(0, 1); lcd.print("Berechnen: "); lcd.setCursor(11, 1); lcd.print(wait); lcd.setCursor(13, 1); lcd.print("Sek."); delay(1000); } ///////////////////////////////////////////////// // fünfte Belichtung 45 Sekunden buttonPushCounter = 45; digitalWrite(13, HIGH); //Auslösen for (int i=buttonPushCounter+delaytime; i>0; i--) { lcd.clear(); lcd.setCursor(0, 0); lcd.print(" Belichtung 5/6 "); lcd.setCursor(2, 1); lcd.print("noch: "); lcd.print(i); lcd.print(" Sek."); delay(1000); } digitalWrite(13, LOW); //Auslösung beenden // 60 Sekunden warten wegen Kamera Rechenzeit for (int wait=60; wait>0; wait--) { lcd.clear(); lcd.setCursor(0, 0); lcd.print(" Belichtung 5/6 "); lcd.setCursor(0, 1); lcd.print("Berechnen: "); lcd.setCursor(11, 1); lcd.print(wait); lcd.setCursor(13, 1); lcd.print("Sek."); delay(1000); } ///////////////////////////////////////////////// // sechste Belichtung 60 Sekunden buttonPushCounter = 60; digitalWrite(13, HIGH); //Auslösen for (int i=buttonPushCounter+delaytime; i>0; i--) { lcd.clear(); lcd.setCursor(0, 0); lcd.print(" Belichtung 6/6 "); lcd.setCursor(2, 1); lcd.print("noch: "); lcd.print(i); lcd.print(" Sek."); delay(1000); } digitalWrite(13, LOW); //Auslösung beenden lcd.clear(); lcd.setCursor(0, 0); lcd.print(" Belichtung 6/6 "); lcd.setCursor(4, 1); lcd.print("Beendet"); delay(5000); buttonPushCounter = 0; lcd.clear(); lcd.setCursor(5, 0);lcd.print("Bereit"); lcd.setCursor(0, 1); lcd.print("Druecke +/-/A1-3"); } ////////////////////////////////////////////////////////////////////////////////////////////////////////////// //Belichtungsprogramm(2) 5 Bilder, 1,2,4,8,16Sekunden if (buttonState5 == HIGH) { digitalWrite(7, LOW); //Mittelung das Automatikmodus gewählt wurde. lcd.setCursor(0, 0); lcd.print("AutomatikModus:2"); for (int i=5; i>0; i--) { lcd.setCursor(0, 1); lcd.print("Start in: "); lcd.print(i); lcd.print(" Sek."); delay(1000); } ///////////////////////////////////////////////// // erste Belichtung 1 Sekunde buttonPushCounter = 1; digitalWrite(13, HIGH); //Auslösen for (int i=buttonPushCounter+delaytime; i>0; i--) { lcd.clear(); lcd.setCursor(0, 0); lcd.print(" Belichtung 1/5 "); lcd.setCursor(2, 1); lcd.print("noch: "); lcd.print(i); lcd.print(" Sek."); delay(1000); } digitalWrite(13, LOW); //Auslösung beenden // 2 Sekunden warten wegen Kamera Rechenzeit for (int wait=2; wait>0; wait--) { lcd.clear(); lcd.setCursor(0, 0); lcd.print(" Belichtung 1/5 "); lcd.setCursor(0, 1); lcd.print("Berechnen: "); lcd.setCursor(11, 1); lcd.print(wait); lcd.setCursor(13, 1); lcd.print("Sek."); delay(1000); } ///////////////////////////////////////////////// // zweite Belichtung 2 Sekunden buttonPushCounter = 2; digitalWrite(13, HIGH); //Auslösen for (int i=buttonPushCounter+delaytime; i>0; i--) { lcd.clear(); lcd.setCursor(0, 0); lcd.print(" Belichtung 2/5 "); lcd.setCursor(2, 1); lcd.print("noch: "); lcd.print(i); lcd.print(" Sek."); delay(1000); } digitalWrite(13, LOW); //Auslösung beenden // 4 Sekunden warten wegen Kamera Rechenzeit for (int wait=4; wait>0; wait--) { lcd.clear(); lcd.setCursor(0, 0); lcd.print(" Belichtung 2/5 "); lcd.setCursor(0, 1); lcd.print("Berechnen: "); lcd.setCursor(11, 1); lcd.print(wait); lcd.setCursor(13, 1); lcd.print("Sek."); delay(1000); } ///////////////////////////////////////////////// // dritte Belichtung 4 Sekunden buttonPushCounter = 4; digitalWrite(13, HIGH); //Auslösen for (int i=buttonPushCounter+delaytime; i>0; i--) { lcd.clear(); lcd.setCursor(0, 0); lcd.print(" Belichtung 3/5 "); lcd.setCursor(2, 1); lcd.print("noch: "); lcd.print(i); lcd.print(" Sek."); delay(1000); } digitalWrite(13, LOW); //Auslösung beenden // 8 Sekunden warten wegen Kamera Rechenzeit for (int wait=8; wait>0; wait--) { lcd.clear(); lcd.setCursor(0, 0); lcd.print(" Belichtung 3/5 "); lcd.setCursor(0, 1); lcd.print("Berechnen: "); lcd.setCursor(11, 1); lcd.print(wait); lcd.setCursor(13, 1); lcd.print("Sek."); delay(1000); } ///////////////////////////////////////////////// // vierte Belichtung 8 Sekunden buttonPushCounter = 8; digitalWrite(13, HIGH); //Auslösen for (int i=buttonPushCounter+delaytime; i>0; i--) { lcd.clear(); lcd.setCursor(0, 0); lcd.print(" Belichtung 4/5 "); lcd.setCursor(2, 1); lcd.print("noch: "); lcd.print(i); lcd.print(" Sek."); delay(1000); } digitalWrite(13, LOW); //Auslösung beenden // 16 Sekunden warten wegen Kamera Rechenzeit for (int wait=16; wait>0; wait--) { lcd.clear(); lcd.setCursor(0, 0); lcd.print(" Belichtung 4/5 "); lcd.setCursor(0, 1); lcd.print("Berechnen: "); lcd.setCursor(11, 1); lcd.print(wait); lcd.setCursor(13, 1); lcd.print("Sek."); delay(1000); } ///////////////////////////////////////////////// // fünfte Belichtung 16 Sekunden buttonPushCounter = 16; digitalWrite(13, HIGH); //Auslösen for (int i=buttonPushCounter+delaytime; i>0; i--) { lcd.clear(); lcd.setCursor(0, 0); lcd.print(" Belichtung 5/5 "); lcd.setCursor(2, 1); lcd.print("noch: "); lcd.print(i); lcd.print(" Sek."); delay(1000); } digitalWrite(13, LOW); //Auslösung beenden lcd.clear(); lcd.setCursor(0, 0); lcd.print(" Belichtung 5/5 "); lcd.setCursor(4, 1); lcd.print("Beendet"); delay(5000); buttonPushCounter = 0; lcd.clear(); lcd.setCursor(5, 0);lcd.print("Bereit"); lcd.setCursor(0, 1); lcd.print("Druecke +/-/A1-3"); } ////////////////////////////////////////////////////////////////////////////////////////////////////////////// //Belichtungsprogramm(3) 5 Bilder, 60,90,120,180,240 Sekunden if (buttonState6 == HIGH) { digitalWrite(7, LOW); //Mittelung das Automatikmodus gewählt wurde. lcd.setCursor(0, 0); lcd.print("AutomatikModus:3"); for (int i=5; i>0; i--) { lcd.setCursor(0, 1); lcd.print("Start in: "); lcd.print(i); lcd.print(" Sek."); delay(1000); } ///////////////////////////////////////////////// // erste Belichtung 60 Sekunden buttonPushCounter = 60; digitalWrite(13, HIGH); //Auslösen for (int i=buttonPushCounter+delaytime; i>0; i--) { lcd.clear(); lcd.setCursor(0, 0); lcd.print(" Belichtung 1/5 "); lcd.setCursor(2, 1); lcd.print("noch: "); lcd.print(i); lcd.print(" Sek."); delay(1000); } digitalWrite(13, LOW); //Auslösung beenden // 80 Sekunden warten wegen Kamera Rechenzeit for (int wait=80; wait>0; wait--) { lcd.clear(); lcd.setCursor(0, 0); lcd.print(" Belichtung 1/5 "); lcd.setCursor(0, 1); lcd.print("Berechnen: "); lcd.setCursor(11, 1); lcd.print(wait); lcd.setCursor(13, 1); lcd.print("Sek."); delay(1000); } ///////////////////////////////////////////////// // zweite Belichtung 90 Sekunden buttonPushCounter = 90; digitalWrite(13, HIGH); //Auslösen for (int i=buttonPushCounter+delaytime; i>0; i--) { lcd.clear(); lcd.setCursor(0, 0); lcd.print(" Belichtung 2/5 "); lcd.setCursor(2, 1); lcd.print("noch: "); lcd.print(i); lcd.print(" Sek."); delay(1000); } digitalWrite(13, LOW); //Auslösung beenden // 110 Sekunden warten wegen Kamera Rechenzeit for (int wait=110; wait>0; wait--) { lcd.clear(); lcd.setCursor(0, 0); lcd.print(" Belichtung 2/5 "); lcd.setCursor(0, 1); lcd.print("Berechnen:"); lcd.setCursor(10, 1); lcd.print(wait); lcd.setCursor(13, 1); lcd.print("Sek."); delay(1000); } ///////////////////////////////////////////////// // dritte Belichtung 120 Sekunden buttonPushCounter = 120; digitalWrite(13, HIGH); //Auslösen for (int i=buttonPushCounter+delaytime; i>0; i--) { lcd.clear(); lcd.setCursor(0, 0); lcd.print(" Belichtung 3/5 "); lcd.setCursor(2, 1); lcd.print("noch: "); lcd.print(i); lcd.print(" Sek."); delay(1000); } digitalWrite(13, LOW); //Auslösung beenden // 140 Sekunden warten wegen Kamera Rechenzeit for (int wait=140; wait>0; wait--) { lcd.clear(); lcd.setCursor(0, 0); lcd.print(" Belichtung 3/5 "); lcd.setCursor(0, 1); lcd.print("Berechnen:"); lcd.setCursor(10, 1); lcd.print(wait); lcd.setCursor(13, 1); lcd.print("Sek."); delay(1000); } ///////////////////////////////////////////////// // vierte Belichtung 180 Sekunden buttonPushCounter = 180; digitalWrite(13, HIGH); //Auslösen for (int i=buttonPushCounter+delaytime; i>0; i--) { lcd.clear(); lcd.setCursor(0, 0); lcd.print(" Belichtung 4/5 "); lcd.setCursor(2, 1); lcd.print("noch: "); lcd.print(i); lcd.print(" Sek."); delay(1000); } digitalWrite(13, LOW); //Auslösung beenden // 140 Sekunden warten wegen Kamera Rechenzeit for (int wait=210; wait>0; wait--) { lcd.clear(); lcd.setCursor(0, 0); lcd.print(" Belichtung 4/5 "); lcd.setCursor(0, 1); lcd.print("Berechnen:"); lcd.setCursor(10, 1); lcd.print(wait); lcd.setCursor(13, 1); lcd.print("Sek."); delay(1000); } ///////////////////////////////////////////////// // fünfte Belichtung 240 Sekunden buttonPushCounter = 240; digitalWrite(13, HIGH); //Auslösen for (int i=buttonPushCounter+delaytime; i>0; i--) { lcd.clear(); lcd.setCursor(0, 0); lcd.print(" Belichtung 5/5 "); lcd.setCursor(2, 1); lcd.print("noch: "); lcd.print(i); lcd.print(" Sek."); delay(1000); } digitalWrite(13, LOW); //Auslösung beenden lcd.clear(); lcd.setCursor(0, 0); lcd.print(" Belichtung 5/5 "); lcd.setCursor(4, 1); lcd.print("Beendet"); delay(5000); buttonPushCounter = 0; lcd.clear(); lcd.setCursor(5, 0);lcd.print("Bereit"); lcd.setCursor(0, 1); lcd.print("Druecke +/-/A1-3"); } lastButtonState = buttonState; lastButtonState2 = buttonState2; }