The idea is that i use two switches. the left switch sets the diodes to the right. for every click a diod lights up and i equal to one blink from the 555. You can maximum set the time to 10 blinks (cyels). When it is 5 seconds left the right diod goes low and then the next etc. When the time is the same as the set blinks (cycles is 0) all diods schould be low and the green diod should light up (and the 555 stops). The right switch starts the 555 timer. (The pushbuttons act like switches). For some reason the diods dosent start to go low at the right time and the last diod never goes low aswell as the green dosent go high. I need some help with the code.
i have uploaded an picture of the circut and here is the code:
// C++ code
//
int button1 = 2;
int led = 13;
int statusNew;
int statusOld=1;
int ledstatus=0;
int timer=4;
int ledgl=8;
int ledbl=9;
int ledg=10;
int ledgr=11;
int ledbr=12;
int buttonup=5;
//t buttondw=6;
boolean oldbuttonstate=LOW;
boolean newbuttonstate=LOW;
boolean oldtimerstate=LOW;
boolean newtimerstate=LOW;
//int newtimerstate;
int timercount;
byte state=0;
byte c;
int ledgreen=6;
void setup()
{
pinMode(led, OUTPUT);
pinMode(button1, INPUT);
pinMode(timer, INPUT);
pinMode(buttonup, INPUT);
pinMode(ledgl,OUTPUT);
pinMode(ledbl,OUTPUT);
pinMode(ledg,OUTPUT);
pinMode(ledgr,OUTPUT);
pinMode(ledbr,OUTPUT);
pinMode(timer,INPUT);
pinMode(ledgreen,OUTPUT);
digitalWrite(ledgl,LOW);
digitalWrite(ledbl,LOW);
digitalWrite(ledg,LOW);
digitalWrite(ledgr,LOW);
digitalWrite(ledbr,LOW);
digitalWrite(ledgreen,LOW);
//Serial.begin(9600);
}
void loop(){
statusNew=digitalRead(button1);
newbuttonstate=digitalRead(buttonup);
newtimerstate=digitalRead(timer);
if (newbuttonstate != oldbuttonstate)
{
if(newbuttonstate==HIGH)
state++;
c++;
if (state>5){
state=5;
if(c>10);
c==10;
}
digitalWrite(ledgl,LOW);
digitalWrite(ledbl,LOW);
digitalWrite(ledg,LOW);
digitalWrite(ledgr,LOW);
digitalWrite(ledbr,LOW);
if(state==1){
digitalWrite(ledgl,HIGH);}
if(state==2){
digitalWrite(ledgl,HIGH);
digitalWrite(ledbl,HIGH);}
if(state==3){
digitalWrite(ledgl,HIGH);
digitalWrite(ledbl,HIGH);
digitalWrite(ledg,HIGH);}
if(state==4){
digitalWrite(ledgl,HIGH);
digitalWrite(ledbl,HIGH);
digitalWrite(ledg,HIGH);
digitalWrite(ledgr,HIGH);}
if(state==5){
digitalWrite(ledgl,HIGH);
digitalWrite(ledbl,HIGH);
digitalWrite(ledg,HIGH);
digitalWrite(ledgr,HIGH);
digitalWrite(ledbr,HIGH);}
}
if(statusOld==0&&statusNew==1){
delay(50);
if(ledstatus==0){
digitalWrite(led,HIGH);
ledstatus=1;
}
else
{
digitalWrite(led,LOW);
ledstatus=0;
}
}
if(newtimerstate!= oldtimerstate)
{
if(newtimerstate==HIGH)
{
//delay(10);
timercount++;
c--;
state=0;
if(timercount>10){
timercount==10;
}
if(c==5){
digitalWrite(ledbr,LOW);
}
if(c==4){
digitalWrite(ledbr,LOW);
digitalWrite(ledgr,LOW);
}
if(c==3){
digitalWrite(ledbr,LOW);
digitalWrite(ledgr,LOW);
digitalWrite(ledg,LOW);
}
if(c==2){
digitalWrite(ledbr,LOW);
digitalWrite(ledgr,LOW);
digitalWrite(led,LOW);
digitalWrite(ledbl,LOW);
}
if(c==1){
digitalWrite(ledbr,LOW);
digitalWrite(ledgr,LOW);
digitalWrite(ledg,LOW);
digitalWrite(ledbl,LOW);
digitalWrite(ledgl,LOW);
digitalWrite(ledgreen,HIGH);
}
}
}
statusOld=statusNew;
oldbuttonstate=newbuttonstate;
oldtimerstate=newtimerstate;
}