Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependents: 3pi_Example_2 3pi_Lab1_Task2_Example1 3pi_Lab2_Task1_Example1 3pi_Line_Follow ... more
Revision 9:074ce6197b51, committed 2018-03-19
- Comitter:
- eencae
- Date:
- Mon Mar 19 13:06:40 2018 +0000
- Parent:
- 8:92167bd3eb44
- Commit message:
- Added some simple functions to the library that do not require arrays to be passed by reference. Sensor values are stored in the class instead.
Changed in this revision
| m3pi.cpp | Show annotated file Show diff for this revision Revisions of this file |
| m3pi.h | Show annotated file Show diff for this revision Revisions of this file |
--- a/m3pi.cpp Wed Jul 05 14:39:33 2017 +0000
+++ b/m3pi.cpp Mon Mar 19 13:06:40 2018 +0000
@@ -9,10 +9,14 @@
_reset = new DigitalOut(p8);
_last_line_position = 0.0;
+ // initialise the arrays
_bar_graph[0] = ' ';
for (int i = 0; i < 6; i++) {
_bar_graph[i+1] = i;
}
+ for (int i = 0; i < 5; i++) {
+ _values[i]=0;
+ }
}
m3pi::~m3pi()
@@ -34,6 +38,10 @@
/////////////////////////////// serial slave commands ////////////////////////////////
+void m3pi::scan()
+{
+ get_calibrated_values(_values);
+}
void m3pi::get_signature(char *signature)
{
@@ -112,7 +120,6 @@
}
}
-
void m3pi::calibrate()
{
_serial->putc(0xB4);
@@ -302,6 +309,17 @@
}
+void m3pi::display_data()
+{
+ display_sensor_values(_values,1);
+
+ char buffer[8]={0};
+ sprintf(buffer,"% .3f",_last_line_position);
+ lcd_goto_xy(0,0);
+ lcd_print(buffer,6);
+
+}
+
unsigned int m3pi::get_sensor_array_value(unsigned int values[])
{
unsigned int value = 0;
@@ -350,6 +368,11 @@
return _last_line_position;
}
+float m3pi::read_line() {
+ return calc_line_position(_values);
+}
+
+
/////////////////////////////// private methods ////////////////////////////////
void m3pi::reset()
--- a/m3pi.h Wed Jul 05 14:39:33 2017 +0000
+++ b/m3pi.h Mon Mar 19 13:06:40 2018 +0000
@@ -28,6 +28,11 @@
* @details code and start 3pi in serial slave mode
*/
void init();
+
+ /** Causes the robot to read the IR sensors
+ * @details is an alterative to get_*_values methods if you don't need the values themselves
+ */
+ void scan();
/** Get signature of slave firmware
* @param signature - array of size 7 to store signature
@@ -75,6 +80,14 @@
* @details 0.0 for line under sensor 2, 0.5 for line under sensor 3 etc.
*/
float get_line_position();
+
+ /** Returns an estimate of the normalised line position
+ * @returns float in the range -1.0 to 1.0
+ * @details uses the values of sensor stored in the class - must call scan() first!
+ * @details -1.0 for line under sensor 0, -0.5 for line under sensor 1
+ * @details 0.0 for line under sensor 2, 0.5 for line under sensor 3 etc.
+ */
+ float read_line();
/** Clear LCD
*/
@@ -148,6 +161,11 @@
*/
void display_signature(int x,int y);
+ /** Display line position and bar graph of sensor readings on LCD
+ * @details must call scan() and read_line() first
+ */
+ void display_data();
+
/** Display sensor values on LCD
* @param values - array of calibrated sensor values
* @param y - line on LCD to display
@@ -175,6 +193,7 @@
float _last_line_position;
char _bar_graph[7];
+ unsigned int _values[5];
void reset();