Skip to content

Instantly share code, notes, and snippets.

@kkmonster
Created February 26, 2015 18:38
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save kkmonster/c90f8bbaa79e788ba5b7 to your computer and use it in GitHub Desktop.
Save kkmonster/c90f8bbaa79e788ba5b7 to your computer and use it in GitHub Desktop.
uint8_t read_button()
{
static boolean hold;
static boolean button_a_state_prev;
static boolean button_b_state_prev;
static unsigned int button_a_time_prev;
static unsigned int button_b_time_prev;
boolean button_a_state = 1-digitalRead(button_a); //pull up
boolean button_b_state = 1-digitalRead(button_b); //pull up
unsigned long time = millis();
if (button_a_state_prev == 0 && button_a_state == 1)
{
button_a_time_prev = time;
hold = 1 ;
}
if (button_b_state_prev == 0 && button_b_state == 1)
{
button_b_time_prev = time;
hold = 1 ;
}
if (hold == 1)
{
if (button_a_state_prev == 1 && button_a_state == 0)
{
hold = 0;
return 1;
}
if (button_b_state_prev == 1 && button_b_state == 0)
{
hold = 0;
return 2;
}
if ((time - button_a_time_prev > 1000))
{
hold = 0;
return 3;
}
if ((time - button_b_time_prev > 1000))
{
hold = 0;
return 4;
}
if (button_a_time_prev == button_b_time_prev)
{
hold = 0;
return 5;
}
}
button_a_state_prev = button_a_state ;
button_b_state_prev = button_b_state ;
return 0;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment