So i've been trying to figure this out for a while on my own about 3-4 months. And i just don't get it.
I know my code is crap this is the first project or anything i've ever done code for, So please bear with me I mostly have no idea what i'm doing.
So i have this programmed for a simple camera that just controls the Shutter aperture/speed, Indicator lights, And flash.
So the issue i'm running into is inconsistent Shutter activation. Sometimes the Shutter will stay open until the trigger is release or sometimes it won't open at all. I would say it ranges from 3% of the time on a good day up to 20% of the time on a bad one.
Here's my code if anyone has any advise on improving it and what i can do, I Would be soooo happy!
void setup() {
pinMode(2, INPUT_PULLUP); //GND SIGNAL MASTER (PIN 2)(PWM)
pinMode(3, OUTPUT); //FLASH READY ENABLE (PIN 3)
pinMode(4, OUTPUT); //FLASH GATE OPEN (PIN 4)
pinMode(5, OUTPUT); //GREEN LED (PIN 5)(PWM)
pinMode(6, OUTPUT); //RED LED (PIN 6)(PWM)
pinMode(7, OUTPUT); //FILM LED (PIN 7)
pinMode(15, OUTPUT); //SHUTTER CONTROL (PIN A1)
digitalWrite(15, HIGH);
// PHOTORESISTOR CONNECTS TO VR RIGHT LEG
// VR MIDDLE LEG CONNECTS TO AREF (PIN A0)
// VR LEFT LEG CONNECTS TO GROUND
}
void loop() {
while (digitalRead(2) == LOW) { //RUNS LOOP IF SHUTTER WOUND DURING HALF PRESS
void loop();
while (digitalRead(2) == HIGH) { //ENDS LOOP IF SHUTTER IS NOT WOUND DURING HALF PRESS
return; //MAGNET CONNECTS TO A1 AND GND
}
//DETECTS VOLTAGE REF FROM AREF
int sensorValue = analogRead(A0);
float voltage = sensorValue;
if (voltage >= 80) {
analogWrite(5, 180);
//GREEN LED ON IF VALUE MET
} else { (voltage < 80); { //VCC IS CONNECTED TO ORANGE WIRE
digitalWrite(5, HIGH);
//GND GREEN WIRE CONNECTED TO (PIN 5)
} //PULLS HIGH TO TURN OFF LED
}
if (voltage < 80) {
analogWrite(6, 180);
//RED LED ON IF VALUE NOT MET
} else { (voltage > 80); { //GND RED WIRE CONNECTED TO (PIN 6)
digitalWrite(6, HIGH); //PULLS HIGH TO TURN OFF LED
}
}
if (voltage <= 60 && voltage >= 0) { //SHUTTER PROFILE 1
digitalWrite(15, HIGH);
delay(15);
if (digitalRead(2) == HIGH) {
delay(50);
digitalWrite(15, LOW);
digitalWrite(3, HIGH);
digitalWrite(3, LOW);
delay(50);
digitalWrite(7, HIGH); //INDICATOR LED FOR FILM
delayMicroseconds(50);
digitalWrite(7, LOW);
return; }
}
if (voltage <= 80 && voltage >= 60) { //SHUTTER PROFILE 2
digitalWrite(15, HIGH);
delay(15);
if (digitalRead(2) == HIGH) {
delay(44);
digitalWrite(15, LOW);
digitalWrite(3, HIGH);
digitalWrite(3, LOW);
delay(50);
digitalWrite(7, HIGH); //INDICATOR LED FOR FILM
delayMicroseconds(50);
digitalWrite(7, LOW);
return; }
}
if (voltage <= 100 && voltage > 80) { //SHUTTER PROFILE 3
digitalWrite(15, HIGH);
delay(15);
if (digitalRead(2) == HIGH) {
delay(40);
digitalWrite(15, LOW);
digitalWrite(3, HIGH);
digitalWrite(3, LOW);
delay(50);
digitalWrite(7, HIGH); //INDICATOR LED FOR FILM
delayMicroseconds(50);
digitalWrite(7, LOW);
return; }
}
if (voltage <= 120 && voltage > 100) { //SHUTTER PROFILE 4
digitalWrite(15, HIGH);
delay(15);
if (digitalRead(2) == HIGH) {
delay(38);
digitalWrite(15, LOW);
delay(50);
digitalWrite(7, HIGH); //INDICATOR LED FOR FILM
delayMicroseconds(50);
digitalWrite(7, LOW);
return; }
}
if (voltage <= 135 && voltage > 120) { //SHUTTER PROFILE 5
digitalWrite(15, HIGH);
delay(15);
if (digitalRead(2) == HIGH) {
delay(36);
digitalWrite(15, LOW);
delay(50);
digitalWrite(7, HIGH); //INDICATOR LED FOR FILM
delayMicroseconds(50);
digitalWrite(7, LOW);
return; }
}
if (voltage <= 150 && voltage > 135) { //SHUTTER PROFILE 6
digitalWrite(15, HIGH);
delay(15);
if (digitalRead(2) == HIGH) {
delay(34);
digitalWrite(15, LOW);
delay(50);
digitalWrite(7, HIGH); //INDICATOR LED FOR FILM
delayMicroseconds(50);
digitalWrite(7, LOW);
return ;}
}
if (voltage <= 165 && voltage > 150) { //SHUTTER PROFILE 7
digitalWrite(15, HIGH);
delay(15);
if (digitalRead(2) == HIGH) {
delay(32);
digitalWrite(15, LOW);
delay(50);
digitalWrite(7, HIGH); //INDICATOR LED FOR FILM
delayMicroseconds(50);
digitalWrite(7, LOW);
return; }
}
if (voltage <= 180 && voltage > 165) { //SHUTTER PROFILE 8
digitalWrite(15, HIGH);
delay(15);
if (digitalRead(2) == HIGH) {
delay(28);
digitalWrite(15, LOW);
delay(50);
digitalWrite(7, HIGH); //INDICATOR LED FOR FILM
delayMicroseconds(50);
digitalWrite(7, LOW);
return; }
}
if (voltage <= 200 && voltage > 180) { //SHUTTER PROFILE 9
digitalWrite(15, HIGH);
delay(15);
if (digitalRead(2) == HIGH) {
delay(24);
digitalWrite(15, LOW);
delay(50);
digitalWrite(7, HIGH); //INDICATOR LED FOR FILM
delayMicroseconds(50);
digitalWrite(7, LOW);
return ;}
}
if (voltage <= 225 && voltage > 200) { //SHUTTER PROFILE 10
digitalWrite(15, HIGH);
delay(15);
if (digitalRead(2) == HIGH) {
delay(20);
digitalWrite(15, LOW);
delay(50);
digitalWrite(7, HIGH); //INDICATOR LED FOR FILM
delayMicroseconds(50);
digitalWrite(7, LOW);
return ;}
}
if (voltage <= 240 && voltage > 225) { //SHUTTER PROFILE 11
digitalWrite(15, HIGH);
delay(15);
if (digitalRead(2) == HIGH) {
delay(18);
digitalWrite(15, LOW);
delay(50);
digitalWrite(7, HIGH); //INDICATOR LED FOR FILM
delayMicroseconds(50);
digitalWrite(7, LOW);
return ;}
}
if (voltage <= 1024 && voltage > 240) { //SHUTTER PROFILE 12
digitalWrite(15, HIGH);
delay(15);
if (digitalRead(2) == HIGH) {
delay(16);
digitalWrite(15, LOW);
delay(50);
digitalWrite(7, HIGH); //INDICATOR LED FOR FILM
delayMicroseconds(50);
digitalWrite(7, LOW);
return; }
}
if (digitalRead(2) == HIGH)
digitalWrite(7, HIGH); //INDICATOR LED FOR FILM
delayMicroseconds(50);
digitalWrite(7, LOW);
}
if (digitalRead(2) == HIGH) { //TURNS OFF LEDS IF SHUTTER ISN'T WOUND
digitalWrite(5, HIGH);
digitalWrite(6, HIGH);
}
}
