// set pin numbers
const byte led1 = 12; // first led is pin 13
const byte led2 = 11; // second led is pin 12
const byte led3 = 10; // third led is pin 11
const byte BUTTON = 2; // pushbutton is pin 8
// variables
unsigned long ledstate = -1; // current state of output pin
byte currentButton;
byte lastButton = LOW;
int reading;
boolean debounce(boolean last)
{
boolean current = digitalRead(BUTTON); //Read the button state
if (last != current) //if it's different…
{
delay(5); //wait 5ms
current = digitalRead(BUTTON); //read it again
}
return current; //return the current value
}
void setup()
{
pinMode(led1, OUTPUT);
pinMode(led2, OUTPUT);
pinMode(led3, OUTPUT);
pinMode(BUTTON, INPUT);
digitalWrite(led1, LOW);
digitalWrite(led2, LOW);
digitalWrite(led3, LOW);
}
void loop()
{
currentButton = debounce(lastButton); //read deboucned state
if (lastButton == LOW && currentButton == HIGH) //if it was pressed...
{
ledstate ++;
if (ledstate == 3){
ledstate = 0;
}
if (ledstate == 0){
digitalWrite(led1, HIGH);
}
else digitalWrite(led1, LOW);
if (ledstate == 1){
digitalWrite(led2, HIGH);
}
else digitalWrite(led2, LOW);
if (ledstate == 2){
digitalWrite(led3, HIGH);
}
else digitalWrite(led3, LOW);
}
lastButton = currentButton; //reset button value
}