Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #define BUTTON 2
- #define LED1 7
- #define LED2 8
- #define WAITING_TIME 1000
- #define MAX_TIME 100
- bool bBTNstate;
- bool bPrevBTNstate;
- bool bFlag;
- bool bFlagReset;
- unsigned long ulPrevTime;
- unsigned long ulCurrentTime;
- unsigned long ulResetTime;
- byte status;
- void setup() {
- pinMode(BUTTON, INPUT_PULLUP);
- pinMode(LED1, OUTPUT);
- pinMode(LED2, OUTPUT);
- bBTNstate = true;
- bFlag = false;
- bFlagReset = false;
- bPrevBTNstate = bBTNstate;
- status = 0;
- ulCurrentTime = 0;
- ulPrevTime = 0;
- }
- void loop() {
- ulCurrentTime = millis();
- bBTNstate = digitalRead(BUTTON);
- if (bBTNstate && !bPrevBTNstate) // wykrycie kliknięcia
- {
- status++;
- ulPrevTime = ulCurrentTime;
- bFlag = true;
- }
- if(bFlag && (ulCurrentTime - ulPrevTime) > MAX_TIME)
- {
- switch (status)
- {
- case 2: // dwa kliknięcia
- digitalWrite(LED1, HIGH);
- ulResetTime = ulCurrentTime;
- bFlag = false;
- bFlagReset = true;
- break;
- case 3: //trzy kliknięcia
- digitalWrite(LED2, HIGH);
- ulResetTime = ulCurrentTime;
- bFlag = false;
- bFlagReset = true;
- break;
- default: // reset licznika kliknięć
- status = 0;
- bFlag = false;
- break;
- }
- }
- if(bFlagReset && (ulCurrentTime - ulResetTime) > WAITING_TIME) // reset po 1s
- {
- status = 0;
- bFlagReset = false;
- digitalWrite(LED1, LOW);
- digitalWrite(LED2, LOW);
- }
- bPrevBTNstate = bBTNstate;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement