First release.

Dependencies:   FXOS8700CQ SDFileSystem mbed

Final program

  • Controling a robot by Bluetooth, it is capable of making 90° turns and move pre-defined distances.

Code by:

  • Mayumi Hori
  • Sarahí Morán
  • Gerardo Carmona
Committer:
gerardo_carmona
Date:
Thu Oct 16 15:48:57 2014 +0000
Revision:
1:ab09b233da7b
Parent:
0:3a322aad8c88
Child:
2:94059cb643be
v1.1

Who changed what in which revision?

UserRevisionLine numberNew contents of line
gerardo_carmona 0:3a322aad8c88 1 /* ==================================================================================
gerardo_carmona 0:3a322aad8c88 2 --- TEST 1 ---
gerardo_carmona 0:3a322aad8c88 3 OBJETIVE:
gerardo_carmona 0:3a322aad8c88 4 Move the motor via bluetooth and program 90° turns to the right and left using
gerardo_carmona 0:3a322aad8c88 5 the magnometer. It will report data from the encoders and limit the movement by
gerardo_carmona 0:3a322aad8c88 6 the ultrasonic sensors
gerardo_carmona 0:3a322aad8c88 7
gerardo_carmona 0:3a322aad8c88 8 COMPONENTS:
gerardo_carmona 0:3a322aad8c88 9 * Bluetooth
gerardo_carmona 0:3a322aad8c88 10 * Magnometer (FXOS8700CQ & magnometer.h)
gerardo_carmona 0:3a322aad8c88 11 * Motors (motors.h)
gerardo_carmona 0:3a322aad8c88 12 * Encoder
gerardo_carmona 0:3a322aad8c88 13 * Ultrasonics
gerardo_carmona 0:3a322aad8c88 14
gerardo_carmona 0:3a322aad8c88 15 CONTROLS:
gerardo_carmona 0:3a322aad8c88 16 w: foward
gerardo_carmona 0:3a322aad8c88 17 s: reverse
gerardo_carmona 0:3a322aad8c88 18 a: left turn
gerardo_carmona 0:3a322aad8c88 19 d: right turn
gerardo_carmona 0:3a322aad8c88 20 o: 90° left turn
gerardo_carmona 0:3a322aad8c88 21 p: 90° right turn
gerardo_carmona 0:3a322aad8c88 22
gerardo_carmona 0:3a322aad8c88 23 Credits:
gerardo_carmona 0:3a322aad8c88 24 * Mayumi Haro
gerardo_carmona 0:3a322aad8c88 25 * Sarahí Morán
gerardo_carmona 0:3a322aad8c88 26 * Gerardo Carmona
gerardo_carmona 0:3a322aad8c88 27
gerardo_carmona 0:3a322aad8c88 28 VERSION:
gerardo_carmona 1:ab09b233da7b 29 1.1 - 10/16/14
gerardo_carmona 0:3a322aad8c88 30
gerardo_carmona 0:3a322aad8c88 31 HISTORY:
gerardo_carmona 1:ab09b233da7b 32 1.1 - 10/16/14
gerardo_carmona 1:ab09b233da7b 33 (*) Some bug fixes
gerardo_carmona 1:ab09b233da7b 34 (*) Added encoder.h and encpoder.cpp (empty files)
gerardo_carmona 1:ab09b233da7b 35
gerardo_carmona 0:3a322aad8c88 36 1.0 - 10/14/14
gerardo_carmona 0:3a322aad8c88 37 (+) Initial release.
gerardo_carmona 0:3a322aad8c88 38
gerardo_carmona 0:3a322aad8c88 39
gerardo_carmona 0:3a322aad8c88 40 ================================================================================== */
gerardo_carmona 0:3a322aad8c88 41
gerardo_carmona 0:3a322aad8c88 42 // ----- Libraries ------------------------------------------------------------------
gerardo_carmona 0:3a322aad8c88 43 #include "mbed.h"
gerardo_carmona 0:3a322aad8c88 44 #include "motors.h"
gerardo_carmona 0:3a322aad8c88 45 #include "magnometer.h"
gerardo_carmona 0:3a322aad8c88 46
gerardo_carmona 0:3a322aad8c88 47 // ----- Constants ------------------------------------------------------------------
gerardo_carmona 0:3a322aad8c88 48 #define LED_ERROR 6
gerardo_carmona 0:3a322aad8c88 49 #define LED_NORMAL 5
gerardo_carmona 0:3a322aad8c88 50 #define LED_BUSY 3
gerardo_carmona 0:3a322aad8c88 51 #define BT_TIME 100
gerardo_carmona 0:3a322aad8c88 52
gerardo_carmona 0:3a322aad8c88 53 // ----- I/O Pins -------------------------------------------------------------------
gerardo_carmona 0:3a322aad8c88 54 Serial pc(USBTX, USBRX);
gerardo_carmona 0:3a322aad8c88 55 Serial bt(PTC15, PTC14);
gerardo_carmona 0:3a322aad8c88 56 //FXOS8700CQ fxos(PTE25, PTE24, FXOS8700CQ_SLAVE_ADDR1); // SDA, SCL, (addr << 1)
gerardo_carmona 0:3a322aad8c88 57 // Leds for status
gerardo_carmona 0:3a322aad8c88 58 BusOut leds(LED_RED, LED_GREEN, LED_BLUE);
gerardo_carmona 0:3a322aad8c88 59
gerardo_carmona 0:3a322aad8c88 60 // Sensors
gerardo_carmona 0:3a322aad8c88 61 //AnalogIn current_left(A0);
gerardo_carmona 0:3a322aad8c88 62 //AnalogIn current_left(A1);
gerardo_carmona 0:3a322aad8c88 63 AnalogIn ultra_left(A2);
gerardo_carmona 0:3a322aad8c88 64 AnalogIn ultra_right(A3);
gerardo_carmona 0:3a322aad8c88 65 DigitalIn encoder_left(D3);
gerardo_carmona 0:3a322aad8c88 66 DigitalIn encoder_right(D4);
gerardo_carmona 0:3a322aad8c88 67
gerardo_carmona 0:3a322aad8c88 68 // ----- Others ---------------------------------------------------------------------
gerardo_carmona 0:3a322aad8c88 69 //SRAWDATA accel_data;
gerardo_carmona 0:3a322aad8c88 70 //SRAWDATA magn_data;
gerardo_carmona 0:3a322aad8c88 71 Timer bt_timer;
gerardo_carmona 0:3a322aad8c88 72 Timer gps_timer;
gerardo_carmona 0:3a322aad8c88 73
gerardo_carmona 0:3a322aad8c88 74 // ----- Variables ------------------------------------------------------------------
gerardo_carmona 0:3a322aad8c88 75 char bt_data;
gerardo_carmona 0:3a322aad8c88 76
gerardo_carmona 0:3a322aad8c88 77 // ----- Function prototypes --------------------------------------------------------
gerardo_carmona 0:3a322aad8c88 78 //double get_mag_x();
gerardo_carmona 0:3a322aad8c88 79 //double get_mag_y();
gerardo_carmona 0:3a322aad8c88 80 //double get_mag_angle(); // Read angle from the compass
gerardo_carmona 0:3a322aad8c88 81 char read_bt();
gerardo_carmona 0:3a322aad8c88 82
gerardo_carmona 0:3a322aad8c88 83 // ----- Main program ---------------------------------------------------------------
gerardo_carmona 0:3a322aad8c88 84 int main(){
gerardo_carmona 0:3a322aad8c88 85 bt.baud(9600);
gerardo_carmona 0:3a322aad8c88 86 pc.baud(9600);
gerardo_carmona 0:3a322aad8c88 87 //fxos.enable();
gerardo_carmona 0:3a322aad8c88 88 leds = LED_NORMAL;
gerardo_carmona 0:3a322aad8c88 89 bt_timer.start();
gerardo_carmona 0:3a322aad8c88 90
gerardo_carmona 0:3a322aad8c88 91 while (true){
gerardo_carmona 0:3a322aad8c88 92 if (bt_timer.read_ms() >= BT_TIME){
gerardo_carmona 0:3a322aad8c88 93 bt_data = read_bt();
gerardo_carmona 0:3a322aad8c88 94 if (bt_data != ' '){
gerardo_carmona 0:3a322aad8c88 95 move_motors(bt_data, 100, 100);
gerardo_carmona 0:3a322aad8c88 96 }
gerardo_carmona 0:3a322aad8c88 97 }
gerardo_carmona 0:3a322aad8c88 98 }
gerardo_carmona 0:3a322aad8c88 99 }
gerardo_carmona 0:3a322aad8c88 100
gerardo_carmona 0:3a322aad8c88 101 // ----- Functions ------------------------------------------------------------------
gerardo_carmona 0:3a322aad8c88 102
gerardo_carmona 0:3a322aad8c88 103 char read_bt(){
gerardo_carmona 0:3a322aad8c88 104 char c = ' ';
gerardo_carmona 0:3a322aad8c88 105 if (bt.readable()){
gerardo_carmona 0:3a322aad8c88 106 c = bt.getc();
gerardo_carmona 0:3a322aad8c88 107 bt.printf("%c\n\r", c);
gerardo_carmona 0:3a322aad8c88 108 }
gerardo_carmona 0:3a322aad8c88 109 return c;
gerardo_carmona 0:3a322aad8c88 110 }