81 lines
1.8 KiB
C
81 lines
1.8 KiB
C
#include <stdio.h>
|
|
#include <string.h>
|
|
|
|
#include "pico/stdlib.h"
|
|
#include "hardware/uart.h"
|
|
|
|
#define UART_ID uart0
|
|
#define DATA_BITS 8
|
|
#define STOP_BITS 1
|
|
#define PARITY UART_PARITY_NONE
|
|
|
|
#define UART_TX_PIN 16
|
|
#define UART_RX_PIN 17
|
|
|
|
#define PINA 6
|
|
#define PINB 7
|
|
#define PINC 8
|
|
#define PIND 9
|
|
|
|
|
|
int main() {
|
|
|
|
uart_init(UART_ID, 9600);
|
|
gpio_set_function(UART_TX_PIN, GPIO_FUNC_UART);
|
|
gpio_set_function(UART_RX_PIN, GPIO_FUNC_UART);
|
|
|
|
uart_set_hw_flow(UART_ID, false, false);
|
|
uart_set_format(UART_ID, DATA_BITS, STOP_BITS, PARITY);
|
|
|
|
gpio_init(PINA);
|
|
gpio_init(PINB);
|
|
gpio_init(PINC);
|
|
gpio_init(PIND);
|
|
|
|
gpio_set_dir(PINA, GPIO_OUT);
|
|
gpio_set_dir(PINB, GPIO_OUT);
|
|
gpio_set_dir(PINC, GPIO_OUT);
|
|
gpio_set_dir(PIND, GPIO_OUT);
|
|
|
|
gpio_put(PINA, 1);
|
|
gpio_put(PINB, 1);
|
|
gpio_put(PINC, 1);
|
|
gpio_put(PIND, 1);
|
|
|
|
|
|
char last_char;
|
|
while (true) {
|
|
last_char = uart_getc(UART_ID);
|
|
switch (last_char) {
|
|
case 'a' :
|
|
gpio_put(PINA, 1);
|
|
break;
|
|
case 'b' :
|
|
gpio_put(PINB, 1);
|
|
break;
|
|
case 'c' :
|
|
gpio_put(PINC, 1);
|
|
break;
|
|
case 'd' :
|
|
gpio_put(PIND, 1);
|
|
break;
|
|
case 'A' :
|
|
gpio_put(PINA, 0);
|
|
break;
|
|
case 'B' :
|
|
gpio_put(PINB, 0);
|
|
break;
|
|
case 'C' :
|
|
gpio_put(PINC, 0);
|
|
break;
|
|
case 'D' :
|
|
gpio_put(PIND, 0);
|
|
break;
|
|
case 't' :
|
|
uart_puts(UART_ID, "Not implemented yet \n");
|
|
break;
|
|
default :
|
|
break;
|
|
}
|
|
}
|
|
}
|