Post your latest code.
here it is:
#include <Bounce.h>
#define btt 2
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;
Bounce bouncer = Bounce(btt,25);
// The setup() method runs once, when the sketch starts
void setup()
{
// initialize the digital pin as an output:
pinMode(a, OUTPUT);
pinMode(b, OUTPUT);
pinMode(c, OUTPUT);
pinMode(d, OUTPUT);
pinMode(e, OUTPUT);
pinMode(f, OUTPUT);
pinMode(g, OUTPUT);
pinMode(btt,INPUT);
}
// the loop() method runs over and over again,
// as long as the Arduino has power
void loop()
{
bouncer.update();
int s=bouncer.read();
if (s==HIGH)
{
count++;
}
if (count==0)
{
digitalWrite(a, HIGH);
digitalWrite(b, HIGH);
digitalWrite(c, HIGH);
digitalWrite(d, HIGH);
digitalWrite(e, HIGH);
digitalWrite(f, HIGH);
}
else if (count==1)
{
digitalWrite(a,LOW);
if (x!=5)
{
digitalWrite(b, HIGH);
delay(50);
digitalWrite(b, LOW);
delay(5);
x++;
digitalWrite(c, HIGH);
delay(50);
digitalWrite(c, LOW);
delay(5);
x++;
digitalWrite(d, HIGH);
delay(50);
digitalWrite(d, LOW);
delay(5);
x++;
digitalWrite(e, HIGH);
delay(50);
digitalWrite(e, LOW);
delay(5);
x++;
digitalWrite(f, HIGH);
delay(50);
digitalWrite(f, LOW);
delay(5);
x++;
}
else if (x==5)
{
digitalWrite(f, HIGH);
delay(50);
digitalWrite(f, LOW);
delay(5);
x--;
digitalWrite(e, HIGH);
delay(50);
digitalWrite(e, LOW);
delay(5);
x--;
digitalWrite(d, HIGH);
delay(50);
digitalWrite(d, LOW);
delay(5);
x--;
digitalWrite(c, HIGH);
delay(50);
digitalWrite(c, LOW);
delay(5);
x--;
digitalWrite(b, HIGH);
delay(50);
digitalWrite(b, LOW);
delay(5);
x--;
}
}
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);
}
else if (count==3)
{
digitalWrite(a,HIGH);
delay(50);
digitalWrite(a,LOW);
delay(5);
digitalWrite(g,HIGH);
delay(50);
digitalWrite(g,LOW);
delay(5);
digitalWrite(d,HIGH);
delay(50);
digitalWrite(d,LOW);
delay(5);
}
else if (count==4)
{
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);
}
else
{
count=0;
return;
}
}
The Bounce::update() function returns a value. Why don't you use that value?
You have enough LEDs to do something different in loop. Try something like this:
void loop()
{
if(bouncer.update())
{
// Button state change. Was it pressed or released?
if(bouncer.read() == HIGH)
{
count++;
}
}
switch(count)
{
case 0:
digitalWrite(a, LOW);
digitalWrite(b, LOW);
digitalWrite(c, LOW);
digitalWrite(d, LOW);
break;
case 1:
digitalWrite(a, HIGH);
break;
case 2:
digitalWrite(a, HIGH);
digitalWrite(b, HIGH);
break;
case 3:
digitalWrite(a, HIGH);
digitalWrite(b, HIGH);
digitalWrite(c, HIGH);
break;
case 4:
digitalWrite(a, HIGH);
digitalWrite(b, HIGH);
digitalWrite(c, HIGH);
digitalWrite(d, HIGH);
break;
default:
count = 0;
break;
}
}
This should start with all LEDs off. Each time you press a button, count should increment, and another LED should come on. Once all 4 are lit, the next button press will turn them all off again.
ok finally got it to work but not 100% exactly like i wanted:
#include <Bounce.h>
#define btt 2
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;
// LED connected to digital pin 13
Bounce bouncer = Bounce(btt,25);
// The setup() method runs once, when the sketch starts
void setup()
{
// initialize the digital pin as an output:
pinMode(a, OUTPUT);
pinMode(b, OUTPUT);
pinMode(c, OUTPUT);
pinMode(d, OUTPUT);
pinMode(e, OUTPUT);
pinMode(f, OUTPUT);
pinMode(g, OUTPUT);
pinMode(btt,INPUT);
}
// the loop() method runs over and over again,
// as long as the Arduino has power
void loop()
{
bouncer.update();
int s=bouncer.read();
if (s==HIGH)
{
count++;
}
if (count==1)
{
digitalWrite(a, HIGH);
delay(50);
digitalWrite(b, HIGH);
delay(50);
digitalWrite(c, HIGH);
delay(50);
digitalWrite(d, HIGH);
delay(50);
digitalWrite(e, HIGH);
delay(50);
digitalWrite(f, HIGH);
delay(50);
}
else if (count==2)
{
digitalWrite(a,LOW);
if (x!=5)
{
digitalWrite(b, HIGH);
delay(50);
digitalWrite(b, LOW);
delay(5);
x++;
digitalWrite(c, HIGH);
delay(50);
digitalWrite(c, LOW);
delay(5);
x++;
digitalWrite(d, HIGH);
delay(50);
digitalWrite(d, LOW);
delay(5);
x++;
digitalWrite(e, HIGH);
delay(50);
digitalWrite(e, LOW);
delay(5);
x++;
digitalWrite(f, HIGH);
delay(50);
digitalWrite(f, LOW);
delay(5);
x++;
}
else if (x==5)
{
digitalWrite(f, HIGH);
delay(50);
digitalWrite(f, LOW);
delay(5);
x--;
digitalWrite(e, HIGH);
delay(50);
digitalWrite(e, LOW);
delay(5);
x--;
digitalWrite(d, HIGH);
delay(50);
digitalWrite(d, LOW);
delay(5);
x--;
digitalWrite(c, HIGH);
delay(50);
digitalWrite(c, LOW);
delay(5);
x--;
digitalWrite(b, HIGH);
delay(50);
digitalWrite(b, LOW);
delay(5);
x--;
}
}
else if (count==3)
{
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);
}
else if (count==4)
{
digitalWrite(a,HIGH);
delay(50);
digitalWrite(a,LOW);
delay(5);
digitalWrite(g,HIGH);
delay(50);
digitalWrite(g,LOW);
delay(5);
digitalWrite(d,HIGH);
delay(50);
digitalWrite(d,LOW);
delay(5);
}
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);
}
else
{
count=0;
return;
}
}
#include <Bounce.h>
enum
{
pinButton = 2
, pinA = 8
, pinB = 9
, pinC = 11
, pinD = 10
, pinE = 13
, pinF = 7
, pinG = 12
};
Bounce bouncer(pinButton, 25);
void loop()
{
static int count;
static int x;
if ( HIGH == bouncer.update() )
{
count++;
}
switch ( count )
{
case 1:
digitalWrite(pinA, HIGH); delay(50);
digitalWrite(pinB, HIGH); delay(50);
digitalWrite(pinC, HIGH); delay(50);
digitalWrite(pinD, HIGH); delay(50);
digitalWrite(pinE, HIGH); delay(50);
digitalWrite(pinF, HIGH); delay(50);
break;
case 2:
digitalWrite(pinA, LOW);
if ( 5 == x )
{
digitalWrite(pinF, HIGH); delay(50); digitalWrite(pinF, LOW); delay(5); x--;
digitalWrite(pinE, HIGH); delay(50); digitalWrite(pinE, LOW); delay(5); x--;
digitalWrite(pinD, HIGH); delay(50); digitalWrite(pinD, LOW); delay(5); x--;
digitalWrite(pinC, HIGH); delay(50); digitalWrite(pinC, LOW); delay(5); x--;
digitalWrite(pinB, HIGH); delay(50); digitalWrite(pinB, LOW); delay(5); x--;
}
else
{
digitalWrite(pinB, HIGH); delay(50); digitalWrite(pinB, LOW); delay(5); x++;
digitalWrite(pinC, HIGH); delay(50); digitalWrite(pinC, LOW); delay(5); x++;
digitalWrite(pinD, HIGH); delay(50); digitalWrite(pinD, LOW); delay(5); x++;
digitalWrite(pinE, HIGH); delay(50); digitalWrite(pinE, LOW); delay(5); x++;
digitalWrite(pinF, HIGH); delay(50); digitalWrite(pinF, LOW); delay(5); x++;
}
break;
case 3:
digitalWrite(pinF, HIGH); digitalWrite(pinC, HIGH); delay(100);
digitalWrite(pinB, HIGH); digitalWrite(pinE, HIGH); delay(100);
digitalWrite(pinF, LOW); digitalWrite(pinC, LOW); delay(50);
digitalWrite(pinB, LOW); digitalWrite(pinE, LOW); delay(50);
break;
case 4:
digitalWrite(pinA, HIGH); delay(50); digitalWrite(pinA, LOW); delay(5);
digitalWrite(pinG, HIGH); delay(50); digitalWrite(pinG, LOW); delay(5);
digitalWrite(pinD, HIGH); delay(50); digitalWrite(pinD, LOW); delay(5);
break;
case 5:
digitalWrite(pinF, HIGH); delay(20); digitalWrite(pinF, LOW); delay(20);
digitalWrite(pinG, HIGH); delay(20); digitalWrite(pinG, LOW); delay(20);
digitalWrite(pinC, HIGH); delay(20); digitalWrite(pinC, LOW); delay(20);
digitalWrite(pinD, HIGH); delay(20); digitalWrite(pinD, LOW); delay(20);
digitalWrite(pinE, HIGH); delay(20); digitalWrite(pinE, LOW); delay(20);
digitalWrite(pinG, HIGH); delay(20); digitalWrite(pinG, LOW); delay(20);
digitalWrite(pinB, HIGH); delay(20); digitalWrite(pinB, LOW); delay(20);
digitalWrite(pinA, HIGH); delay(20); digitalWrite(pinA, LOW); delay(20);
break;
default:
count = 0;
break;
}
}
void setup()
{
pinMode(pinA, OUTPUT);
pinMode(pinB, OUTPUT);
pinMode(pinC, OUTPUT);
pinMode(pinD, OUTPUT);
pinMode(pinE, OUTPUT);
pinMode(pinF, OUTPUT);
pinMode(pinG, OUTPUT);
pinMode(pinButton, INPUT);
}
if ( HIGH == bouncer.update() )
{
count++;
}
This won't work.
From: http://www.arduino.cc/playground/Code/Bounce
int update()
Updates Bounce. Returns true if the pin state changed (HIGH to LOW or LOW to HIGH). False if not.
If the state changes from HIGH to LOW OR from LOW to HIGH the value returned will be true. If no change occurred, the value return will be false.
It does NOT return the new state of the button.
ok finally got it to work but not 100% exactly like i wanted:
What did you change? What exactly is not 100% right? It would make your code a lot easier to understand, and modify, if you learned how to write functions. A set of functions called Zero(), One(), Two(), Three(), Four(), etc. that you call for each value of count would allow you to isolate the problem. Is the wrong function called? Does count update at incorrect times?
You could also learn to use Serial.begin() and Serial.print(ln)() to output data to the serial monitor to trace through the execution of the program.
-
i changed the conditions for the IF, instead of doing count==0 , i just did count==1/2/3/4/5 and it works, but I still know why it wouldn't work with count==0
-
I know about serial.begin, i just thought the code is too simple to bother with it (obviously not lol)