Skip to content
Snippets Groups Projects
Commit f69897f5 authored by jma1g20's avatar jma1g20
Browse files

Upload New File

parent f015bfe2
No related branches found
No related tags found
No related merge requests found
alarm.c 0 → 100644
/**
* 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() {
#ifndef PICO_DEFAULT_LED_PIN
#warning blink example requires a board with a regular LED
#else
//TODO: Create uints for the pins you are using
const uint LED_PIN = PICO_DEFAULT_LED_PIN;
const uint BUTTON_PIN_1 = 20;
const uint BUTTON_PIN_2 = 21;
const uint BUTTON_PIN_3 = 22;
//TODO: Initialise the pins
gpio_init(LED_PIN);
gpio_init(BUTTON_PIN_1);
gpio_init(BUTTON_PIN_2);
gpio_init(BUTTON_PIN_3);
//TODO: Set the pins to in/out
gpio_set_dir(LED_PIN, GPIO_OUT);
gpio_set_dir(BUTTON_PIN_1, GPIO_IN);
gpio_set_dir(BUTTON_PIN_2, GPIO_IN);
gpio_set_dir(BUTTON_PIN_3, GPIO_IN);
//TODO: Initialise ST7735
ST7735_Init();
while (true) {
//TODO: Start screen and create variables
ST7735_FillScreen(ST7735_BLACK);
ST7735_WriteString(5, 20, "HI", Font_16x26, ST7735_WHITE, ST7735_BLACK);
sleep_ms(500);
gpio_put(LED_PIN, 1);
sleep_ms(3000);
gpio_put(LED_PIN, 0);
int minutes = 0;
char minutesString[5];
int seconds = 0;
char secondsString[5];
bool start = false;
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
ST7735_FillScreen(ST7735_BLACK);
sprintf(minutesString, "%d", minutes);
ST7735_WriteString(5, 20, minutesString, Font_16x26, ST7735_WHITE, ST7735_BLACK);
ST7735_WriteString(5, 45, "Min", Font_16x26, ST7735_WHITE, ST7735_BLACK);
ST7735_WriteString(5, 70, "0", Font_16x26, ST7735_WHITE, ST7735_BLACK);
ST7735_WriteString(5, 95, "Sec", Font_16x26, ST7735_WHITE, ST7735_BLACK);
if (!gpio_get(BUTTON_PIN_1)) {
gpio_put(LED_PIN, 1);
minutes = minutes + 1;
sleep_ms(200);
}
else
{
gpio_put(LED_PIN, 0);
}
if (!gpio_get(BUTTON_PIN_2)) {
gpio_put(LED_PIN, 1);
if (minutes != 0) {
minutes = minutes - 1;
}
sleep_ms(200);
}
else
{
gpio_put(LED_PIN, 0);
}
if (!gpio_get(BUTTON_PIN_3))
{
start = true;
break;
}
}
while (start) {
//TODO: Display the countdown timer going down, in minutes and seconds
ST7735_FillScreen(ST7735_BLACK);
sprintf(minutesString, "%d", minutes);
sprintf(secondsString, "%d", seconds);
ST7735_WriteString(5, 20, minutesString, Font_16x26, ST7735_WHITE, ST7735_BLACK);
ST7735_WriteString(5, 45, "Min", Font_16x26, ST7735_WHITE, ST7735_BLACK);
ST7735_WriteString(5, 70, secondsString, Font_16x26, ST7735_WHITE, ST7735_BLACK);
ST7735_WriteString(5, 95, "Sec", Font_16x26, ST7735_WHITE, ST7735_BLACK);
sleep_ms(1000);
if (seconds == 0) {
if (minutes == 0) {
start = false;
break;
}
else {
seconds = 59;
minutes = minutes - 1;
}
}
else {
seconds = seconds - 1;
}
}
while (true) {
//TODO: Display a message to alert the user the timer is done (possibly flashing) which stops when a button is pressed
ST7735_FillScreen(ST7735_BLACK);
ST7735_WriteString(5, 20, "DONE", Font_16x26, ST7735_WHITE, ST7735_BLACK);
ST7735_WriteString(5, 45, "DONE", Font_16x26, ST7735_WHITE, ST7735_BLACK);
ST7735_WriteString(5, 70, "DONE", Font_16x26, ST7735_WHITE, ST7735_BLACK);
ST7735_WriteString(5, 95, "DONE", Font_16x26, ST7735_WHITE, ST7735_BLACK);
sleep_ms(200);
if (gpio_get(BUTTON_PIN_1)) {
break;
}
if (gpio_get(BUTTON_PIN_2)) {
break;
}
if (gpio_get(BUTTON_PIN_3)) {
break;
}
ST7735_FillScreen(ST7735_WHITE);
ST7735_WriteString(5, 20, "DONE", Font_16x26, ST7735_BLACK, ST7735_WHITE);
ST7735_WriteString(5, 45, "DONE", Font_16x26, ST7735_BLACK, ST7735_WHITE);
ST7735_WriteString(5, 70, "DONE", Font_16x26, ST7735_BLACK, ST7735_WHITE);
ST7735_WriteString(5, 95, "DONE", Font_16x26, ST7735_BLACK, ST7735_WHITE);
sleep_ms(200);
}
}
#endif
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment