Library for Pololu m3pi line-following robot. Implements the serial slave commands. for MBED OS V6

Revision:
0:56320ef879a6
Child:
1:5523d6d1feec
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/m3pi.h	Tue Apr 04 08:08:16 2017 +0000
@@ -0,0 +1,119 @@
+#ifndef M3PI_H
+#define M3PI_H
+
+#include "mbed.h"
+
+/** m3pi Class
+@brief Library to control m3pi robot from Polulu running the serial slave code
+@brief Revision 1.0
+@author Craig A. Evans <C.A.Evans@leeds.ac.uk> 
+@date   April 2017
+
+*/
+class m3pi
+{
+
+public:
+
+    /** m3pi constructor
+    */
+    m3pi();
+    /** m3pi destructor
+    */
+    ~m3pi();
+
+    /** Write value to LEDs
+    * @param val - value to display in binary on LEDs (0 to 255)
+    */
+    void write_leds(int val);
+
+    /** Initialisation function
+    * @details should be called at the start of the program
+    */
+    void init();
+
+    /** Get signature of slave firmware
+    * @param signature - array of size 7 to store signature
+    */
+    void get_signature(char *signature);
+    
+    /** Read raw sensor values from IR sensors (0 - 2000)
+    * @param values - array of size 5 to store values
+    */
+    void get_raw_values(unsigned int *values);      
+
+    /** Read calibrated sensor values from IR sensors (0 - 1000)
+    * @param values - array of size 5 to store values
+    */
+    void get_calibrated_values(unsigned int *values);
+    
+    /** Read user potentiometer values
+    * @returns float in range  0.0 to 1.0
+    */
+    float get_trimpot_value();
+
+    /** Read battery voltage
+    * @returns battery voltage in volts
+    */
+    float get_battery_voltage();
+    
+    /** Play music
+    * @param notes - const array containing Pololu notes
+    */
+    void play_music(const char notes[],int length);
+    
+    void calibrate();
+
+    void reset_calibration();
+
+    int get_line_position();
+    
+    float get_normalised_line_position();
+
+    void lcd_clear();
+    
+    void lcd_print(char text[],int length);
+    
+    void lcd_goto_xy(int x, int y);
+    
+    void auto_calibrate();
+    
+    void left_motor(float speed);
+    
+    void right_motor(float speed);
+    
+    //////
+    
+    void motors(float left_speed,float right_speed);
+    
+    void stop();
+    
+    void forward(float speed);
+    
+    void reverse(float speed);
+    
+    void spin_right(float speed);
+    
+    void spin_left(float speed);
+    
+    int read_button();
+    
+    void display_battery_voltage(int x,int y);
+    
+    void display_signature(int x,int y);
+
+
+private:
+
+    Serial* _serial;
+    DigitalOut* _reset;
+    DigitalIn* _button;
+    BusOut* _leds;
+
+    void reset();
+
+};
+
+
+
+#endif
\ No newline at end of file