James Heavey / 3875_Individualproject

Dependents:   3875_DISSERTATION

Committer:
eencae
Date:
Tue Apr 04 08:08:16 2017 +0000
Revision:
0:56320ef879a6
Child:
1:5523d6d1feec
Initial commit of library.; ; Still under development.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
eencae 0:56320ef879a6 1 #ifndef M3PI_H
eencae 0:56320ef879a6 2 #define M3PI_H
eencae 0:56320ef879a6 3
eencae 0:56320ef879a6 4 #include "mbed.h"
eencae 0:56320ef879a6 5
eencae 0:56320ef879a6 6 /** m3pi Class
eencae 0:56320ef879a6 7 @brief Library to control m3pi robot from Polulu running the serial slave code
eencae 0:56320ef879a6 8 @brief Revision 1.0
eencae 0:56320ef879a6 9 @author Craig A. Evans <C.A.Evans@leeds.ac.uk>
eencae 0:56320ef879a6 10 @date April 2017
eencae 0:56320ef879a6 11
eencae 0:56320ef879a6 12 */
eencae 0:56320ef879a6 13 class m3pi
eencae 0:56320ef879a6 14 {
eencae 0:56320ef879a6 15
eencae 0:56320ef879a6 16 public:
eencae 0:56320ef879a6 17
eencae 0:56320ef879a6 18 /** m3pi constructor
eencae 0:56320ef879a6 19 */
eencae 0:56320ef879a6 20 m3pi();
eencae 0:56320ef879a6 21 /** m3pi destructor
eencae 0:56320ef879a6 22 */
eencae 0:56320ef879a6 23 ~m3pi();
eencae 0:56320ef879a6 24
eencae 0:56320ef879a6 25 /** Write value to LEDs
eencae 0:56320ef879a6 26 * @param val - value to display in binary on LEDs (0 to 255)
eencae 0:56320ef879a6 27 */
eencae 0:56320ef879a6 28 void write_leds(int val);
eencae 0:56320ef879a6 29
eencae 0:56320ef879a6 30 /** Initialisation function
eencae 0:56320ef879a6 31 * @details should be called at the start of the program
eencae 0:56320ef879a6 32 */
eencae 0:56320ef879a6 33 void init();
eencae 0:56320ef879a6 34
eencae 0:56320ef879a6 35 /** Get signature of slave firmware
eencae 0:56320ef879a6 36 * @param signature - array of size 7 to store signature
eencae 0:56320ef879a6 37 */
eencae 0:56320ef879a6 38 void get_signature(char *signature);
eencae 0:56320ef879a6 39
eencae 0:56320ef879a6 40 /** Read raw sensor values from IR sensors (0 - 2000)
eencae 0:56320ef879a6 41 * @param values - array of size 5 to store values
eencae 0:56320ef879a6 42 */
eencae 0:56320ef879a6 43 void get_raw_values(unsigned int *values);
eencae 0:56320ef879a6 44
eencae 0:56320ef879a6 45 /** Read calibrated sensor values from IR sensors (0 - 1000)
eencae 0:56320ef879a6 46 * @param values - array of size 5 to store values
eencae 0:56320ef879a6 47 */
eencae 0:56320ef879a6 48 void get_calibrated_values(unsigned int *values);
eencae 0:56320ef879a6 49
eencae 0:56320ef879a6 50 /** Read user potentiometer values
eencae 0:56320ef879a6 51 * @returns float in range 0.0 to 1.0
eencae 0:56320ef879a6 52 */
eencae 0:56320ef879a6 53 float get_trimpot_value();
eencae 0:56320ef879a6 54
eencae 0:56320ef879a6 55 /** Read battery voltage
eencae 0:56320ef879a6 56 * @returns battery voltage in volts
eencae 0:56320ef879a6 57 */
eencae 0:56320ef879a6 58 float get_battery_voltage();
eencae 0:56320ef879a6 59
eencae 0:56320ef879a6 60 /** Play music
eencae 0:56320ef879a6 61 * @param notes - const array containing Pololu notes
eencae 0:56320ef879a6 62 */
eencae 0:56320ef879a6 63 void play_music(const char notes[],int length);
eencae 0:56320ef879a6 64
eencae 0:56320ef879a6 65 void calibrate();
eencae 0:56320ef879a6 66
eencae 0:56320ef879a6 67 void reset_calibration();
eencae 0:56320ef879a6 68
eencae 0:56320ef879a6 69 int get_line_position();
eencae 0:56320ef879a6 70
eencae 0:56320ef879a6 71 float get_normalised_line_position();
eencae 0:56320ef879a6 72
eencae 0:56320ef879a6 73 void lcd_clear();
eencae 0:56320ef879a6 74
eencae 0:56320ef879a6 75 void lcd_print(char text[],int length);
eencae 0:56320ef879a6 76
eencae 0:56320ef879a6 77 void lcd_goto_xy(int x, int y);
eencae 0:56320ef879a6 78
eencae 0:56320ef879a6 79 void auto_calibrate();
eencae 0:56320ef879a6 80
eencae 0:56320ef879a6 81 void left_motor(float speed);
eencae 0:56320ef879a6 82
eencae 0:56320ef879a6 83 void right_motor(float speed);
eencae 0:56320ef879a6 84
eencae 0:56320ef879a6 85 //////
eencae 0:56320ef879a6 86
eencae 0:56320ef879a6 87 void motors(float left_speed,float right_speed);
eencae 0:56320ef879a6 88
eencae 0:56320ef879a6 89 void stop();
eencae 0:56320ef879a6 90
eencae 0:56320ef879a6 91 void forward(float speed);
eencae 0:56320ef879a6 92
eencae 0:56320ef879a6 93 void reverse(float speed);
eencae 0:56320ef879a6 94
eencae 0:56320ef879a6 95 void spin_right(float speed);
eencae 0:56320ef879a6 96
eencae 0:56320ef879a6 97 void spin_left(float speed);
eencae 0:56320ef879a6 98
eencae 0:56320ef879a6 99 int read_button();
eencae 0:56320ef879a6 100
eencae 0:56320ef879a6 101 void display_battery_voltage(int x,int y);
eencae 0:56320ef879a6 102
eencae 0:56320ef879a6 103 void display_signature(int x,int y);
eencae 0:56320ef879a6 104
eencae 0:56320ef879a6 105
eencae 0:56320ef879a6 106 private:
eencae 0:56320ef879a6 107
eencae 0:56320ef879a6 108 Serial* _serial;
eencae 0:56320ef879a6 109 DigitalOut* _reset;
eencae 0:56320ef879a6 110 DigitalIn* _button;
eencae 0:56320ef879a6 111 BusOut* _leds;
eencae 0:56320ef879a6 112
eencae 0:56320ef879a6 113 void reset();
eencae 0:56320ef879a6 114
eencae 0:56320ef879a6 115 };
eencae 0:56320ef879a6 116
eencae 0:56320ef879a6 117
eencae 0:56320ef879a6 118
eencae 0:56320ef879a6 119 #endif