This project aims at hacking a remote controlled car by replacing the tx/rx and navigation systems. This project implements the pc side.

Dependencies:   mbed-rtos mbed ssWi

For the related information, consult the wiki documentation at:

Import programrover_car

This project aims at hacking a remote controlled car by replacing the tx/rx and navigation systems. This project implements the car side.

Committer:
mariob
Date:
Tue Mar 12 07:39:13 2013 +0000
Revision:
0:1b4c3bbaf102
This project aims at hacking a remote controlled car by replacing the tx/rx and navigation systems. This project implements the pc side.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
mariob 0:1b4c3bbaf102 1 #include "mbed.h"
mariob 0:1b4c3bbaf102 2 #include "rtos.h"
mariob 0:1b4c3bbaf102 3
mariob 0:1b4c3bbaf102 4 #include "xbee.hpp"
mariob 0:1b4c3bbaf102 5 #include "ssWiSocket.hpp"
mariob 0:1b4c3bbaf102 6 #include "joystick.hpp"
mariob 0:1b4c3bbaf102 7
mariob 0:1b4c3bbaf102 8
mariob 0:1b4c3bbaf102 9 #define UPDATING_PERIOD_MS 200
mariob 0:1b4c3bbaf102 10
mariob 0:1b4c3bbaf102 11 #define PORT_MOTOR 20
mariob 0:1b4c3bbaf102 12 #define PORT_SERVO 30
mariob 0:1b4c3bbaf102 13 #define PORT_SERVO_CAMERA_X 40
mariob 0:1b4c3bbaf102 14 #define PORT_SERVO_CAMERA_Y 50
mariob 0:1b4c3bbaf102 15
mariob 0:1b4c3bbaf102 16
mariob 0:1b4c3bbaf102 17 ssWiSocket* socket_motor;
mariob 0:1b4c3bbaf102 18 ssWiSocket* socket_servo;
mariob 0:1b4c3bbaf102 19 ssWiSocket* socket_camera_x;
mariob 0:1b4c3bbaf102 20 ssWiSocket* socket_camera_y;
mariob 0:1b4c3bbaf102 21
mariob 0:1b4c3bbaf102 22 Joystick joystick(p15, p16, p17, p18);
mariob 0:1b4c3bbaf102 23
mariob 0:1b4c3bbaf102 24
mariob 0:1b4c3bbaf102 25 void tuneJoystickChannel (PinName pinLed, int joystickChannel);
mariob 0:1b4c3bbaf102 26 void updateFunction (const void* arg);
mariob 0:1b4c3bbaf102 27
mariob 0:1b4c3bbaf102 28
mariob 0:1b4c3bbaf102 29 int main ()
mariob 0:1b4c3bbaf102 30 {
mariob 0:1b4c3bbaf102 31 //Communication link connection
mariob 0:1b4c3bbaf102 32 XBeeModule xbee(p9, p10, 102, 14);
mariob 0:1b4c3bbaf102 33 xbee.setDstAddress(XBeeBroadcastAddress());
mariob 0:1b4c3bbaf102 34 xbee.init(5, -1);
mariob 0:1b4c3bbaf102 35
mariob 0:1b4c3bbaf102 36 //Socket creation
mariob 0:1b4c3bbaf102 37 socket_motor = ssWiSocket::createSocket(PORT_MOTOR);
mariob 0:1b4c3bbaf102 38 socket_servo = ssWiSocket::createSocket(PORT_SERVO);
mariob 0:1b4c3bbaf102 39 socket_camera_x = ssWiSocket::createSocket(PORT_SERVO_CAMERA_X);
mariob 0:1b4c3bbaf102 40 socket_camera_y = ssWiSocket::createSocket(PORT_SERVO_CAMERA_Y);
mariob 0:1b4c3bbaf102 41 if (socket_motor==NULL || socket_servo==NULL ||
mariob 0:1b4c3bbaf102 42 socket_camera_x==NULL || socket_camera_y==NULL)
mariob 0:1b4c3bbaf102 43 printf("Error: socket error\n\r");
mariob 0:1b4c3bbaf102 44
mariob 0:1b4c3bbaf102 45 //Joystick centering
mariob 0:1b4c3bbaf102 46 joystick.tuneCentring(20, JOYSTICK_SX_X);
mariob 0:1b4c3bbaf102 47 joystick.tuneCentring(20, JOYSTICK_SX_Y);
mariob 0:1b4c3bbaf102 48 joystick.tuneCentring(20, JOYSTICK_DX_X);
mariob 0:1b4c3bbaf102 49 joystick.tuneCentring(20, JOYSTICK_DX_Y);
mariob 0:1b4c3bbaf102 50
mariob 0:1b4c3bbaf102 51 //Joystick tuning
mariob 0:1b4c3bbaf102 52 {
mariob 0:1b4c3bbaf102 53 //tuneJoystickChannel(LED1, JOYSTICK_SX_X);
mariob 0:1b4c3bbaf102 54 DigitalOut led1(LED1);
mariob 0:1b4c3bbaf102 55 led1 = 1;
mariob 0:1b4c3bbaf102 56 joystick.tuneChannel(100, JOYSTICK_SX_X);
mariob 0:1b4c3bbaf102 57 led1 = 0;
mariob 0:1b4c3bbaf102 58 }
mariob 0:1b4c3bbaf102 59 {
mariob 0:1b4c3bbaf102 60 //tuneJoystickChannel(LED2, JOYSTICK_SX_Y);
mariob 0:1b4c3bbaf102 61 DigitalOut led2(LED2);
mariob 0:1b4c3bbaf102 62 led2 = 1;
mariob 0:1b4c3bbaf102 63 joystick.tuneChannel(100, JOYSTICK_SX_Y);
mariob 0:1b4c3bbaf102 64 led2 = 0;
mariob 0:1b4c3bbaf102 65 }
mariob 0:1b4c3bbaf102 66 {
mariob 0:1b4c3bbaf102 67 //tuneJoystickChannel(LED3, JOYSTICK_DX_X);
mariob 0:1b4c3bbaf102 68 DigitalOut led3(LED3);
mariob 0:1b4c3bbaf102 69 led3 = 1;
mariob 0:1b4c3bbaf102 70 joystick.tuneChannel(100, JOYSTICK_DX_X);
mariob 0:1b4c3bbaf102 71 led3 = 0;
mariob 0:1b4c3bbaf102 72 }
mariob 0:1b4c3bbaf102 73 {
mariob 0:1b4c3bbaf102 74 //tuneJoystickChannel(LED4, JOYSTICK_DX_Y);
mariob 0:1b4c3bbaf102 75 DigitalOut led4(LED4);
mariob 0:1b4c3bbaf102 76 led4 = 1;
mariob 0:1b4c3bbaf102 77 joystick.tuneChannel(100, JOYSTICK_DX_Y);
mariob 0:1b4c3bbaf102 78 led4 = 0;
mariob 0:1b4c3bbaf102 79 }
mariob 0:1b4c3bbaf102 80 //Timer setting
mariob 0:1b4c3bbaf102 81 RtosTimer timer (updateFunction, osTimerPeriodic, NULL);
mariob 0:1b4c3bbaf102 82 timer.start(200);
mariob 0:1b4c3bbaf102 83
mariob 0:1b4c3bbaf102 84 //Infinite wait
mariob 0:1b4c3bbaf102 85 Thread::wait(osWaitForever);
mariob 0:1b4c3bbaf102 86 }
mariob 0:1b4c3bbaf102 87
mariob 0:1b4c3bbaf102 88
mariob 0:1b4c3bbaf102 89 void updateFunction (const void* arg)
mariob 0:1b4c3bbaf102 90 {
mariob 0:1b4c3bbaf102 91 // while(1) {
mariob 0:1b4c3bbaf102 92 joystick.update();
mariob 0:1b4c3bbaf102 93 socket_motor->write(-joystick.read(JOYSTICK_SX_Y)*1000.0);
mariob 0:1b4c3bbaf102 94 socket_servo->write(joystick.read(JOYSTICK_SX_X)*1000.0);
mariob 0:1b4c3bbaf102 95 socket_camera_x->write(joystick.read(JOYSTICK_DX_X)*1000.0);
mariob 0:1b4c3bbaf102 96 socket_camera_y->write(joystick.read(JOYSTICK_DX_Y)*1000.0);
mariob 0:1b4c3bbaf102 97 // printf("%f %f %f %f\n\r", joystick.read(JOYSTICK_SX_X), joystick.read(JOYSTICK_SX_Y), joystick.read(JOYSTICK_DX_X), joystick.read(JOYSTICK_DX_Y));
mariob 0:1b4c3bbaf102 98 // Thread::wait(UPDATING_PERIOD_MS);
mariob 0:1b4c3bbaf102 99 // }
mariob 0:1b4c3bbaf102 100 }
mariob 0:1b4c3bbaf102 101
mariob 0:1b4c3bbaf102 102
mariob 0:1b4c3bbaf102 103 void tuneJoystickChannel (PinName pinLed, int joystickChannel)
mariob 0:1b4c3bbaf102 104 {
mariob 0:1b4c3bbaf102 105 DigitalOut led(pinLed);
mariob 0:1b4c3bbaf102 106 led = 1;
mariob 0:1b4c3bbaf102 107 joystick.tuneChannel(100, joystickChannel);
mariob 0:1b4c3bbaf102 108 led = 0;
mariob 0:1b4c3bbaf102 109 }