Nee dat doe je niet.
Je controleert of de knop is ingedrukt, en zet dan de LED aan.
Dat is iets anders als wanneer je de LED aanzet, je controleert of de knop ook was ingedrukt.
Dan je probleem.
Je controleert nu of de knop is ingedrukt, en in dat geval ga je wat doen, maar dat lukt niet.
Anders moet ie wat anders doen, en hij gaat dat andere dan ook doen, zo heb je geconstateerd.
Draai het dan eens om (is net zo moeilijk).
Controleer of de knop NIET is ingedrukt en zet dan de LED uit, en anders zet je de LED aan.
Kijken of dan de LED altijd aan blijft.
Overigens, hoe heb je je buttons aangesloten ?
Ik adviseer je de button een verbinding naar GND te laten maken, en de pullup aan de ingang aan te zetten.
Dan krijg je geen ongedefinieerde ingangen (die dus alle denkbare waarden kunnen geven).
Alleen word het dan wel:
if digitalRead(button) == LOW
{
digitalWrite(led, HIGH);
}
else
{
digitalWrite(led, LOW);
}
}
In principe kun je zelfs de gewenste waarde achter de if weglaten maar ik weet niet of de IDE dat accepteert.
Dan zou je moeten krijgen:
if digitalRead(button)
{
digitalWrite(led, LOW);
}
else
{
digitalWrite(led, HIGH);
}
}
De voorwaarde is dan die van je button.
Zo'n if voorwaarde heeft maar 2 mogelijkheden, waar (= 1 of HIGH) of niet waar (= 0 of LOW).
De heren met meer ervaring mogen aangeven of dit op deze manier kan en of dat ook wel netjes genoeg is.