Files
AQS-FW/buttons.cpp

63 lines
1.4 KiB
C++

#include "button.h"
// Mode Button
uint8_t g_current_mode_button_state = 1; // Pin is pulled high by default
uint8_t g_previous_mode_button_state = 1;
uint32_t g_last_debounce_time = 0;
uint32_t g_debounce_delay = 50;
Button buttonCenter(BUTTON_CENTER);
Button buttonLeft(BUTTON_LEFT);
Button buttonRight(BUTTON_RIGHT);
void initButtons(void)
{
Serial.print("initButtons:");
buttonCenter.begin();
buttonLeft.begin();
buttonRight.begin();
pinMode(MODE_BUTTON_PIN, INPUT_PULLUP); // Pin for switching screens button
Serial.println(" OK");
}
void handleButtons(void)
{
//handle buttons
buttonCenter.read();
buttonLeft.read();
buttonRight.read();
if (buttonCenter.wasPressed())
{
backlightRefresh();
}
if (buttonLeft.wasPressed())
{
previousSensor();
backlightRefresh();
}
if (buttonRight.wasPressed())
{
nextSensor();
backlightRefresh();
}
g_current_mode_button_state = digitalRead(MODE_BUTTON_PIN);
// Check if button is now pressed and it was previously unpressed
if (g_current_mode_button_state == LOW && g_previous_mode_button_state == HIGH)
{
// We haven't waited long enough so ignore this press
if (millis() - g_last_debounce_time <= g_debounce_delay)
{
return;
}
Serial.println("Button pressed");
backlightRefresh();
// Increment display state
g_last_debounce_time = millis();
}
}