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 01:59:21 2014 +0000
Revision:
0:3a322aad8c88
Child:
1:ab09b233da7b
First release.

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 0:3a322aad8c88 29 1.0 - 10/14/14
gerardo_carmona 0:3a322aad8c88 30
gerardo_carmona 0:3a322aad8c88 31 HISTORY:
gerardo_carmona 0:3a322aad8c88 32 1.0 - 10/14/14
gerardo_carmona 0:3a322aad8c88 33 (+) Initial release.
gerardo_carmona 0:3a322aad8c88 34
gerardo_carmona 0:3a322aad8c88 35
gerardo_carmona 0:3a322aad8c88 36 ================================================================================== */
gerardo_carmona 0:3a322aad8c88 37
gerardo_carmona 0:3a322aad8c88 38 // ----- Libraries ------------------------------------------------------------------
gerardo_carmona 0:3a322aad8c88 39 #include "mbed.h"
gerardo_carmona 0:3a322aad8c88 40 #include "motors.h"
gerardo_carmona 0:3a322aad8c88 41 #include "magnometer.h"
gerardo_carmona 0:3a322aad8c88 42
gerardo_carmona 0:3a322aad8c88 43 // ----- Constants ------------------------------------------------------------------
gerardo_carmona 0:3a322aad8c88 44 #define LED_ERROR 6
gerardo_carmona 0:3a322aad8c88 45 #define LED_NORMAL 5
gerardo_carmona 0:3a322aad8c88 46 #define LED_BUSY 3
gerardo_carmona 0:3a322aad8c88 47 #define BT_TIME 100
gerardo_carmona 0:3a322aad8c88 48
gerardo_carmona 0:3a322aad8c88 49 // ----- I/O Pins -------------------------------------------------------------------
gerardo_carmona 0:3a322aad8c88 50 Serial pc(USBTX, USBRX);
gerardo_carmona 0:3a322aad8c88 51 Serial bt(PTC15, PTC14);
gerardo_carmona 0:3a322aad8c88 52 //FXOS8700CQ fxos(PTE25, PTE24, FXOS8700CQ_SLAVE_ADDR1); // SDA, SCL, (addr << 1)
gerardo_carmona 0:3a322aad8c88 53 // Leds for status
gerardo_carmona 0:3a322aad8c88 54 BusOut leds(LED_RED, LED_GREEN, LED_BLUE);
gerardo_carmona 0:3a322aad8c88 55
gerardo_carmona 0:3a322aad8c88 56 // Sensors
gerardo_carmona 0:3a322aad8c88 57 //AnalogIn current_left(A0);
gerardo_carmona 0:3a322aad8c88 58 //AnalogIn current_left(A1);
gerardo_carmona 0:3a322aad8c88 59 AnalogIn ultra_left(A2);
gerardo_carmona 0:3a322aad8c88 60 AnalogIn ultra_right(A3);
gerardo_carmona 0:3a322aad8c88 61 DigitalIn encoder_left(D3);
gerardo_carmona 0:3a322aad8c88 62 DigitalIn encoder_right(D4);
gerardo_carmona 0:3a322aad8c88 63
gerardo_carmona 0:3a322aad8c88 64 // ----- Others ---------------------------------------------------------------------
gerardo_carmona 0:3a322aad8c88 65 //SRAWDATA accel_data;
gerardo_carmona 0:3a322aad8c88 66 //SRAWDATA magn_data;
gerardo_carmona 0:3a322aad8c88 67 Timer bt_timer;
gerardo_carmona 0:3a322aad8c88 68 Timer gps_timer;
gerardo_carmona 0:3a322aad8c88 69
gerardo_carmona 0:3a322aad8c88 70 // ----- Variables ------------------------------------------------------------------
gerardo_carmona 0:3a322aad8c88 71 double mag_x, mag_y;
gerardo_carmona 0:3a322aad8c88 72 double average;
gerardo_carmona 0:3a322aad8c88 73 char bt_data;
gerardo_carmona 0:3a322aad8c88 74
gerardo_carmona 0:3a322aad8c88 75 // ----- Function prototypes --------------------------------------------------------
gerardo_carmona 0:3a322aad8c88 76 //double get_mag_x();
gerardo_carmona 0:3a322aad8c88 77 //double get_mag_y();
gerardo_carmona 0:3a322aad8c88 78 //double get_mag_angle(); // Read angle from the compass
gerardo_carmona 0:3a322aad8c88 79 char read_bt();
gerardo_carmona 0:3a322aad8c88 80
gerardo_carmona 0:3a322aad8c88 81 // ----- Main program ---------------------------------------------------------------
gerardo_carmona 0:3a322aad8c88 82 int main(){
gerardo_carmona 0:3a322aad8c88 83 bt.baud(9600);
gerardo_carmona 0:3a322aad8c88 84 pc.baud(9600);
gerardo_carmona 0:3a322aad8c88 85 //fxos.enable();
gerardo_carmona 0:3a322aad8c88 86 leds = LED_NORMAL;
gerardo_carmona 0:3a322aad8c88 87 bt_timer.start();
gerardo_carmona 0:3a322aad8c88 88
gerardo_carmona 0:3a322aad8c88 89 while (true){
gerardo_carmona 0:3a322aad8c88 90 if (bt_timer.read_ms() >= BT_TIME){
gerardo_carmona 0:3a322aad8c88 91 bt_data = read_bt();
gerardo_carmona 0:3a322aad8c88 92 if (bt_data != ' '){
gerardo_carmona 0:3a322aad8c88 93 move_motors(bt_data, 100, 100);
gerardo_carmona 0:3a322aad8c88 94 }
gerardo_carmona 0:3a322aad8c88 95 }
gerardo_carmona 0:3a322aad8c88 96 }
gerardo_carmona 0:3a322aad8c88 97 }
gerardo_carmona 0:3a322aad8c88 98
gerardo_carmona 0:3a322aad8c88 99 // ----- Functions ------------------------------------------------------------------
gerardo_carmona 0:3a322aad8c88 100
gerardo_carmona 0:3a322aad8c88 101 char read_bt(){
gerardo_carmona 0:3a322aad8c88 102 char c = ' ';
gerardo_carmona 0:3a322aad8c88 103 if (bt.readable()){
gerardo_carmona 0:3a322aad8c88 104 c = bt.getc();
gerardo_carmona 0:3a322aad8c88 105 bt.printf("%c\n\r", c);
gerardo_carmona 0:3a322aad8c88 106 }
gerardo_carmona 0:3a322aad8c88 107 return c;
gerardo_carmona 0:3a322aad8c88 108 }