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.
main.cpp
- Committer:
- mariob
- Date:
- 2013-03-12
- Revision:
- 0:1b4c3bbaf102
File content as of revision 0:1b4c3bbaf102:
#include "mbed.h"
#include "rtos.h"
#include "xbee.hpp"
#include "ssWiSocket.hpp"
#include "joystick.hpp"
#define UPDATING_PERIOD_MS 200
#define PORT_MOTOR 20
#define PORT_SERVO 30
#define PORT_SERVO_CAMERA_X 40
#define PORT_SERVO_CAMERA_Y 50
ssWiSocket* socket_motor;
ssWiSocket* socket_servo;
ssWiSocket* socket_camera_x;
ssWiSocket* socket_camera_y;
Joystick joystick(p15, p16, p17, p18);
void tuneJoystickChannel (PinName pinLed, int joystickChannel);
void updateFunction (const void* arg);
int main ()
{
//Communication link connection
XBeeModule xbee(p9, p10, 102, 14);
xbee.setDstAddress(XBeeBroadcastAddress());
xbee.init(5, -1);
//Socket creation
socket_motor = ssWiSocket::createSocket(PORT_MOTOR);
socket_servo = ssWiSocket::createSocket(PORT_SERVO);
socket_camera_x = ssWiSocket::createSocket(PORT_SERVO_CAMERA_X);
socket_camera_y = ssWiSocket::createSocket(PORT_SERVO_CAMERA_Y);
if (socket_motor==NULL || socket_servo==NULL ||
socket_camera_x==NULL || socket_camera_y==NULL)
printf("Error: socket error\n\r");
//Joystick centering
joystick.tuneCentring(20, JOYSTICK_SX_X);
joystick.tuneCentring(20, JOYSTICK_SX_Y);
joystick.tuneCentring(20, JOYSTICK_DX_X);
joystick.tuneCentring(20, JOYSTICK_DX_Y);
//Joystick tuning
{
//tuneJoystickChannel(LED1, JOYSTICK_SX_X);
DigitalOut led1(LED1);
led1 = 1;
joystick.tuneChannel(100, JOYSTICK_SX_X);
led1 = 0;
}
{
//tuneJoystickChannel(LED2, JOYSTICK_SX_Y);
DigitalOut led2(LED2);
led2 = 1;
joystick.tuneChannel(100, JOYSTICK_SX_Y);
led2 = 0;
}
{
//tuneJoystickChannel(LED3, JOYSTICK_DX_X);
DigitalOut led3(LED3);
led3 = 1;
joystick.tuneChannel(100, JOYSTICK_DX_X);
led3 = 0;
}
{
//tuneJoystickChannel(LED4, JOYSTICK_DX_Y);
DigitalOut led4(LED4);
led4 = 1;
joystick.tuneChannel(100, JOYSTICK_DX_Y);
led4 = 0;
}
//Timer setting
RtosTimer timer (updateFunction, osTimerPeriodic, NULL);
timer.start(200);
//Infinite wait
Thread::wait(osWaitForever);
}
void updateFunction (const void* arg)
{
// while(1) {
joystick.update();
socket_motor->write(-joystick.read(JOYSTICK_SX_Y)*1000.0);
socket_servo->write(joystick.read(JOYSTICK_SX_X)*1000.0);
socket_camera_x->write(joystick.read(JOYSTICK_DX_X)*1000.0);
socket_camera_y->write(joystick.read(JOYSTICK_DX_Y)*1000.0);
// 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));
// Thread::wait(UPDATING_PERIOD_MS);
// }
}
void tuneJoystickChannel (PinName pinLed, int joystickChannel)
{
DigitalOut led(pinLed);
led = 1;
joystick.tuneChannel(100, joystickChannel);
led = 0;
}
Mario Bambagini
