Zumo com Mbed-Arduino + Bluetooth

Dependencies:   mbed

Committer:
equalizer
Date:
Fri Mar 08 15:01:02 2019 +0000
Revision:
3:112561b84d80
Mbed Arduino serial com + Bluetooth

Who changed what in which revision?

UserRevisionLine numberNew contents of line
equalizer 3:112561b84d80 1 #ifndef ZUMO_H
equalizer 3:112561b84d80 2 #define ZUMO_H
equalizer 3:112561b84d80 3
equalizer 3:112561b84d80 4 #include "mbed.h"
equalizer 3:112561b84d80 5 #include "platform.h"
equalizer 3:112561b84d80 6
equalizer 3:112561b84d80 7 #ifdef MBED_RPC
equalizer 3:112561b84d80 8 #include "rpc.h"
equalizer 3:112561b84d80 9 #endif
equalizer 3:112561b84d80 10
equalizer 3:112561b84d80 11 #define SEND_SIGNATURE 0x81
equalizer 3:112561b84d80 12 #define SEND_RAW_SENSOR_VALUES 0x86
equalizer 3:112561b84d80 13 #define SEND_CALIB_SENSOR_VALUES 0x87
equalizer 3:112561b84d80 14 #define SEND_TRIMPOT 0xB0
equalizer 3:112561b84d80 15 #define SEND_BATTERY_MILLIVOLTS 0xB1
equalizer 3:112561b84d80 16 #define DO_PLAY 0xB3
equalizer 3:112561b84d80 17 #define PI_CALIBRATE 0xB4
equalizer 3:112561b84d80 18 #define DO_CLEAR 0xB7
equalizer 3:112561b84d80 19 #define DO_PRINT 0xB8
equalizer 3:112561b84d80 20 #define DO_LCD_GOTO_XY 0xB9
equalizer 3:112561b84d80 21 #define LINE_SENSORS_RESET_CALIBRATION 0xB5
equalizer 3:112561b84d80 22 #define SEND_LINE_POSITION 0xB6
equalizer 3:112561b84d80 23 #define AUTO_CALIBRATE 0xBA
equalizer 3:112561b84d80 24 #define SET_PID 0xBB
equalizer 3:112561b84d80 25 #define STOP_PID 0xBC
equalizer 3:112561b84d80 26 #define M1_FORWARD 0xC1
equalizer 3:112561b84d80 27 #define M1_BACKWARD 0xC2
equalizer 3:112561b84d80 28 #define M2_FORWARD 0xC5
equalizer 3:112561b84d80 29 #define M2_BACKWARD 0xC6
equalizer 3:112561b84d80 30
equalizer 3:112561b84d80 31 class zumo : public Stream {
equalizer 3:112561b84d80 32
equalizer 3:112561b84d80 33 // Public functions
equalizer 3:112561b84d80 34 public:
equalizer 3:112561b84d80 35
equalizer 3:112561b84d80 36 /** Create the zumo object connected to the default pins
equalizer 3:112561b84d80 37 *
equalizer 3:112561b84d80 38 * @param tx Serial transmit pin. Default is p13
equalizer 3:112561b84d80 39 * @param rx Serial receive pin. Default is p14
equalizer 3:112561b84d80 40 */
equalizer 3:112561b84d80 41 zumo();
equalizer 3:112561b84d80 42
equalizer 3:112561b84d80 43
equalizer 3:112561b84d80 44 /** Create the zumo object connected to specific pins
equalizer 3:112561b84d80 45 *
equalizer 3:112561b84d80 46 */
equalizer 3:112561b84d80 47 zumo(PinName tx, PinName rx);
equalizer 3:112561b84d80 48
equalizer 3:112561b84d80 49
equalizer 3:112561b84d80 50 /** Directly control the speed and direction of the left motor
equalizer 3:112561b84d80 51 *
equalizer 3:112561b84d80 52 * @param speed A normalised number -1.0 - 1.0 represents the full range.
equalizer 3:112561b84d80 53 */
equalizer 3:112561b84d80 54 void left_motor (float speed);
equalizer 3:112561b84d80 55
equalizer 3:112561b84d80 56 /** Directly control the speed and direction of the right motor
equalizer 3:112561b84d80 57 *
equalizer 3:112561b84d80 58 * @param speed A normalised number -1.0 - 1.0 represents the full range.
equalizer 3:112561b84d80 59 */
equalizer 3:112561b84d80 60
equalizer 3:112561b84d80 61
equalizer 3:112561b84d80 62 void right_motor (float speed);
equalizer 3:112561b84d80 63
equalizer 3:112561b84d80 64 /** Drive both motors forward as the same speed
equalizer 3:112561b84d80 65 *
equalizer 3:112561b84d80 66 * @param speed A normalised number 0 - 1.0 represents the full range.
equalizer 3:112561b84d80 67 */
equalizer 3:112561b84d80 68 void forward (float speed);
equalizer 3:112561b84d80 69
equalizer 3:112561b84d80 70 /** Drive both motors backward as the same speed
equalizer 3:112561b84d80 71 *
equalizer 3:112561b84d80 72 * @param speed A normalised number 0 - 1.0 represents the full range.
equalizer 3:112561b84d80 73 */
equalizer 3:112561b84d80 74 void backward (float speed);
equalizer 3:112561b84d80 75
equalizer 3:112561b84d80 76 /** Drive left motor backwards and right motor forwards at the same speed to turn on the spot
equalizer 3:112561b84d80 77 *
equalizer 3:112561b84d80 78 * @param speed A normalised number 0 - 1.0 represents the full range.
equalizer 3:112561b84d80 79 */
equalizer 3:112561b84d80 80 void left (float speed);
equalizer 3:112561b84d80 81
equalizer 3:112561b84d80 82 /** Drive left motor forward and right motor backwards at the same speed to turn on the spot
equalizer 3:112561b84d80 83 * @param speed A normalised number 0 - 1.0 represents the full range.
equalizer 3:112561b84d80 84 */
equalizer 3:112561b84d80 85 void right (float speed);
equalizer 3:112561b84d80 86
equalizer 3:112561b84d80 87 /** Stop both motors
equalizer 3:112561b84d80 88 *
equalizer 3:112561b84d80 89 */
equalizer 3:112561b84d80 90 void stop (void);
equalizer 3:112561b84d80 91
equalizer 3:112561b84d80 92 /** Read the voltage of the potentiometer on the 3pi
equalizer 3:112561b84d80 93 * @returns voltage as a float
equalizer 3:112561b84d80 94 *
equalizer 3:112561b84d80 95 */
equalizer 3:112561b84d80 96 float pot_voltage(void);
equalizer 3:112561b84d80 97
equalizer 3:112561b84d80 98 /** Read the battery voltage on the 3pi
equalizer 3:112561b84d80 99 * @returns battery voltage as a float
equalizer 3:112561b84d80 100 */
equalizer 3:112561b84d80 101 float battery(void);
equalizer 3:112561b84d80 102
equalizer 3:112561b84d80 103 /** Read the position of the detected line
equalizer 3:112561b84d80 104 * @returns position as A normalised number -1.0 - 1.0 represents the full range.
equalizer 3:112561b84d80 105 * -1.0 means line is on the left, or the line has been lost
equalizer 3:112561b84d80 106 * 0.0 means the line is in the middle
equalizer 3:112561b84d80 107 * 1.0 means the line is on the right
equalizer 3:112561b84d80 108 */
equalizer 3:112561b84d80 109 float line_position (void);
equalizer 3:112561b84d80 110 /** lecture capteurs calibres
equalizer 3:112561b84d80 111 * @returns tableau val capteurs de gauche à droite
equalizer 3:112561b84d80 112 * 0 blanc (reflexion max)
equalizer 3:112561b84d80 113 * 1000 noir (pas de reflexion)
equalizer 3:112561b84d80 114 */
equalizer 3:112561b84d80 115 void calibrated_sensors(unsigned short ltab[5]);
equalizer 3:112561b84d80 116
equalizer 3:112561b84d80 117 /** Calibrate the sensors. This turns the robot left then right, looking for a line
equalizer 3:112561b84d80 118 *
equalizer 3:112561b84d80 119 */
equalizer 3:112561b84d80 120 void sensor_auto_calibrate (void);
equalizer 3:112561b84d80 121
equalizer 3:112561b84d80 122 /** Set calibration manually to the current settings.
equalizer 3:112561b84d80 123 *
equalizer 3:112561b84d80 124 */
equalizer 3:112561b84d80 125 void calibrate(void);
equalizer 3:112561b84d80 126
equalizer 3:112561b84d80 127 /** Clear the current calibration settings
equalizer 3:112561b84d80 128 *
equalizer 3:112561b84d80 129 */
equalizer 3:112561b84d80 130 void reset_calibration (void);
equalizer 3:112561b84d80 131
equalizer 3:112561b84d80 132 void PID_start(int max_speed, int a, int b, int c, int d);
equalizer 3:112561b84d80 133
equalizer 3:112561b84d80 134 void PID_stop();
equalizer 3:112561b84d80 135
equalizer 3:112561b84d80 136 /** Write to the 8 LEDs
equalizer 3:112561b84d80 137 *
equalizer 3:112561b84d80 138 * @param leds An 8 bit value to put on the LEDs
equalizer 3:112561b84d80 139 */
equalizer 3:112561b84d80 140 void leds(int val);
equalizer 3:112561b84d80 141
equalizer 3:112561b84d80 142 /** Locate the cursor on the 8x2 LCD
equalizer 3:112561b84d80 143 *
equalizer 3:112561b84d80 144 * @param x The horizontal position, from 0 to 7
equalizer 3:112561b84d80 145 * @param y The vertical position, from 0 to 1
equalizer 3:112561b84d80 146 */
equalizer 3:112561b84d80 147 void locate(int x, int y);
equalizer 3:112561b84d80 148
equalizer 3:112561b84d80 149 /** Clear the LCD
equalizer 3:112561b84d80 150 *
equalizer 3:112561b84d80 151 */
equalizer 3:112561b84d80 152 void cls(void);
equalizer 3:112561b84d80 153
equalizer 3:112561b84d80 154 /** Send a character directly to the 3pi serial interface
equalizer 3:112561b84d80 155 * @param c The character to send to the 3pi
equalizer 3:112561b84d80 156 */
equalizer 3:112561b84d80 157 int putc(int c);
equalizer 3:112561b84d80 158
equalizer 3:112561b84d80 159 /** Receive a character directly to the 3pi serial interface
equalizer 3:112561b84d80 160 * @returns c The character received from the 3pi
equalizer 3:112561b84d80 161 */
equalizer 3:112561b84d80 162 int getc();
equalizer 3:112561b84d80 163
equalizer 3:112561b84d80 164 /** Send a string buffer to the 3pi serial interface
equalizer 3:112561b84d80 165 * @param text A pointer to a char array
equalizer 3:112561b84d80 166 * @param int The character to send to the 3pi
equalizer 3:112561b84d80 167 */
equalizer 3:112561b84d80 168 int print(char* text, int length);
equalizer 3:112561b84d80 169
equalizer 3:112561b84d80 170
equalizer 3:112561b84d80 171 //test récupération valeur
equalizer 3:112561b84d80 172 void sensor_get(void);
equalizer 3:112561b84d80 173
equalizer 3:112561b84d80 174 //test récupération position
equalizer 3:112561b84d80 175 void get_position(char trame_position[]);
equalizer 3:112561b84d80 176
equalizer 3:112561b84d80 177 #ifdef MBED_RPC
equalizer 3:112561b84d80 178 virtual const struct rpc_method *get_rpc_methods();
equalizer 3:112561b84d80 179 #endif
equalizer 3:112561b84d80 180
equalizer 3:112561b84d80 181 private :
equalizer 3:112561b84d80 182
equalizer 3:112561b84d80 183 Serial _ser;
equalizer 3:112561b84d80 184
equalizer 3:112561b84d80 185 void motor (int motor, float speed);
equalizer 3:112561b84d80 186 virtual int _putc(int c);
equalizer 3:112561b84d80 187 virtual int _getc();
equalizer 3:112561b84d80 188
equalizer 3:112561b84d80 189 };
equalizer 3:112561b84d80 190
equalizer 3:112561b84d80 191 #endif