mirror of
https://github.com/firewalkwithm3/Sensor-Watch.git
synced 2024-11-22 11:10:29 +08:00
add beginnings of a uart-controlled prototyping app
This commit is contained in:
parent
ccdf08da87
commit
8d2dc42d7f
10
apps/uart-display/Makefile
Executable file
10
apps/uart-display/Makefile
Executable file
|
@ -0,0 +1,10 @@
|
||||||
|
TOP = ../..
|
||||||
|
include $(TOP)/make.mk
|
||||||
|
|
||||||
|
INCLUDES += \
|
||||||
|
-I./
|
||||||
|
|
||||||
|
SRCS += \
|
||||||
|
./app.c
|
||||||
|
|
||||||
|
include $(TOP)/rules.mk
|
104
apps/uart-display/app.c
Normal file
104
apps/uart-display/app.c
Normal file
|
@ -0,0 +1,104 @@
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <string.h>
|
||||||
|
#include <peripheral_clk_config.h>
|
||||||
|
#include "watch.h"
|
||||||
|
|
||||||
|
/*
|
||||||
|
Beginnings of a program to take UART input and update the screen accordingly.
|
||||||
|
Use alongside a prpgram that communicates with the watch over the UART pins.
|
||||||
|
This CircuitPython script turns the LED red in response to pressing the LIGHT button,
|
||||||
|
and turns it off when the MODE button is pressed:
|
||||||
|
|
||||||
|
```
|
||||||
|
import board
|
||||||
|
import busio
|
||||||
|
|
||||||
|
uart = busio.UART(board.TX, board.RX, baudrate=19200)
|
||||||
|
|
||||||
|
while True:
|
||||||
|
uart.write(b"\x00")
|
||||||
|
data = uart.read(1)
|
||||||
|
|
||||||
|
if data is not None:
|
||||||
|
data_string = ''.join([chr(b) for b in data])
|
||||||
|
print(data_string, end="")
|
||||||
|
if data_string[0] == 'L':
|
||||||
|
uart.write(b"R")
|
||||||
|
elif data_string[0] == 'M':
|
||||||
|
uart.write(b"O")
|
||||||
|
```
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
char button_pressed = 0;
|
||||||
|
|
||||||
|
static void cb_light_pressed(void) {
|
||||||
|
button_pressed = 'L';
|
||||||
|
}
|
||||||
|
|
||||||
|
static void cb_mode_pressed(void) {
|
||||||
|
button_pressed = 'M';
|
||||||
|
}
|
||||||
|
|
||||||
|
static void cb_alarm_pressed(void) {
|
||||||
|
button_pressed = 'A';
|
||||||
|
}
|
||||||
|
|
||||||
|
void app_init(void) {
|
||||||
|
watch_enable_leds();
|
||||||
|
watch_enable_buzzer();
|
||||||
|
|
||||||
|
watch_enable_external_interrupts();
|
||||||
|
watch_register_interrupt_callback(BTN_MODE, cb_mode_pressed, INTERRUPT_TRIGGER_RISING);
|
||||||
|
watch_register_interrupt_callback(BTN_LIGHT, cb_light_pressed, INTERRUPT_TRIGGER_RISING);
|
||||||
|
watch_register_interrupt_callback(BTN_ALARM, cb_alarm_pressed, INTERRUPT_TRIGGER_RISING);
|
||||||
|
|
||||||
|
watch_enable_display();
|
||||||
|
|
||||||
|
watch_enable_uart(A2, A1, 19200);
|
||||||
|
}
|
||||||
|
|
||||||
|
void app_wake_from_backup(void) {
|
||||||
|
}
|
||||||
|
|
||||||
|
void app_setup(void) {
|
||||||
|
}
|
||||||
|
|
||||||
|
void app_prepare_for_standby(void) {
|
||||||
|
}
|
||||||
|
|
||||||
|
void app_wake_from_standby(void) {
|
||||||
|
}
|
||||||
|
|
||||||
|
bool app_loop(void) {
|
||||||
|
char buf[3];
|
||||||
|
|
||||||
|
if (button_pressed) {
|
||||||
|
sprintf(buf, "%c", button_pressed);
|
||||||
|
printf("%s\n", buf);
|
||||||
|
watch_uart_puts(buf);
|
||||||
|
button_pressed = 0;
|
||||||
|
}
|
||||||
|
char char_received = watch_uart_getc();
|
||||||
|
if (char_received) {
|
||||||
|
switch (char_received) {
|
||||||
|
case 'R':
|
||||||
|
watch_set_led_red();
|
||||||
|
break;
|
||||||
|
case 'G':
|
||||||
|
watch_set_led_green();
|
||||||
|
break;
|
||||||
|
case 'Y':
|
||||||
|
watch_set_led_yellow();
|
||||||
|
break;
|
||||||
|
case 'O':
|
||||||
|
watch_set_led_off();
|
||||||
|
break;
|
||||||
|
case 'U':
|
||||||
|
// receive a display update?
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
Loading…
Reference in a new issue