Program to control the boat manually through offboard computer
Dependencies: mbed Servo FastPWM
main.cpp
- Committer:
- Deanatius
- Date:
- 2019-05-24
- Revision:
- 0:79363e413c3b
File content as of revision 0:79363e413c3b:
#include "mbed.h" #include "Servo.h" Servo motor_servo(PTB1); Servo rudder_servo(PTB0); Serial device(PTE0, PTE1); //Device tx and rx at PTE0 and PTE1 DigitalOut led1(LED1); DigitalOut led2(LED2); //Use LEDS to indicate RF link activity //Use PC terminal to write messages int main() { // Wait for ESC signal motor_servo = 0.0; wait(1); // Arm ESC by sending longest and shortest PWM signal motor_servo = 1.0; wait(1); motor_servo = 0.0; // Centre rudder rudder_servo = 0.5; float speed = 0.0; bool start_flag = false; char command; device.baud(9600); device.printf("Wireless UART connection initialised.\nVehicle in manual control mode.\n"); // Wait for start command device.printf("Press 'r' to start.\n\r"); while (!start_flag) { if (device.readable() != 0) command = device.getc(); if (command == 'r') start_flag = true; } device.printf("Ready to accept commands.\n\r"); while(1) { while (device.readable() != 0) { // w - increase speed // s - decrease speed // a - tilt rudder right // d - tilt rudder left // r - reset to default values command = device.getc(); switch (command){ case 'w': if (speed < 1.0) speed = speed + 0.01; motor_servo = speed; device.printf("Motor speed increased to %f\n\r", speed); break; case 's': if (speed > 0.0) speed = speed - 0.01; motor_servo = speed; device.printf("Motor speed decreased to %f\n\r", speed); break; case 'a': if (rudder_servo > 0.3) rudder_servo = rudder_servo - 0.1; device.printf("Rudder tilted right\n\r"); break; case 'd': if (rudder_servo < 0.8) rudder_servo = rudder_servo + 0.1; device.printf("Rudder tilted left\n\r"); break; case 'r': speed = 0.0; motor_servo = speed; rudder_servo = 0.5; device.printf("Reset motor speed to %f\n\r", speed); break; } } } }