Hello everyone
I think I'm a bit rusty but the following code works except for one part:
I cannot return to the original value of count, it is highlighted in the code section.
Basically my circuit is a test circuit for a 7 segment display being controlled by a push-button switch. Here is the code:
int e = 13;
int g = 12;
int c = 11;
int d = 10;
int b = 9;
int a = 8;
int f = 7;
int s;
int x;
int count;
int btt = 2;
int ledState = HIGH;
int lastButtonState = LOW;
long lastDebounceTime = 0;
long debounceDelay = 50;
void setup()
{
pinMode(a, OUTPUT);
pinMode(b, OUTPUT);
pinMode(c, OUTPUT);
pinMode(d, OUTPUT);
pinMode(e, OUTPUT);
pinMode(f, OUTPUT);
pinMode(g, OUTPUT);
pinMode(btt,INPUT);
}
void loop()
{
long reading=LOW;
int s = digitalRead(btt);
if (s != lastButtonState)
{
lastDebounceTime = millis();
}
if ((millis() - lastDebounceTime) > debounceDelay)
{
s = reading;
}
lastButtonState = reading;
if (s==HIGH)
{
count++;
}
if (count==0) // this is where I want to return after the last push of the button
{
digitalWrite(a, HIGH);
digitalWrite(b, HIGH);
digitalWrite(c, HIGH);
digitalWrite(d, HIGH);
digitalWrite(e, HIGH);
digitalWrite(f, HIGH);
return;
}
else if (count==1)
{
digitalWrite(a, LOW);
digitalWrite(b, LOW);
digitalWrite(c, LOW);
digitalWrite(d, LOW);
digitalWrite(e, LOW);
digitalWrite(f, LOW);
if (x!=5)
{
digitalWrite(b, HIGH);
delay(50);
digitalWrite(b, LOW);
delay(50);
x++;
digitalWrite(c, HIGH);
delay(50);
digitalWrite(c, LOW);
delay(50);
x++;
digitalWrite(d, HIGH);
delay(50);
digitalWrite(d, LOW);
delay(50);
x++;
digitalWrite(e, HIGH);
delay(50);
digitalWrite(e, LOW);
delay(50);
x++;
digitalWrite(f, HIGH);
delay(50);
digitalWrite(f, LOW);
delay(50);
x++;
}
else if (x==5)
{
digitalWrite(f, HIGH);
delay(50);
digitalWrite(f, LOW);
delay(50);
x--;
digitalWrite(e, HIGH);
delay(50);
digitalWrite(e, LOW);
delay(50);
x--;
digitalWrite(d, HIGH);
delay(50);
digitalWrite(d, LOW);
delay(50);
x--;
digitalWrite(c, HIGH);
delay(50);
digitalWrite(c, LOW);
delay(50);
x--;
digitalWrite(b, HIGH);
delay(50);
digitalWrite(b, LOW);
delay(50);
x--;
}
return;
}
else if (count==2)
{
digitalWrite(f,HIGH);
digitalWrite(c,HIGH);
delay(100);
digitalWrite(b,HIGH);
digitalWrite(e,HIGH);
delay(100);
digitalWrite(f,LOW);
digitalWrite(c,LOW);
delay(50);
digitalWrite(b,LOW);
digitalWrite(e,LOW);
delay(50);
return;
}
else if (count==3)
{
digitalWrite(a,HIGH);
delay(50);
digitalWrite(a,LOW);
delay(50);
digitalWrite(g,HIGH);
delay(50);
digitalWrite(g,LOW);
delay(50);
digitalWrite(d,HIGH);
delay(50);
digitalWrite(d,LOW);
delay(50);
return;
}
else if (count==4)
{
digitalWrite(a, HIGH);
digitalWrite(b, HIGH);
digitalWrite(c, HIGH);
digitalWrite(d, HIGH);
digitalWrite(e, HIGH);
digitalWrite(f, HIGH);
return;
}
else if (count==5)
{
digitalWrite(f,HIGH);
delay(20);
digitalWrite(f,LOW);
delay(20);
digitalWrite(g,HIGH);
delay(20);
digitalWrite(g,LOW);
delay(20);
digitalWrite(c,HIGH);
delay(20);
digitalWrite(c,LOW);
delay(20);
digitalWrite(d,HIGH);
delay(20);
digitalWrite(d,LOW);
delay(20);
digitalWrite(e,HIGH);
delay(20);
digitalWrite(e,LOW);
delay(20);
digitalWrite(g,HIGH);
delay(20);
digitalWrite(g,LOW);
delay(20);
digitalWrite(b,HIGH);
delay(20);
digitalWrite(b,LOW);
delay(20);
digitalWrite(a,HIGH);
delay(20);
digitalWrite(a,LOW);
delay(20);
return;
}
else
{
count=0;
return;
}
}
I tried inserting int count=0; both outside the if statement and inside but its just becomes unstable
Any help is greatly appreciated, I have prior experience in programming however I haven't touched any coding for the last 3 years so I'm a bit rusty :-[
Thank you in advance