this code is completely restructured, but should do the same thing. did not want to directly commit, since it may not work at all. compiles though.

Dependencies:   AVEncoder mbed-src-AV

Fork of Test by 2015-2016_Mouserat

Committer:
jimmery
Date:
Tue Dec 15 08:56:36 2015 +0000
Revision:
13:5f08195456a4
Parent:
12:0849b16c2672
HUGE RESTRUCTURING OF THE CODE.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
jimmery 0:13d8a77fb1d7 1 #include "mbed.h"
jimmery 0:13d8a77fb1d7 2
jimmery 13:5f08195456a4 3 #include "pid.h"
jimmery 13:5f08195456a4 4 #include "sensors.h"
jimmery 13:5f08195456a4 5 #include "mouse.h"
jimmery 2:82a11e992619 6
jimmery 13:5f08195456a4 7 Ticker Systicker;
jimmery 13:5f08195456a4 8 Mouse m;
aduriseti 6:61b503990cd6 9
jimmery 0:13d8a77fb1d7 10 void systick()
jimmery 0:13d8a77fb1d7 11 {
jimmery 13:5f08195456a4 12 m.scan(); // get the IR values.
jimmery 9:ad6f60953086 13 // these values are useful regardless of what mouse_state we are in.
jimmery 13:5f08195456a4 14 switch (m.mouse_state)
jimmery 2:82a11e992619 15 {
jimmery 9:ad6f60953086 16 case STOPPED:
jimmery 13:5f08195456a4 17 m.offsetCalc();
jimmery 13:5f08195456a4 18 m.pid_reset();
jimmery 13:5f08195456a4 19 m.sensor_reset();
jimmery 9:ad6f60953086 20 break;
jimmery 9:ad6f60953086 21 case FORWARD:
jimmery 13:5f08195456a4 22 if ( m.forward_wall_detected() )
jimmery 10:d2907773f9a3 23 {
jimmery 13:5f08195456a4 24 m.mouse_state = STOPPED;
jimmery 13:5f08195456a4 25 m.turn_direction = LEFT;
jimmery 10:d2907773f9a3 26 return;
jimmery 10:d2907773f9a3 27 }
jimmery 13:5f08195456a4 28 m.run_pid();
jimmery 13:5f08195456a4 29 // TODO we need to start saving walls and stuff.
jimmery 9:ad6f60953086 30 break;
jimmery 9:ad6f60953086 31 default:
jimmery 9:ad6f60953086 32 // don't do anything.
jimmery 9:ad6f60953086 33 break;
jimmery 2:82a11e992619 34 }
jimmery 0:13d8a77fb1d7 35 }
jimmery 13:5f08195456a4 36
jimmery 13:5f08195456a4 37 void setup()
jimmery 13:5f08195456a4 38 {
jimmery 13:5f08195456a4 39 Mouse m;
aduriseti 6:61b503990cd6 40
jimmery 13:5f08195456a4 41 Systicker.attach_us(&systick, 1000);
jimmery 0:13d8a77fb1d7 42 wait(2);
jimmery 0:13d8a77fb1d7 43 }
jimmery 9:ad6f60953086 44
jimmery 10:d2907773f9a3 45 int main() {
jimmery 10:d2907773f9a3 46 setup();
jimmery 10:d2907773f9a3 47 while(1) {
jimmery 13:5f08195456a4 48 switch (m.mouse_state)
jimmery 10:d2907773f9a3 49 {
jimmery 10:d2907773f9a3 50 case STOPPED:
jimmery 13:5f08195456a4 51 m.stop();
jimmery 10:d2907773f9a3 52 wait(1);
jimmery 13:5f08195456a4 53 if ( m.turn_direction == INVALID )
jimmery 10:d2907773f9a3 54 {
jimmery 13:5f08195456a4 55 m.mouse_state = FORWARD;
jimmery 10:d2907773f9a3 56 }
jimmery 10:d2907773f9a3 57 else
jimmery 10:d2907773f9a3 58 {
jimmery 13:5f08195456a4 59 m.mouse_state = TURNING;
jimmery 10:d2907773f9a3 60 }
jimmery 10:d2907773f9a3 61 break;
jimmery 10:d2907773f9a3 62 case FORWARD:
jimmery 13:5f08195456a4 63 // left_forward = left_speed / left_max_speed;
jimmery 13:5f08195456a4 64 // left_reverse = 0;
jimmery 13:5f08195456a4 65 // right_forward = right_speed / right_max_speed;
jimmery 13:5f08195456a4 66 // right_reverse = 0;
jimmery 10:d2907773f9a3 67 break;
jimmery 10:d2907773f9a3 68 case TURNING:
jimmery 13:5f08195456a4 69 m.turn();
jimmery 13:5f08195456a4 70 m.mouse_state = STOPPED;
jimmery 13:5f08195456a4 71 m.turn_direction = INVALID;
jimmery 10:d2907773f9a3 72 break;
jimmery 10:d2907773f9a3 73 case MOVECELL:
jimmery 13:5f08195456a4 74 m.move_cell();
jimmery 13:5f08195456a4 75 m.mouse_state = STOPPED;
jimmery 10:d2907773f9a3 76 break;
jimmery 10:d2907773f9a3 77 default:
jimmery 10:d2907773f9a3 78 // idk lmao. show some error message?
jimmery 10:d2907773f9a3 79 break;
jimmery 10:d2907773f9a3 80 }
jimmery 10:d2907773f9a3 81 }
jimmery 10:d2907773f9a3 82 }