From b1beaab2e943ba3ad30de22bcc8259f268e2bdae Mon Sep 17 00:00:00 2001 From: HoodieJeansJordans Date: Thu, 26 May 2022 17:36:48 +0200 Subject: io module done --- robot/io.c | 51 ++++++++++++++++++++++++++++++++++++++++++++++++++- robot/io.h | 56 ++++++++++++++++++++++++++++++++++++++++++++++++++++++-- 2 files changed, 104 insertions(+), 3 deletions(-) diff --git a/robot/io.c b/robot/io.c index 4a85458..5757ffd 100644 --- a/robot/io.c +++ b/robot/io.c @@ -1,3 +1,52 @@ #include "io.h" +#include -void w2_io_main() {} + +w2_io_all global; + +void w2_io_main() { + global.button[0] = get_single_debounced_button_press(BUTTON_A); + global.button[1] = get_single_debounced_button_press(BUTTON_B); + global.button[2] = get_single_debounced_button_press(BUTTON_C); + global.button[3] = get_single_debounced_button_press(TOP_BUTTON); + global.button[4] = get_single_debounced_button_press(BOTTOM_BUTTON); + unsigned int sensor_values[5]; + qtr_read(sensor_values, QTR_EMITTERS_ON); + for(int i = 0; i <5; i++){ + global.qtrSensor[i] = sensor_values[i]; + } + // TODO average voltage over mutiple samples sensor + global.batteryLevel = analog_read(BATTERY_PIN); + global.frontDetection = analog_read(FRONT_SENSOR_PIN); + global.sideDetection = analog_read(SIDE_SENSOR_PIN); + + set_motors(global.motor_left, global.motor_right); + red_led(global.led_red); + green_led(global.led_green); + print_character(global.lcd); +}; + +void w2_io_init(){ + pololu_3pi_init(2000): + + for(counter=0;counter<80;counter++) + { + if(counter < 20 || counter >= 60) + { + global.motor_left=40; + global.motor_right=-40; + } + else + { + global.motor_left=-40; + global.motor_right=40; + } + + calibrate_ + line_sensors(IR_EMITTERS_ON); + + delay_ms(20); + } + global.motor_left=0; + global.motor_right=0; +} \ No newline at end of file diff --git a/robot/io.h b/robot/io.h index 14fe0af..e262fa1 100644 --- a/robot/io.h +++ b/robot/io.h @@ -1,4 +1,56 @@ #pragma once +#include +#include +#include +#define FRONT_SENSOR_PIN 5 +#define SIDE_SENSOR_PIN 7 +#define BATTERY_PIN 6 -/** i/o module main */ -void w2_io_main(); +//inputs + +typedef struct { + bool pressed; +} w2_s_io_push; + +typedef struct { + uint16_t range; + +} w2_s_io_contrast; + +typedef struct { + uint16_t detection; +} w2_s_io_distance; + +//outputs + +typedef struct { + int speed; +} w2_s_io_motor; + +typedef struct { + bool toggle; +} w2_s_io_led; + +typedef struct { + char text[16]; +} w2_s_io_display; +typedef struct { + uint8_t charged; +} w2_s_io_battery; + +//all i/o + +typedef struct { + w2_s_i_push button[5]; + w2_s_i_contrast qtrSensor[5]; + w2_s_i_distance frontDetection; + w2_s_i_distance sideDetection; + w2_s_i_battery batteryLevel; + + + w2_s_o_motor motor_left; + w2_s_o_motor motor_right; + w2_s_o_led led_red; + w2_s_o_led led_green; + w2_s_o_display lcd; +} w2_io_all; -- cgit v1.2.3