tone-generator/buttons.cpp

50 lines
880 B
C++
Raw Normal View History

2024-09-27 22:46:51 +10:00
#include <Arduino.h>
#include "buttons.hpp"
#include "scheduler.hpp"
#include "data.hpp"
#include "tones.hpp"
#include "dac.hpp"
#include "indicator.hpp"
const int PIN_NEXT = 8;
2024-09-29 18:07:58 +10:00
static bool state_next = 1;
static uint32_t addr_next = 0;
2024-09-27 22:46:51 +10:00
void buttons::init() {
pinMode(PIN_NEXT, INPUT_PULLUP);
}
static void on_next() {
switch(scheduler::state) {
case scheduler::State::play:
scheduler::state = scheduler::State::skip;
indicator::reset();
2024-09-29 18:07:58 +10:00
data::jump(addr_next);
2024-09-27 22:46:51 +10:00
tones::clear_all();
dac::reset();
break;
case scheduler::State::pause:
scheduler::state = scheduler::State::play;
break;
}
}
void buttons::update() {
if(!digitalRead(PIN_NEXT) && state_next) {
delay(1);
state_next = 0;
}
else if(digitalRead(PIN_NEXT) && !state_next) {
delay(1);
on_next();
state_next = 1;
}
}
2024-09-29 18:07:58 +10:00
void buttons::set_addr_next(uint32_t addr) {
addr_next = addr;
}