Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #define DELAY_MS 700
- #define MAX_CLICKS 100
- void start_delay();
- void correct();
- void mistake();
- byte click_count = 1;
- bool is_delay = false;
- uint32_t delay_start_ms = 0;
- void setup() {
- setColor(BLUE);
- }
- void loop() {
- if (is_delay) {
- if (millis() - delay_start_ms >= DELAY_MS) {
- is_delay = false;
- setColor((click_count == 1) ? BLUE : YELLOW);
- // ignore clicks performed during the delay
- buttonLongPressed();
- buttonSingleClicked();
- buttonDoubleClicked();
- buttonMultiClicked();
- }
- } else {
- if (buttonLongPressed())
- mistake();
- else if (buttonSingleClicked()) {
- if (click_count == 1)
- correct();
- else
- mistake();
- } else if (buttonDoubleClicked()) {
- if (click_count == 2)
- correct();
- else
- mistake();
- } else if (buttonMultiClicked()) {
- if (click_count == buttonClickCount())
- correct();
- else
- mistake();
- }
- }
- }
- void start_delay() {
- delay_start_ms = millis();
- is_delay = true;
- }
- void correct() {
- setColor(GREEN);
- click_count++;
- if (click_count > MAX_CLICKS)
- click_count = 1;
- start_delay();
- }
- void mistake() {
- setColor(RED);
- if (click_count > 1)
- click_count /= 2;
- start_delay();
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement