En knapp flera fungerar! #Arduino (3 / 4 steg)
Steg 3: kod!
#include "OneButton.h"
Åtgärderna jag ca göra...
TypeDef fasttexttypen {
ACTION_NONE, / / gör ingenting.
ACTION_ON, / / set LED "På"
ACTION_SLOW, / / blinkar LED "SLOW"
ACTION_FAST / / blinkar LED "Snabbt"
}
MyActions;
Setup en ny OneButton på stift A1.
OneButton button(A1, true);
MyActions nextAction = ACTION_NONE; Inga åtgärder vid start
installation kod här, att köra en gång:
void setup() {
Aktivera standarden ledde på stift 13.
pinMode (13, OUTPUT); Anger den digitala pin som utdata
länka myClickFunction funktionen kallades för en click-händelse.
button.attachClick(myClickFunction);
länk funktionen doubleclick kallades för en doubleclick händelse.
button.attachDoubleClick(myDoubleClickFunction);
} / / setup
huvudkoden här, ska upprepas:
void loop() {
osignerade långa nu = millis();
Håll utkik på knappen:
Button.Tick();
Du kan genomföra andra kod här eller bara vänta ett tag
om (nextAction == ACTION_NONE) {
inte göra någonting.
digitalWrite 13, låg.
} else om (nextAction == ACTION_ON) {
Aktivera LED
digitalWrite 13, hög.
} else om (nextAction == ACTION_SLOW) {
gör en långsam blinkar
om (nu % 1000 < 500) {
digitalWrite 13, låg.
} annat {
digitalWrite 13, hög.
} / / om
} else om (nextAction == ACTION_FAST) {
gör en snabb blinkar
om (nu % 200 < 100) {
digitalWrite 13, låg.
} annat {
digitalWrite 13, hög.
} / / om
} / / om
} / / slinga
denna funktion kommer att anropas när knappen trycktes 1 gång och dem lite tid har gått.
void myClickFunction() {
om (nextAction == ACTION_NONE)
nextAction = ACTION_ON;
annat
nextAction = ACTION_NONE;
} / / myClickFunction
denna funktion kommer att anropas när knappen trycktes 2 gånger inom en kort tidsrymd.
void myDoubleClickFunction() {
om (nextAction == ACTION_ON) {
nextAction = ACTION_SLOW;
} else om (nextAction == ACTION_SLOW) {
nextAction = ACTION_FAST;
} else om (nextAction == ACTION_FAST) {
nextAction = ACTION_ON;
} / / om
} / / myDoubleClickFunction
Slutet