How I want to use my pomodoro
- Press the left button to start the timer
- If it's running, press the left button to pause the timer
- If it's paused, press the left button to resume the timer
- If it's paused, press the right button to stop the timer
- When it's running, the LEDs light up one by one until the time limit
- When it's running and it's a work period, LEDs are red
- When it's running and it's a break period, LEDs are green
- When it's paused, all the LEDs are light up and blue
The code that does this
For this software I am using the Arduino framework. This framework, like any other framework, is a collection of shortcuts that aims to make the programmer's life easier. At the end of the day, the code you write using a framework is compiled into its original language, which is, in this case, C ++.
bool button_left;
bool button_right;
bool is_active = false;
bool is_paused = false;
int counter = 0;
int steps = 10;
int pomo = 30 * 600;
int pomo_work = pomo / 6 * 5;
int pomo_break = pomo / 6 * 1;
void setup() {
CircuitPlayground.begin();
}
void on_second(int counter) {
CircuitPlayground.clearPixels();
if (counter <= pomo_work) {
// work
for (int i = 0; i <= steps; i++) {
if (counter > pomo_work / steps * i) {
CircuitPlayground.setPixelColor(i, 255, 0, 0);
}
}
} else if (counter > pomo_work && counter <= pomo) {
// break
for (int i = 0; i <= steps; i++) {
if (counter - pomo_work > pomo_break / steps * i) {
CircuitPlayground.setPixelColor(i, 0, 255, 0);
}
}
}
}
void bip() {
CircuitPlayground.playTone(200, 10);
}
void loop() {
button_left = CircuitPlayground.leftButton();
button_right = CircuitPlayground.rightButton();
if (counter > pomo) {
CircuitPlayground.clearPixels();
counter = 0;
}
if (button_left) {
CircuitPlayground.clearPixels();
if (!is_active) {
is_active = true;
bip();
} else if (is_active && !is_paused) {
is_paused = true;
bip();
} else if (is_paused) {
is_paused = false;
bip();
}
}
if (button_right) {
if (is_active && is_paused) {
is_active = false;
is_paused = false;
counter = 0;
CircuitPlayground.clearPixels();
bip();
}
}
if (is_active && !is_paused) {
counter = counter + 1;
}
if (is_paused) {
for (int i = 0; i <= steps; i++) {
CircuitPlayground.setPixelColor(i, 0, 0, 55);
}
}
if (counter % 10 == 0) {
on_second(counter);
}
delay(100);
}