Einen Großen Dank nochmal für die vielen Tipps und Hilfestellungen!
Ich hab mich für den 4066 entschieden und das funktioniert auch 1A!
Beim weiteren aufbau meines Projekts habe ich festgestellt das die delay-Funktion nur bis 32000ms funktioniert. Ich variiere die Belichtungsdauer über ein Poti. Dabei möchte ich den Bereich von 30Sekunden bis 600 Sekunden abdecken. Die Zeit lasse ich mir in Sekunden auf einem LCD-Display anzeigen. Wenn ich jetzt aber den Wert in Millisekunden anzeigen lasse kann ich beobachten das der Wert ab 32000ms wieder sinkt und sogar bis -32000 sinkt obwohl ich das Poti weiter erhöhe.
Habt ihr da einen Tipp für mich wie ich das Problem umgehen kann?
Hier mein Code:
// include the library code:
#include <LiquidCrystal.h>
int sensor1=A0;
int sensorvalue=0;
int verschlusszeitsekunden=0;
int verschlusszeit=0;
int ausloeser=10;
int ausloeseknopf=9;
int buttonstate=0;
// initialize the library with the numbers of the interface pins
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
void setup() {
pinMode(ausloeser, OUTPUT);
pinMode(ausloeseknopf, INPUT);
// set up the LCD's number of columns and rows:
lcd.begin(16, 2);
// Print a message to the LCD.
lcd.clear();
lcd.setCursor(15, 0);
lcd.print("Canon Digital");
lcd.setCursor(15, 1);
lcd.print("INTERFACE");
delay(100);
lcd.clear();
lcd.setCursor(14, 0);
lcd.print("Canon Digital");
lcd.setCursor(14, 1);
lcd.print("INTERFACE");
delay(100);
lcd.clear();
lcd.setCursor(13, 0);
lcd.print("Canon Digital");
lcd.setCursor(13, 1);
lcd.print("INTERFACE");
delay(100);
lcd.clear();
lcd.setCursor(12, 0);
lcd.print("Canon Digital");
lcd.setCursor(12, 1);
lcd.print("INTERFACE");
delay(100);
lcd.clear();
lcd.setCursor(11, 0);
lcd.print("Canon Digital");
lcd.setCursor(11, 1);
lcd.print("INTERFACE");
delay(100);
lcd.clear();
lcd.setCursor(10, 0);
lcd.print("Canon Digital");
lcd.setCursor(10, 1);
lcd.print("INTERFACE");
delay(100);
lcd.clear();
lcd.setCursor(9, 0);
lcd.print("Canon Digital");
lcd.setCursor(9, 1);
lcd.print("INTERFACE");
delay(100);
lcd.clear();
lcd.setCursor(8, 0);
lcd.print("Canon Digital");
lcd.setCursor(8, 1);
lcd.print("INTERFACE");
delay(100);
lcd.clear();
lcd.setCursor(7, 0);
lcd.print("Canon Digital");
lcd.setCursor(7, 1);
lcd.print("INTERFACE");
delay(100);
lcd.clear();
lcd.setCursor(6, 0);
lcd.print("Canon Digital");
lcd.setCursor(6, 1);
lcd.print("INTERFACE");
delay(100);
lcd.clear();
lcd.setCursor(5, 0);
lcd.print("Canon Digital");
lcd.setCursor(5, 1);
lcd.print("INTERFACE");
delay(100);
lcd.clear();
lcd.setCursor(4, 0);
lcd.print("Canon Digital");
lcd.setCursor(4, 1);
lcd.print("INTERFACE");
delay(100);
lcd.clear();
lcd.setCursor(3, 0);
lcd.print("Canon Digital");
lcd.setCursor(3, 1);
lcd.print("INTERFACE");
delay(100);
lcd.clear();
lcd.setCursor(2, 0);
lcd.print("Canon Digital");
lcd.setCursor(3, 1);
lcd.print("INTERFACE");
delay(100);
lcd.clear();
lcd.setCursor(1, 0);
lcd.print("Canon Digital");
lcd.setCursor(3, 1);
lcd.print("INTERFACE");
delay(4000);
lcd.clear();
}
void loop() {
sensorvalue=analogRead(sensor1);
verschlusszeitsekunden=map(sensorvalue, 0, 1023, 30, 600);
verschlusszeit=(verschlusszeitsekunden*1000);
buttonstate=digitalRead(ausloeseknopf);
lcd.clear();
lcd.setCursor(1, 0);
// print the number of seconds since reset:
lcd.print("Verschlusszeit:");
lcd.setCursor(1,1);
lcd.print(verschlusszeitsekunden);
lcd.setCursor(7,1);
lcd.print("Sekunden");
delay(200);
if(buttonstate == HIGH){
digitalWrite(ausloeser, HIGH);
lcd.clear();
lcd.setCursor(1,0);
lcd.print("Bitte LAECHELN");
lcd.setCursor(1,1);
lcd.print(verschlusszeitsekunden);
lcd.setCursor(5,1);
lcd.print("Sekunden");
delay(verschlusszeit);
digitalWrite(ausloeser, LOW);
}
else {
digitalWrite(ausloeser, LOW);
}
}
Gruß Lutz