I am trying to get a circuit, with seven LDR's, you have to point a laser at them in the right order to get a display to light up. at first i tried seven if statements within each other... didnt succeed, then 7 different loops, with each time the right LDR was activated it would move onto the next loop, to no success. I've now tried to just do it in the void loop mainly but am also stuck....
I think the main issue are my side loops, and formatting? - not sure of the lingo... first time on here and doing arduino/coding...
i have checked and my LDR's are sensing fine, until the correct LDR (the first one in the series) is activated, then after this value the code freezes and it just stops....
const int LED1 = 13;
const int LED2 = 12;
const int LED3 = 11;
const int LED4 = 10;
const int LED5 = 9;
const int LED6 = 8;
const int LED7 = 7;
const int DISPLAY1 = 15;
const int DETECTOR1 = A0;
const int DETECTOR2 = A1;
const int DETECTOR3 = A2;
const int DETECTOR4 = A3;
const int DETECTOR5 = A4;
const int DETECTOR6 = A5;
const int DETECTOR7 = A6;
bool newval1 = false;
bool newval2 = false;
bool newval3 = false;
bool newval4 = false;
bool newval5 = false;
bool newval6 = false;
bool newval7 = false;
bool confval1 = false;
bool confval2 = false;
bool confval3 = false;
bool confval4 = false;
bool confval5 = false;
bool confval6 = false;
bool confval7 = false;
bool confval8 = false;
int VAL1 = 0;
int VAL2 = 0;
int VAL3 = 0;
int VAL4 = 0;
int VAL5 = 0;
int VAL6 = 0;
int VAL7 = 0;
int sensorValue = 0; // variable to store the value coming from the sensor
void setup() {
pinMode(LED1 , OUTPUT);
pinMode(LED2 , OUTPUT);
pinMode(LED3 , OUTPUT);
pinMode(LED4 , OUTPUT);
pinMode(LED5 , OUTPUT);
pinMode(LED6 , OUTPUT);
pinMode(LED7 , OUTPUT);
pinMode(DETECTOR1 , INPUT);
pinMode(DETECTOR2 , INPUT);
pinMode(DETECTOR3 , INPUT);
pinMode(DETECTOR4 , INPUT);
pinMode(DETECTOR5 , INPUT);
pinMode(DETECTOR6 , INPUT);
pinMode(DETECTOR7 , INPUT);
pinMode(DISPLAY1 , OUTPUT);
//lcd.begin(4, 1);
//lcd.print("0285")
Serial.begin(9600); //sets serial port for communication
start();
}
void start() { //a loop to reset my code, its meant to be easily repeatable without a hard reset
newval1 = false;
newval2 = false;
newval3 = false;
newval4 = false;
newval5 = false;
newval6 = false;
newval7 = false;
confval1 = true;
confval2 = false;
confval3 = false;
confval4 = false;
confval5 = false;
confval6 = false;
confval7 = false;
confval8 = false;
return;
}
void loop() {
sensorValue = analogRead(DETECTOR4); // read the value from the sensor
Serial.println(sensorValue); //prints the values coming from the sensor on the screen
while (confval2 == true) {
digitalWrite(LED1 , HIGH);
}
while (confval3 == true) {;
digitalWrite(LED2 , HIGH);
}
while (confval4 == true) {
digitalWrite(LED3 , HIGH);
}
while (confval5 == true) {;
digitalWrite(LED4 , HIGH);
}
while (confval6 == true) {
digitalWrite(LED5 , HIGH);
}
while (confval7 == true) {
digitalWrite(LED6 , HIGH);
}
while (confval8 == true) {
digitalWrite(LED7 , HIGH);
//write the display stuff here
} // these values will turn the light on
VAL1 = analogRead(A0);
if (VAL1 <= 945) {
newval1 = true;
}
delay(100);
VAL2 = analogRead(A1);
if (VAL2 <= 945) {
newval2 = true;
}
delay(100);
VAL3 = analogRead(A2);
if (VAL3 <= 945) {
newval3 = true;
}
delay(100);
VAL4 = analogRead(A3);
if (VAL4 <= 945) {
newval4 = true;
}
delay(100);
VAL5 = analogRead(A4);
if (VAL5 <= 945) {
newval5 = true;
}
delay(100);
VAL6 = analogRead(A5);
if (VAL6 <= 945) {
newval6 = true;
}
delay(100);
VAL7 = analogRead(A6);
if (VAL7 <= 945) {
newval7 = true;
}
delay(100); // to check the LDR's about once a sec when all the timers are accounted for
if ((newval1 == true || newval3 == true || newval4 == true || newval5 == true || newval6 == true || newval2 == true) && confval7 == true) {
start();
}
delay(20);
if (newval7 == true && confval7 == true) {
light7();
}
delay(20);
if (newval7 == true && confval8 == true) {
newval7 = false;
}
delay(20); // these come in triplets, to check if the right LDR is activated, if so allows the next to be activated, if not resets it.
// they finish off the void loop (about 6 triplets, and one double of this format for the 7 LDRs)
if ((newval1 == true || newval3 == true || newval4 == true || newval5 == true || newval2 == true || newval7 == true) && confval6 == true) {
start();
}
delay(20);
if (newval6 == true && confval6 == true) {
light6();
}
delay(20);
if (newval6 == true && confval7 == true) {
newval6 = false;
}
delay(20);
if ((newval1 == true || newval3 == true || newval4 == true || newval2 == true || newval6 == true || newval7 == true) && confval5 == true) {
start();
}
delay(20);
if (newval5 == true && confval5 == true) {
light5();
}
delay(20);
if (newval5 == true && confval6 == true) {
newval5 = false;
}
delay(20);
if ((newval1 == true || newval2 == true || newval3 == true || newval5 == true || newval6 == true || newval7 == true) && confval4 == true) {
start();
}
delay(20);
if (newval4 == true && confval4 == true) {
light4();
}
delay(20);
if (newval4 == true && confval5 == true) {
newval4 = false;
}
delay(20);
if ((newval1 == true || newval2 == true || newval4 == true || newval5 == true || newval6 == true || newval7 == true) && confval3 == true) {
start();
}
delay(20);
if (newval3 == true && confval3 == true) {
light3();
}
delay(20);
if (newval3 == true && confval4 == true) {
newval3 = false;
}
delay(20);
if ((newval1 == true || newval3 == true || newval4 == true || newval5 == true || newval6 == true || newval7 == true) && confval2 == true) {
start();
}
delay(20);
if (newval2 == true && confval2 == true) {
light2();
}
delay(20);
if (newval2 == true && confval3 == true) {
newval2 = false;
}
delay(20);
if (newval1 == true && confval1 == true) {
light1();
}
delay(20);
if (newval1 == true && confval2 == true) {
newval1 = false;
}
delay(20);
}
void light1() {
newval2 = false;
newval3 = false;
newval4 = false;
newval5 = false;
newval6 = false;
newval7 = false;
confval2 = true;
return; // these code allows the next LDR to be activated, whilst resetting the previous values so it doesnt get messed up.
}
void light2() {
newval1 = false;
newval3 = false;
newval4 = false;
newval5 = false;
newval6 = false;
newval7 = false;
confval3 = true;
return;
}
void light3() {
newval2 = false;
newval1 = false;
newval4 = false;
newval5 = false;
newval6 = false;
newval7 = false;
confval4 = true;
return;
}
void light4() {
newval2 = false;
newval3 = false;
newval1 = false;
newval5 = false;
newval6 = false;
newval7 = false;
confval5 = true;
return;
}
void light5() {
newval2 = false;
newval3 = false;
newval4 = false;
newval1 = false;
newval6 = false;
newval7 = false;
confval6 = true;
return;
}
void light6() {
newval2 = false;
newval3 = false;
newval1 = false;
newval5 = false;
newval1 = false;
newval7 = false;
confval7 = true;
return;
}
void light7() {
newval2 = false;
newval3 = false;
newval1 = false;
newval5 = false;
newval6 = false;
newval1 = false;
confval8 = true;
return;
}
please_work.ino (6.95 KB)