diff --git a/alarm/alarm.c b/alarm/alarm.c new file mode 100644 index 0000000000000000000000000000000000000000..b5a47f06bff8ec570f14a775ed342224c763079a --- /dev/null +++ b/alarm/alarm.c @@ -0,0 +1,90 @@ +/** + * Copyright (c) 2020 Raspberry Pi (Trading) Ltd. + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#include "pico/stdlib.h" +#include "lib/fonts.h" +#include "lib/st7735.h" + +int main() { + + //TODO: Create uints for the pins you are using + const uint button = 20; + const uint button1 = 21; + const uint button2 = 22; + bool start = false; + + //TODO: Initialise the pins + gpio_init(button); + gpio_init(button1); + gpio_init(button2); + + + //TODO: Set the pins to in/out + gpio_set_dir(button, GPIO_IN); + gpio_set_dir(button1, GPIO_IN); + gpio_set_dir(button2, GPIO_IN); + + + //TODO: Initialise ST7735 + ST7735_Init(); + ST7735_FillScreen(ST7735_BLACK); + + while (true) { + //TODO: Start screen and create variables + char tString[5]; + int timer = 0; + int timerSec = 0; + sprintf(tString, "%2d: %2d", timer, timerSec); + + + while (!start) { + //TODO: Display screen with current time, and set up each of the buttons to add a minute, remove a minute and start the timer + if (!gpio_get(button)) { + timer = timer + 1; + sprintf(tString, "%2d: %2d", timer, timerSec); + } + if (!gpio_get(button1)) { + timer = timer - 1; + sprintf(tString, "%2d: %2d", timer, timerSec); + } + if (!gpio_get(button2)) { + start = true; + } + sprintf(tString, "%2d: %2d", timer, timerSec); + ST7735_WriteString(5, 45, tString, Font_16x26, ST7735_WHITE, ST7735_BLACK); + } + while (start) { + //TODO: Display the countdown timer going down, in minutes and seconds + if (timer == 0 && timerSec == 0) { + start = false; + } + if (timerSec == 0) { + timer--; + timerSec = 59; + } + timerSec--; + sleep_ms(1000); + + ST7735_WriteString(5, 45, tString, Font_16x26, ST7735_WHITE, ST7735_BLACK); + } + while (true) { + //TODO: Display a message to alert the user the timer is done (possibly flashing) which stops when a button is pressed + ST7735_WriteString(5, 45, "DONE", Font_16x26, ST7735_WHITE, ST7735_BLACK); + if (!gpio_get(button)) + { + break; + } + if (!gpio_get(button1)) + { + break; + } + if (!gpio_get(button2)) + { + break; + } + } + } +}