Bluetooth communication for flocking.
Fork of BeautifulMemeProject by
PsiSwarm/psiswarm.h@5:598298aa4900, 2015-10-13 (annotated)
- Committer:
- jah128
- Date:
- Tue Oct 13 11:47:14 2015 +0000
- Revision:
- 5:598298aa4900
- Parent:
- 4:25039ea5eb09
- Child:
- 6:ff3c66f7372b
Added voltage regulator testing code
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
jah128 | 0:8a5497a2e366 | 1 | /* University of York Robotics Laboratory PsiSwarm Library: PsiSwarm Core Header File |
jah128 | 0:8a5497a2e366 | 2 | * |
jah128 | 0:8a5497a2e366 | 3 | * File: psiswarm.h |
jah128 | 0:8a5497a2e366 | 4 | * |
jah128 | 0:8a5497a2e366 | 5 | * (C) Dr James Hilder, Dept. Electronics & Computer Science, University of York |
jah128 | 0:8a5497a2e366 | 6 | * |
jah128 | 0:8a5497a2e366 | 7 | * PsiSwarm Library Version: 0.2 |
jah128 | 0:8a5497a2e366 | 8 | * |
jah128 | 0:8a5497a2e366 | 9 | * September 2015 |
jah128 | 0:8a5497a2e366 | 10 | * |
jah128 | 0:8a5497a2e366 | 11 | */ |
jah128 | 0:8a5497a2e366 | 12 | |
jah128 | 0:8a5497a2e366 | 13 | #ifndef PSISWARM_H |
jah128 | 0:8a5497a2e366 | 14 | #define PSISWARM_H |
jah128 | 0:8a5497a2e366 | 15 | |
jah128 | 0:8a5497a2e366 | 16 | #define SOFTWARE_VERSION_CODE 0.20 |
jah128 | 0:8a5497a2e366 | 17 | |
jah128 | 4:25039ea5eb09 | 18 | #define PIC_ADDRESS 0x30 |
jah128 | 0:8a5497a2e366 | 19 | #define LCD_ADDRESS 0x7C |
jah128 | 0:8a5497a2e366 | 20 | #define LED_IC_ADDRESS 0x42 |
jah128 | 0:8a5497a2e366 | 21 | #define GPIO_IC_ADDRESS 0x40 |
jah128 | 0:8a5497a2e366 | 22 | #define AUX_IC_ADDRESS 0x4E |
jah128 | 0:8a5497a2e366 | 23 | #define ADC1_ADDRESS 0x46 |
jah128 | 0:8a5497a2e366 | 24 | #define ADC2_ADDRESS 0x48 |
jah128 | 0:8a5497a2e366 | 25 | #define EEPROM_ADDRESS 0XA0 |
jah128 | 0:8a5497a2e366 | 26 | #define TEMPERATURE_ADDRESS 0X30 |
jah128 | 0:8a5497a2e366 | 27 | #define BASE_COLOUR_ADDRESS 0X52 |
jah128 | 0:8a5497a2e366 | 28 | #define TOP_COLOUR_ADDRESS 0X72 |
jah128 | 0:8a5497a2e366 | 29 | #define ULTRASONIC_ADDRESS 0XE0 |
jah128 | 0:8a5497a2e366 | 30 | #define COMMAND_MESSAGE_BYTE 0X1D |
jah128 | 0:8a5497a2e366 | 31 | #define ACKNOWLEDGE_MESSAGE_BYTE 0X1E |
jah128 | 0:8a5497a2e366 | 32 | #define RESPONSE_MESSAGE_BYTE 0X1F |
jah128 | 0:8a5497a2e366 | 33 | #define PSI_BYTE 0X1D |
jah128 | 0:8a5497a2e366 | 34 | |
jah128 | 0:8a5497a2e366 | 35 | //Set temperature sensor warnings: 60C critical, 50C high, 0C low |
jah128 | 0:8a5497a2e366 | 36 | #define TEMPERATURE_CRITICAL_HI 0X03 |
jah128 | 0:8a5497a2e366 | 37 | #define TEMPEARTURE_CRITICAL_LO 0XC0 |
jah128 | 0:8a5497a2e366 | 38 | #define TEMPERATURE_HIGH_HI 0X03 |
jah128 | 0:8a5497a2e366 | 39 | #define TEMPEARTURE_HIGH_LO 0X20 |
jah128 | 0:8a5497a2e366 | 40 | #define TEMPERATURE_LOW_HI 0X00 |
jah128 | 0:8a5497a2e366 | 41 | #define TEMPEARTURE_LOW_LO 0X00 |
jah128 | 0:8a5497a2e366 | 42 | |
jah128 | 0:8a5497a2e366 | 43 | #define DEFAULT_IR_PULSE_DELAY 400 |
jah128 | 0:8a5497a2e366 | 44 | #define DEFAULT_BASE_IR_PULSE_DELAY 50 |
jah128 | 0:8a5497a2e366 | 45 | |
jah128 | 0:8a5497a2e366 | 46 | #include <stdio.h> |
jah128 | 0:8a5497a2e366 | 47 | #include <stdarg.h> |
jah128 | 0:8a5497a2e366 | 48 | |
jah128 | 0:8a5497a2e366 | 49 | #include "settings.h" |
jah128 | 0:8a5497a2e366 | 50 | #include "serial.h" |
jah128 | 0:8a5497a2e366 | 51 | #include "mbed.h" |
jah128 | 0:8a5497a2e366 | 52 | #include "display.h" |
jah128 | 0:8a5497a2e366 | 53 | #include "led.h" |
jah128 | 0:8a5497a2e366 | 54 | #include "i2c.h" |
jah128 | 0:8a5497a2e366 | 55 | #include "motors.h" |
jah128 | 0:8a5497a2e366 | 56 | #include "sensors.h" |
jah128 | 0:8a5497a2e366 | 57 | #include "eprom.h" |
jah128 | 0:8a5497a2e366 | 58 | #include "colour.h" |
jah128 | 4:25039ea5eb09 | 59 | #include "pic.h" |
jah128 | 0:8a5497a2e366 | 60 | #include "demo.h" |
jah128 | 0:8a5497a2e366 | 61 | |
jah128 | 0:8a5497a2e366 | 62 | |
jah128 | 0:8a5497a2e366 | 63 | //NB The user needs to have a main.cpp with a main() function and a handle_switch_event(char) function |
jah128 | 0:8a5497a2e366 | 64 | #include "main.h" |
jah128 | 0:8a5497a2e366 | 65 | |
jah128 | 0:8a5497a2e366 | 66 | |
jah128 | 0:8a5497a2e366 | 67 | void init(void); |
jah128 | 0:8a5497a2e366 | 68 | float get_uptime(void); |
jah128 | 0:8a5497a2e366 | 69 | void pause_user_code(float period); |
jah128 | 0:8a5497a2e366 | 70 | void reset_encoders(void); |
jah128 | 0:8a5497a2e366 | 71 | void debug(const char* format, ...) ; |
jah128 | 0:8a5497a2e366 | 72 | |
jah128 | 0:8a5497a2e366 | 73 | void IF_end_pause_user_code(void); |
jah128 | 0:8a5497a2e366 | 74 | void IF_handle_events(void); |
jah128 | 0:8a5497a2e366 | 75 | void IF_update_encoders(void); |
jah128 | 0:8a5497a2e366 | 76 | void IF_update_user_id(void); |
jah128 | 0:8a5497a2e366 | 77 | void IF_update_switch(void); |
jah128 | 0:8a5497a2e366 | 78 | void IF_update_minutes(void); |
jah128 | 0:8a5497a2e366 | 79 | |
jah128 | 0:8a5497a2e366 | 80 | extern char * program_name; |
jah128 | 0:8a5497a2e366 | 81 | extern char * author_name; |
jah128 | 1:f6356cf1cefc | 82 | extern char * version_name; |
jah128 | 0:8a5497a2e366 | 83 | |
jah128 | 0:8a5497a2e366 | 84 | extern Serial pc; |
jah128 | 0:8a5497a2e366 | 85 | extern Serial bt; |
jah128 | 0:8a5497a2e366 | 86 | extern Display display; |
jah128 | 0:8a5497a2e366 | 87 | extern I2C primary_i2c; |
jah128 | 0:8a5497a2e366 | 88 | extern InterruptIn gpio_interrupt; |
jah128 | 0:8a5497a2e366 | 89 | |
jah128 | 0:8a5497a2e366 | 90 | extern AnalogIn vin_current; |
jah128 | 0:8a5497a2e366 | 91 | extern AnalogIn vin_battery; |
jah128 | 0:8a5497a2e366 | 92 | extern AnalogIn vin_dc; |
jah128 | 0:8a5497a2e366 | 93 | |
jah128 | 0:8a5497a2e366 | 94 | extern DigitalOut mbed_led1; |
jah128 | 0:8a5497a2e366 | 95 | extern DigitalOut mbed_led2; |
jah128 | 0:8a5497a2e366 | 96 | extern DigitalOut mbed_led3; |
jah128 | 0:8a5497a2e366 | 97 | extern DigitalOut mbed_led4; |
jah128 | 0:8a5497a2e366 | 98 | extern PwmOut center_led_red; |
jah128 | 0:8a5497a2e366 | 99 | extern PwmOut center_led_green; |
jah128 | 0:8a5497a2e366 | 100 | extern PwmOut motor_left_f; |
jah128 | 0:8a5497a2e366 | 101 | extern PwmOut motor_left_r; |
jah128 | 0:8a5497a2e366 | 102 | extern PwmOut motor_right_f; |
jah128 | 0:8a5497a2e366 | 103 | extern PwmOut motor_right_r; |
jah128 | 0:8a5497a2e366 | 104 | |
jah128 | 0:8a5497a2e366 | 105 | extern int base_colour_sensor_raw_values []; |
jah128 | 0:8a5497a2e366 | 106 | extern int top_colour_sensor_raw_values []; |
jah128 | 0:8a5497a2e366 | 107 | |
jah128 | 0:8a5497a2e366 | 108 | extern char waiting_for_ultrasonic; |
jah128 | 0:8a5497a2e366 | 109 | extern int ultrasonic_distance; |
jah128 | 0:8a5497a2e366 | 110 | extern char ultrasonic_distance_updated; |
jah128 | 0:8a5497a2e366 | 111 | extern Timeout ultrasonic_timeout; |
jah128 | 0:8a5497a2e366 | 112 | extern Ticker ultrasonic_ticker; |
jah128 | 0:8a5497a2e366 | 113 | |
jah128 | 0:8a5497a2e366 | 114 | extern unsigned short background_ir_values []; |
jah128 | 0:8a5497a2e366 | 115 | extern unsigned short illuminated_ir_values []; |
jah128 | 0:8a5497a2e366 | 116 | extern float reflected_ir_distances []; |
jah128 | 0:8a5497a2e366 | 117 | extern char ir_values_stored; |
jah128 | 0:8a5497a2e366 | 118 | |
jah128 | 0:8a5497a2e366 | 119 | extern char firmware_bytes[]; |
jah128 | 0:8a5497a2e366 | 120 | |
jah128 | 5:598298aa4900 | 121 | extern char testing_voltage_regulators_flag; |
jah128 | 5:598298aa4900 | 122 | extern char power_good_motor_left; |
jah128 | 5:598298aa4900 | 123 | extern char power_good_motor_right; |
jah128 | 5:598298aa4900 | 124 | extern char power_good_infrared; |
jah128 | 5:598298aa4900 | 125 | extern char status_dc_in; |
jah128 | 5:598298aa4900 | 126 | extern char status_charging; |
jah128 | 5:598298aa4900 | 127 | |
jah128 | 0:8a5497a2e366 | 128 | extern unsigned short background_base_ir_values []; |
jah128 | 0:8a5497a2e366 | 129 | extern unsigned short illuminated_base_ir_values []; |
jah128 | 0:8a5497a2e366 | 130 | extern char base_ir_values_stored; |
jah128 | 3:cd048f6e544e | 131 | extern float line_position; |
jah128 | 3:cd048f6e544e | 132 | extern char line_found; |
jah128 | 0:8a5497a2e366 | 133 | |
jah128 | 0:8a5497a2e366 | 134 | extern float motor_left_speed; |
jah128 | 0:8a5497a2e366 | 135 | extern float motor_right_speed; |
jah128 | 0:8a5497a2e366 | 136 | extern char motor_left_brake; |
jah128 | 0:8a5497a2e366 | 137 | extern char motor_right_brake; |
jah128 | 0:8a5497a2e366 | 138 | |
jah128 | 0:8a5497a2e366 | 139 | extern float center_led_brightness; |
jah128 | 0:8a5497a2e366 | 140 | extern float backlight_brightness; |
jah128 | 0:8a5497a2e366 | 141 | |
jah128 | 0:8a5497a2e366 | 142 | extern float firmware_version; |
jah128 | 0:8a5497a2e366 | 143 | |
jah128 | 0:8a5497a2e366 | 144 | extern int ir_pulse_delay; |
jah128 | 0:8a5497a2e366 | 145 | extern int base_ir_pulse_delay; |
jah128 | 0:8a5497a2e366 | 146 | |
jah128 | 0:8a5497a2e366 | 147 | extern char robot_id; |
jah128 | 0:8a5497a2e366 | 148 | extern char previous_robot_id; |
jah128 | 0:8a5497a2e366 | 149 | |
jah128 | 0:8a5497a2e366 | 150 | extern char wheel_encoder_byte; |
jah128 | 0:8a5497a2e366 | 151 | extern char previous_wheel_encoder_byte; |
jah128 | 0:8a5497a2e366 | 152 | extern signed int left_encoder; |
jah128 | 0:8a5497a2e366 | 153 | extern signed int right_encoder; |
jah128 | 0:8a5497a2e366 | 154 | |
jah128 | 0:8a5497a2e366 | 155 | extern char switch_byte; |
jah128 | 0:8a5497a2e366 | 156 | extern char previous_switch_byte; |
jah128 | 0:8a5497a2e366 | 157 | |
jah128 | 0:8a5497a2e366 | 158 | extern char user_code_running; |
jah128 | 0:8a5497a2e366 | 159 | extern char user_code_restore_mode; |
jah128 | 0:8a5497a2e366 | 160 | extern char demo_on; |
jah128 | 0:8a5497a2e366 | 161 | extern char event; |
jah128 | 0:8a5497a2e366 | 162 | extern char change_id_event; |
jah128 | 0:8a5497a2e366 | 163 | extern char encoder_event; |
jah128 | 0:8a5497a2e366 | 164 | extern char switch_event; |
jah128 | 0:8a5497a2e366 | 165 | extern char system_warnings; |
jah128 | 0:8a5497a2e366 | 166 | |
jah128 | 0:8a5497a2e366 | 167 | extern char debug_mode; |
jah128 | 0:8a5497a2e366 | 168 | extern char debug_output; |
jah128 | 0:8a5497a2e366 | 169 | #endif |