Hello, I'm using arduino UNO and it keeps on resetting it self on regular intervals.
Initially, it kept on resetting it self after every 6 minutes and 48 seconds. I experimented a little by taking out the statement "serial.begin(9600)" and now my arduino resets itself after every 50 seconds. I really would appreciate any kind of help.
here is my code
int no;
int case0=0;
int case1=0;
int case2=0;
int case3=0;
int case4=0;
int case5=0;
void setup() {
pinMode(2,OUTPUT);
pinMode(3,OUTPUT);
pinMode(4,OUTPUT);
pinMode(5,OUTPUT);
pinMode(6,OUTPUT);
pinMode(7,OUTPUT);
pinMode(A3,OUTPUT);
pinMode(8,INPUT);
pinMode(9,INPUT);
pinMode(10,INPUT);
pinMode(11,INPUT);
pinMode(12,INPUT);
digitalWrite(0,LOW);
digitalWrite(1,LOW);
//CODE HERE IS RUNNING FOR THE FIRST TIME, NOW BEFORE THE PROGRAME GOES INTO THE LOOP, THIS WOULD RUN FIRST AND CAN GIVE YOU THE IDEA OF PORTS THAT ARE EIETHER ON OR OFF.
start:
int sensorValue = analogRead(A4);
float voltage = sensorValue * (5.0 / 1023.0);
if(voltage<=0.5)
{
digitalWrite(2,HIGH);
}
else if(voltage >=0.51 && voltage <=1.50)
{
digitalWrite(3,HIGH);
}
else if(voltage >=1.51 && voltage <2.5)
{
digitalWrite(4,HIGH);
}
else if(voltage >= 2.51 &&voltage<3.5)
{
digitalWrite(5,HIGH);
}
else if(voltage > 3.51 && voltage<4.5)
{
digitalWrite(6,HIGH);
}
else if(voltage >= 4.51)
{
digitalWrite(A3,HIGH);
}
else
{
goto start; // If values are in between those spacing for protection, this will take the function to start and will start all over again.
}
}
// the loop routine runs over and over again forever:
void loop() {
no = checkno(); //-------------------------> THIS
int sensorValue = analogRead(A4);
float voltage = sensorValue * (5.0 / 1023.0);
Serial.println(voltage);
int casevalue = getcasevalue(voltage);
if(casevalue==10)
{
casevalue = getcasevalue(voltage); // another scheme for protection
}
runcase(casevalue);
}
int getcasevalue(float voltage1)
{
int valueforcase;
if(voltage1 <= 0.5)
{
valueforcase = 0;
}
else if(voltage1 >= 0.51 && voltage1 <= 1.5)
{
valueforcase =1;
}
else if(voltage1 >= 1.52 && voltage1 <= 2.5)
{
valueforcase=2;
}
else if(voltage1>= 2.52 &&voltage1<=3.5)
{
valueforcase=3;
}
else if(voltage1>=3.52 && voltage1<=4.5)
{
valueforcase=4;
}
else if(voltage1 >= 4.52)
{
valueforcase=5;
}
else
{
return 10;
}
return valueforcase;
}
void runcase(int casevalue)
{
int volt = signal();
switch(casevalue)
{
case 0:
if(no==8) // this is because, you need to keep on c1 if UV IS ON
{
digitalWrite(2,HIGH);
break;
}
if(case0==0)
{ //BRACKETS OFF IFF HAVE BEEN EXTENDED AND FOR LOOP IS NOW A PART OF THIS IFF, CONDITION FOR EXPERIMENT PURPOSES
digitalWrite(7,HIGH);
delay(100);
for(int i=2 ; i<7 ; i++)
{
digitalWrite(i,LOW);
digitalWrite(A3,LOW);
}
}
if(digitalRead(no)==LOW)
{
digitalWrite(2,HIGH);
}
case0++;
case1=0;
case2=0;
case3=0;
case4=0;
case5=0;
digitalWrite(7,LOW);
break;
case 1:
digitalWrite(2,LOW);
if(case1==0)
{
digitalWrite(7,HIGH);
delay(100);
for(int i=2 ; i<7 ; i++)
{
digitalWrite(i,LOW);
digitalWrite(A3,LOW);
}
}
if(digitalRead(no)==LOW)
{
digitalWrite(3,HIGH);
}
case0=0;
case1++;
case2=0;
case3=0;
case4=0;
case5=0;
if(digitalRead(3+5)==HIGH)
{
digitalWrite(7,LOW);
}
break;
case 2:
if(case2==0)
{
digitalWrite(7,HIGH);
delay(100);
for(int i=2 ; i<7 ; i++)
{
digitalWrite(i,LOW);
digitalWrite(A3,LOW);
}
}
if(digitalRead(no)==LOW)
{
digitalWrite(4,HIGH);
}
case0=0;
case1=0;
case2++;
case3=0;
case4=0;
case5=0;
if(digitalRead(4+5)==HIGH)
{
digitalWrite(7,LOW);
}
break;
case 3:
if(case3==0)
{
digitalWrite(7,HIGH);
delay(100);
for(int i=2 ; i<7 ; i++)
{
digitalWrite(i,LOW);
digitalWrite(A3,LOW);
}
}
if(digitalRead(no)==LOW)
{
digitalWrite(5,HIGH);
}
case0=0;
case1=0;
case2=0;
case3++;
case4=0;
case5=0;
if(digitalRead(5+5)==HIGH)
{
digitalWrite(7,LOW);
}
break;
case 4:
digitalWrite(A3,LOW);
if(case4==0)
{
digitalWrite(7,HIGH);
delay(100);
for(int i=2 ; i<7 ; i++)
{
digitalWrite(i,LOW);
digitalWrite(A3,LOW);
}
}
if(digitalRead(no)==LOW)
{
digitalWrite(6,HIGH);
}
case0=0;
case1=0;
case2=0;
case3=0;
case4++;
case5=0;
if(digitalRead(6+5)==HIGH)
{
digitalWrite(7,LOW);
}
break;
case 5:
if(digitalRead(11)==HIGH)
{
digitalWrite(A3,HIGH);
break;
}
if(case5==0)
{
digitalWrite(7,HIGH);
delay(100);
for(int i=2 ; i<7 ; i++)
{
digitalWrite(i,LOW);
digitalWrite(A3,LOW);
}
}
if(digitalRead(no)==LOW)
{
digitalWrite(A3,HIGH);
}
case0=0;
case1=0;
case2=0;
case3=0;
case4=0;
case5++;
digitalWrite(7,LOW);
break;
}
}
int signal()
{
int sensorValue = analogRead(A4);
float voltage = sensorValue * (5.0 / 1023.0);
return voltage;
}
int checkno()
{
for(int i=8; i<13 ; i++)
{
int val = digitalRead(i);
if(val==HIGH)
{
return i;
break;
}
}
}