diff options
| -rw-r--r-- | robot/io.c | 51 | ||||
| -rw-r--r-- | robot/io.h | 56 | 
2 files changed, 104 insertions, 3 deletions
| @@ -1,3 +1,52 @@  #include "io.h" +#include <pololu/orangutan.h> -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 @@ -1,4 +1,56 @@  #pragma once +#include <stdlib.h> +#include <stdint.h> +#include <stdbool.h> +#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; |