I'd currently use below code for switch tutorial, step-by-step coding and clear.
/*
Toggle LED (13 active-high) with Push Button switch (2 active-low)
*/
int swPin = 2;
int ledPin = 13;
int ledState = 0; // intial state = 0
void setup()
{
pinMode(ledPin, OUTPUT);
pinMode(swPin, INPUT);
digitalWrite(swPin, HIGH); // enable internal pull-up (Ext. R may removed)
}
void loop()
{
if ((digitalRead(swPin))==LOW) // switch is pressed?
{
if (ledState==0) // toggle state and led acion
{
digitalWrite(ledPin,HIGH);
ledState=1;
}
else
{
digitalWrite(ledPin,LOW);
ledState=0;
}
while ((digitalRead(swPin))==LOW) // wait for switch depressed
{ delay(10); }
}
}
or another code without waiting
/*
Toggle LED (13 active-high) with Push Button switch (2 active-low)
*/
int swPin = 10;
int ledPin = 13;
int ledState = 0; // intial state = 0
int swPressed = 0; // sw hold state =0
void setup()
{
pinMode(ledPin, OUTPUT);
pinMode(swPin, INPUT);
digitalWrite(swPin, HIGH); // enable internal pull-up (Ext. R may removed)
}
void loop()
{
if ((digitalRead(swPin))==LOW) // switch is pressed?
{
if (swPressed==0)
{
swPressed=1;
delay(10);
if (ledState==0) // toggle state and led acion
{
digitalWrite(ledPin,HIGH);
ledState=1;
}
else
{
digitalWrite(ledPin,LOW);
ledState=0;
}
}
}
else
{
swPressed=0;
}
}