que vai ligar um led ou desligar ele.
esse é o programa que troca o estado do led
#define LED_PIN 5
#define TOOGLE_SWITCH_PIN 13
// switch stuff
int readingSwitch;
int previousSwitch = LOW;
boolean on = false;
void setup()
{
pinMode(TOOGLE_SWITCH_PIN, INPUT);
pinMode(LED_PIN, OUTPUT);
digitalWrite(LED_PIN, LOW);
}
void loop()
{
if (wasButtonPressed()) {
switchRelayState();
} else if (wasSwitchToggled()) {
switchRelayState();
}
}
void switchLedState() {
if (on) {
digitalWrite(LED_PIN, LOW);
on = false;
} else {
digitalWrite(LED_PIN, HIGH);
on = true;
}
}
boolean wasSwitchToggled() {
readingSwitch = digitalRead(TOOGLE_SWITCH_PIN);
boolean toggled = false;
if (readingSwitch != previousSwitch) {
toggled = true;
}
previousSwitch = readingSwitch;
return toggled;
}
esse é o jeito que a switch está ligada.
Quando a switch esta em aberto, ela fica trocando o estado do led muito rapido.
Nao sei se estou colocando o resistor pull-up corretamente, mas do outro jeito (conectado entre a switch e o pin4)
também acontece a mesma coisa.
Quando a switch esta em aberto, ela fica trocando o estado do led muito rapido.
Isso acontece porque o pino está com o estado flutuando ou seja nao esta a 0 nem a 1 confirmado, ele apanha tudo que existe no "ar" e assim ele muda de estado rapido.Para isso deves fazer um pull-up.Podes fazer isso atravez dos pull-ups internos usando:
digitalWrite(TOOGLE_SWITCH_PIN, HIGH);
Outro problema que teras quando usas botoes é que ele gera picos rapidos quando comutas o botao.Procura por debouncing para perceberes o que acontece no botao para evitares que ele tambem comute varias vezes quando pressionado
HugoPT:
Outro problema que teras quando usas botoes é que ele gera picos rapidos quando comutas o botao.Procura por debouncing para perceberes o que acontece no botao para evitares que ele tambem comute varias vezes quando pressionado
Nunca testei este tipo de interruptores quanto ao debounce, mas arriscaria dizer que são bem melhores pelo simples facto de não ter de haver o efeito mola no contacto. Mas nada como experimentar.