]> git.friedersdorff.com Git - max/lanthanide_pdu.git/blob - pdu.c
Way simplify logic
[max/lanthanide_pdu.git] / pdu.c
1 #include <stdio.h>
2 #include <string.h>
3
4 #include "pico/stdlib.h"
5 #include "hardware/uart.h"
6
7 #define UART_ID uart0
8 #define DATA_BITS 8
9 #define STOP_BITS 1
10 #define PARITY UART_PARITY_NONE
11
12 #define UART_TX_PIN 16
13 #define UART_RX_PIN 17
14
15 #define PINA 6
16 #define PINB 7
17 #define PINC 8
18 #define PIND 9
19
20
21 int main() {
22
23     uart_init(UART_ID, 9600);
24     gpio_set_function(UART_TX_PIN, GPIO_FUNC_UART);
25     gpio_set_function(UART_RX_PIN, GPIO_FUNC_UART);
26
27     uart_set_hw_flow(UART_ID, false, false);
28     uart_set_format(UART_ID, DATA_BITS, STOP_BITS, PARITY);
29
30     gpio_init(PINA);
31     gpio_init(PINB);
32     gpio_init(PINC);
33     gpio_init(PIND);
34
35     gpio_set_dir(PINA, GPIO_OUT);
36     gpio_set_dir(PINB, GPIO_OUT);
37     gpio_set_dir(PINC, GPIO_OUT);
38     gpio_set_dir(PIND, GPIO_OUT);
39
40     gpio_put(PINA, 1);
41     gpio_put(PINB, 1);
42     gpio_put(PINC, 1);
43     gpio_put(PIND, 1);
44
45
46     char last_char;
47     while (true) {
48         last_char = uart_getc(UART_ID);
49         switch (last_char) {
50             case 'a' :
51                 gpio_put(PINA, 1);
52                 break;
53             case 'b' :
54                 gpio_put(PINB, 1);
55                 break;
56             case 'c' :
57                 gpio_put(PINC, 1);
58                 break;
59             case 'd' :
60                 gpio_put(PIND, 1);
61                 break;
62             case 'A' :
63                 gpio_put(PINA, 0);
64                 break;
65             case 'B' :
66                 gpio_put(PINB, 0);
67                 break;
68             case 'C' :
69                 gpio_put(PINC, 0);
70                 break;
71             case 'D' :
72                 gpio_put(PIND, 0);
73                 break;
74             case 't' :
75                 uart_puts(UART_ID, "Not implemented yet \n");
76                 break;
77             default :
78                 break;
79         }
80     }
81 }