Beat and Timer
beat and timers are structures that allow for the creation of reoccuring periodic, time-based events.
Beat
void beat_event(uint8_t beat_id, uint16_t beat_counter)
void init(const uint8_t beat_id)
void set_bpm(const float beats_per_minute)
void pause()
void start()
void resume()
bool is_running()
void reset()
void set_callback(const Callback_2_UI8_UI16& callback)
beat_event
:: beat event callback invoked on every beat event.set_callback
:: set custom callback to a function with the signaturevoid my_beat_callback_fucntion(const uint8_t beat_id, const uint16_t beat_counter)
.
Timer
void timer_event(Timer* timer)
Timer* timer_create(uint8_t timer_id)
void timer_delete(Timer* timer)
void timer_resume(Timer* timer)
void timer_pause(Timer* timer)
void timer_set_overflow(Timer* timer, uint32_t duration_us)
timer_event
:: beat event callback invoked on every beat event.timer_create
:: creates a timer.timer_id
must align with available hardware timer.
Example BeatAndTimer
/**
* this example demonstrates how to use beat and timer.
*/
#include "Arduino.h"
#include "System.h"
#include "Console.h"
#include "Beat.h"
#include "Timer.h"
uint8_t counter = 0;
Beat beat_timer;
Timer* timer;
void setup() {
system_init();
timer = timer_create(13);
timer_resume(timer);
timer_set_overflow(timer, 1000000 / 10);
beat_timer.init(7);
beat_timer.set_bpm(60);
beat_timer.start();
}
void loop() {
counter++;
if (counter == 16) {
beat_timer.pause();
console_println("pausing beat");
}
if (counter == 32) {
beat_timer.resume();
counter = 0;
console_println("resuming beat");
}
console_println("%02i loop", counter);
delay(500);
}
void beat_event(const uint8_t beat_id, const uint16_t beat_counter) {
console_println("beat: ID %i, counter %03i", beat_id, beat_counter);
}
void timer_event(Timer* timer) {
console_println("timer: ID %i", timer->timer_id);
}