Using a button to toggle an LED ON/OFF I'm fairly new to Arduino and am trying to use a push button to toggle an LED on and off using a momentary press of the button. This code is lifted straight off the tutorial on the Arduino website but is not working for me. It seems to send the LED on a loop - switching between on and off by itself, and pressing the button pauses the cycle. 

Any ideas as to why it is doing that?

int buttonPin = 2;         // the number of the input pin
int ledPin = 13;       // the number of the output pin

int state = HIGH;      // the current state of the output pin
int reading;           // the current reading from the input pin
int previous = LOW;    // the previous reading from the input pin

// the follow variables are long's because the time, measured in miliseconds,
// will quickly become a bigger number than can be stored in an int.
long time = 0;         // the last time the output pin was toggled
long debounce = 200;   // the debounce time, increase if the output flickers

void setup()
{
  pinMode(buttonPin, INPUT);
  pinMode(ledPin, OUTPUT);
  Serial.begin(9600);

}

void loop()
{


  reading = digitalRead(buttonPin);

  // if the input just went from LOW and HIGH and we've waited long enough
  // to ignore any noise on the circuit, toggle the output pin and remember
  // the time
if (reading == HIGH  &amp;&amp; previous == LOW &amp;&amp; millis() - time &gt; debounce) {
  if (state == HIGH)
    state = LOW;
  else 
    state = HIGH;
time = millis();    
}

else 
  if (state == LOW)
    state = LOW;
  else 
    state = HIGH;
  digitalWrite(ledPin, state);
 //Serial.println(buttonPin);
  // 
 Serial.println(reading);
previous = reading;
}
I tested your sketch and it works. I simplified it; it's the same logic, but in a more concise way:

void loop()
{
    reading = digitalRead(buttonPin);

    // if the input just went from LOW and HIGH and we've waited long enough
    // to ignore any noise on the circuit, toggle the output pin and remember
    // the time
    if(reading == HIGH  &amp;&amp; previous == LOW &amp;&amp; millis() - time &gt; debounce) {
        state = !state;
        time = millis();
    }

    digitalWrite(ledPin, state);
    Serial.println(reading);
    previous = reading;
}


setup is still the same.