Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: wheelchaircontrol1-6
main.cpp
- Committer:
- ryanlin97
- Date:
- 2018-08-15
- Revision:
- 6:e9b1684a9c00
- Parent:
- 5:90bf5f0d86e9
- Child:
- 7:04f93e6b929f
File content as of revision 6:e9b1684a9c00:
#include "wheelchair.h"
AnalogIn x(A0);
AnalogIn y(A1);
DigitalOut up(D2);
DigitalOut down(D3);
DigitalOut on(D12);
DigitalOut off(D11);
bool manual = false;
Serial pc(USBTX, USBRX, 57600);
Timer t;
EventQueue queue;
//MPU9250 imu(D14, D15);
Wheelchair smart(xDir,yDir, &pc, &t);
Thread thread;
int main(void)
{
queue.call_every(SAMPLEFREQ, &smart, &Wheelchair::compass_thread);
t.reset();
thread.start(callback(&queue, &EventQueue::dispatch_forever));
while(1) {
if( pc.readable()) {
char c = pc.getc();
if( c == 'w') {
pc.printf("up \n");
smart.forward();
}
else if( c == 'a') {
//pc.printf("left \n");
smart.left();
}
else if( c == 'd') {
//pc.printf("right \n");
smart.right();
}
else if( c == 's') {
pc.printf("down \n");
smart.backward();
}
else if( c == 'r') {
smart.turn_right(90);
}
else if( c == 'l') {
smart.turn_left(90);
}
else if( c == 't') {
char buffer[256];
pc.printf ("Enter a long number: ");
fgets (buffer, 256, stdin);
int angle = atoi (buffer);
if(angle == 0) {
pc.printf("invalid input try again\n");
} else {
smart.pid_turn(angle);
}
} else if(c == 'o') {
pc.printf("turning on\n");
on = 1;
wait(1);
on = 0;
} else if(c == 'f') {
pc.printf("turning off\n");
off = 1;
wait(1);
off = 0;
} else if( c == 'm' || manual) {
pc.printf("turning on joystick\n");
manual = true;
t.reset();
while(manual) {
smart.move(x,y);
if( pc.readable()) {
char d = pc.getc();
if( d == 'm') {
pc.printf("turning off joystick\n");
manual = false;
}
}
}
}
else {
pc.printf("none \n");
smart.stop();
}
}
else {
// pc.printf("Nothing pressed \n");
smart.stop();
}
wait(process);
}
}