tone-generator/buttons.cpp

46 lines
785 B
C++

#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;
static uint32_t addr_next = 0;
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();
data::jump(addr_next);
tones::clear_all();
dac::reset();
break;
case scheduler::State::pause:
scheduler::state = scheduler::State::play;
break;
}
}
void buttons::update() {
if(!digitalRead(PIN_NEXT)) {
delay(1);
while(!digitalRead(PIN_NEXT)) {}
delay(1);
on_next();
}
}
void buttons::set_addr_next(uint32_t addr) {
addr_next = addr;
}