Mouse code for the MacroRat
main.h@20:82836745332e, 2017-05-17 (annotated)
- Committer:
- sahilmgandhi
- Date:
- Wed May 17 02:01:34 2017 +0000
- Revision:
- 20:82836745332e
- Parent:
- 17:f713758f6238
- Child:
- 26:d20f1adac2d3
added some init code to keep track of walls as moving. Turning works now (avg/4 gives good values so long as we are in the center)!; Also maybe we should start off facing back, and then turn 180 to get better average readings?
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
kyleliangus | 4:b5b7836ca2b0 | 1 | #ifndef MAIN_H |
kyleliangus | 4:b5b7836ca2b0 | 2 | #define MAIN_H |
kyleliangus | 4:b5b7836ca2b0 | 3 | |
kyleliangus | 4:b5b7836ca2b0 | 4 | #include "mbed.h" |
kyleliangus | 4:b5b7836ca2b0 | 5 | #include "ITG3200.h" |
kyleliangus | 9:1d8e4da058cd | 6 | #include "motor.h" |
vanshg | 11:8fc2b703086b | 7 | #include "QEI.h" |
vanshg | 11:8fc2b703086b | 8 | #define PULSES 3520 |
vanshg | 11:8fc2b703086b | 9 | #define SAMPLE_NUM 100 |
kyleliangus | 4:b5b7836ca2b0 | 10 | |
kyleliangus | 4:b5b7836ca2b0 | 11 | // Motors |
kyleliangus | 8:a0760acdc59e | 12 | /* |
kyleliangus | 4:b5b7836ca2b0 | 13 | PwmOut left1(PB_7); |
kyleliangus | 4:b5b7836ca2b0 | 14 | PwmOut left2(PB_8); |
kyleliangus | 4:b5b7836ca2b0 | 15 | PwmOut right1(PA_10); |
kyleliangus | 4:b5b7836ca2b0 | 16 | PwmOut right2(PA_11); |
kyleliangus | 4:b5b7836ca2b0 | 17 | |
sahilmgandhi | 7:6f5cb6377bd4 | 18 | DigitalOut enableLeftMotor(PB_4); |
sahilmgandhi | 7:6f5cb6377bd4 | 19 | DigitalOut enableRightMotor(PB_5); |
kyleliangus | 8:a0760acdc59e | 20 | */ |
sahilmgandhi | 7:6f5cb6377bd4 | 21 | |
kyleliangus | 4:b5b7836ca2b0 | 22 | // RGB LED |
kyleliangus | 4:b5b7836ca2b0 | 23 | DigitalOut redLed(PC_0); |
kyleliangus | 4:b5b7836ca2b0 | 24 | DigitalOut blueLed(PC_1); |
kyleliangus | 4:b5b7836ca2b0 | 25 | DigitalOut greenLed(PC_2); |
kyleliangus | 4:b5b7836ca2b0 | 26 | |
kyleliangus | 9:1d8e4da058cd | 27 | // IRPairs |
kyleliangus | 9:1d8e4da058cd | 28 | IRPair IRP_4( PB_1, PC_5 ); |
kyleliangus | 9:1d8e4da058cd | 29 | IRPair IRP_3( PB_13, PC_4 ); |
kyleliangus | 9:1d8e4da058cd | 30 | IRPair IRP_2( PB_0, PA_6 ); |
kyleliangus | 9:1d8e4da058cd | 31 | IRPair IRP_1( PB_14, PA_7 ); |
kyleliangus | 9:1d8e4da058cd | 32 | |
kyleliangus | 15:b80555a4a8b9 | 33 | Motor left_motor( PB_8, PB_7, PB_4 ); // forward, backwards, enable |
kyleliangus | 15:b80555a4a8b9 | 34 | Motor right_motor( PA_11, PA_10, PB_5 ); // forward, backwards, enable |
kyleliangus | 9:1d8e4da058cd | 35 | |
kyleliangus | 9:1d8e4da058cd | 36 | /* |
kyleliangus | 4:b5b7836ca2b0 | 37 | DigitalOut IR_1(PB_1); |
kyleliangus | 4:b5b7836ca2b0 | 38 | DigitalOut IR_2(PB_13); |
kyleliangus | 4:b5b7836ca2b0 | 39 | DigitalOut IR_3(PB_0); |
kyleliangus | 4:b5b7836ca2b0 | 40 | DigitalOut IR_4(PB_14); |
kyleliangus | 4:b5b7836ca2b0 | 41 | // Receivers |
kyleliangus | 4:b5b7836ca2b0 | 42 | AnalogIn Rec_1(PC_5); |
kyleliangus | 4:b5b7836ca2b0 | 43 | AnalogIn Rec_2(PC_4); |
kyleliangus | 4:b5b7836ca2b0 | 44 | AnalogIn Rec_3(PA_6); |
kyleliangus | 4:b5b7836ca2b0 | 45 | AnalogIn Rec_4(PA_7); |
kyleliangus | 9:1d8e4da058cd | 46 | */ |
kyleliangus | 4:b5b7836ca2b0 | 47 | |
kyleliangus | 4:b5b7836ca2b0 | 48 | // Doing DEBUGGING |
kyleliangus | 4:b5b7836ca2b0 | 49 | #define DEBUGGING 1 |
kyleliangus | 4:b5b7836ca2b0 | 50 | Serial serial(PC_6, PC_7); |
kyleliangus | 4:b5b7836ca2b0 | 51 | |
kyleliangus | 4:b5b7836ca2b0 | 52 | // Gyro |
kyleliangus | 4:b5b7836ca2b0 | 53 | ITG3200 gyro(PC_9, PA_8); |
kyleliangus | 4:b5b7836ca2b0 | 54 | |
kyleliangus | 4:b5b7836ca2b0 | 55 | volatile double reading = 0; |
kyleliangus | 4:b5b7836ca2b0 | 56 | |
kyleliangus | 4:b5b7836ca2b0 | 57 | int gyroX = 0; |
kyleliangus | 4:b5b7836ca2b0 | 58 | int gyroY = 0; |
kyleliangus | 4:b5b7836ca2b0 | 59 | int gyroZ = 0; |
kyleliangus | 4:b5b7836ca2b0 | 60 | |
vanshg | 10:810d1849da9d | 61 | InterruptIn dipButton1(PB_15); |
vanshg | 10:810d1849da9d | 62 | InterruptIn dipButton2(PB_10); |
vanshg | 10:810d1849da9d | 63 | InterruptIn dipButton3(PB_9); |
vanshg | 10:810d1849da9d | 64 | InterruptIn dipButton4(PB_12); |
vanshg | 10:810d1849da9d | 65 | |
vanshg | 10:810d1849da9d | 66 | void enableButton1(); |
vanshg | 10:810d1849da9d | 67 | void enableButton2(); |
vanshg | 10:810d1849da9d | 68 | void enableButton3(); |
vanshg | 10:810d1849da9d | 69 | void enableButton4(); |
vanshg | 10:810d1849da9d | 70 | void disableButton1(); |
vanshg | 10:810d1849da9d | 71 | void disableButton2(); |
vanshg | 10:810d1849da9d | 72 | void disableButton3(); |
vanshg | 10:810d1849da9d | 73 | void disableButton4(); |
vanshg | 10:810d1849da9d | 74 | |
vanshg | 10:810d1849da9d | 75 | int dipFlags = 0; |
vanshg | 11:8fc2b703086b | 76 | #define BUTTON1_FLAG 0x1 |
vanshg | 11:8fc2b703086b | 77 | #define BUTTON2_FLAG 0x2 |
vanshg | 11:8fc2b703086b | 78 | #define BUTTON3_FLAG 0x4 |
vanshg | 11:8fc2b703086b | 79 | #define BUTTON4_FLAG 0x8 |
vanshg | 11:8fc2b703086b | 80 | |
sahilmgandhi | 17:f713758f6238 | 81 | int turnFlag = 0; |
sahilmgandhi | 17:f713758f6238 | 82 | #define LEFT_FLAG 0x1 |
sahilmgandhi | 17:f713758f6238 | 83 | #define RIGHT_FLAG 0x2 |
sahilmgandhi | 17:f713758f6238 | 84 | |
vanshg | 11:8fc2b703086b | 85 | QEI encoder0( PA_5, PB_3, NC, PULSES, QEI::X4_ENCODING ); |
vanshg | 11:8fc2b703086b | 86 | QEI encoder1( PA_1, PA_0, NC, PULSES, QEI::X4_ENCODING ); |
vanshg | 10:810d1849da9d | 87 | |
sahilmgandhi | 20:82836745332e | 88 | #define F_WALL 0x1 |
sahilmgandhi | 20:82836745332e | 89 | #define L_WALL 0x2 |
sahilmgandhi | 20:82836745332e | 90 | #define R_WALL 0x4 |
sahilmgandhi | 20:82836745332e | 91 | #define B_WALL 0x8 |
sahilmgandhi | 20:82836745332e | 92 | |
sahilmgandhi | 20:82836745332e | 93 | int currDir = 100; // modulo this to keep track of the current direction of the mouse! |
sahilmgandhi | 20:82836745332e | 94 | int wallArray[16][16] = {0}; // array to keep track of the walls |
sahilmgandhi | 20:82836745332e | 95 | int mouseLoc[16][16] = {0}; // array to keep track of the mouse's current location |
sahilmgandhi | 20:82836745332e | 96 | int manhattanDist[16][16] = { |
sahilmgandhi | 20:82836745332e | 97 | {14, 13, 12, 11, 10, 9, 8, 7, 7, 8, 9, 10, 11, 12, 13, 14}, |
sahilmgandhi | 20:82836745332e | 98 | {13, 12, 11, 10, 9, 8, 7, 6, 6, 7, 8, 9, 10, 11, 12, 13}, |
sahilmgandhi | 20:82836745332e | 99 | {12, 11, 10, 9, 8, 7, 6, 5, 5, 6, 7, 8, 9, 10, 11, 12}, |
sahilmgandhi | 20:82836745332e | 100 | {11, 10, 9, 8, 7, 6, 5, 4, 4, 5, 6, 7, 8, 9, 10, 11}, |
sahilmgandhi | 20:82836745332e | 101 | {10, 9, 8, 7, 6, 5, 4, 3, 3, 4, 5, 6, 7, 8, 9, 10}, |
sahilmgandhi | 20:82836745332e | 102 | {9, 8, 7, 6, 5, 4, 3, 2, 2, 3, 4, 5, 6, 7, 8, 9}, |
sahilmgandhi | 20:82836745332e | 103 | {8, 7, 6, 5, 4, 3, 2, 1, 1, 2, 3, 4, 5, 6, 7, 8}, |
sahilmgandhi | 20:82836745332e | 104 | {7, 6, 5, 4, 3, 2, 1, 0, 0, 1, 2, 3, 4, 5, 6, 7}, |
sahilmgandhi | 20:82836745332e | 105 | {7, 6, 5, 4, 3, 2, 1, 0, 0, 1, 2, 3, 4, 5, 6, 7}, |
sahilmgandhi | 20:82836745332e | 106 | {8, 7, 6, 5, 4, 3, 2, 1, 1, 2, 3, 4, 5, 6, 7, 8}, |
sahilmgandhi | 20:82836745332e | 107 | {9, 8, 7, 6, 5, 4, 3, 2, 2, 3, 4, 5, 6, 7, 8, 9}, |
sahilmgandhi | 20:82836745332e | 108 | {10, 9, 8, 7, 6, 5, 4, 3, 3, 4, 5, 6, 7, 8, 9, 10}, |
sahilmgandhi | 20:82836745332e | 109 | {11, 10, 9, 8, 7, 6, 5, 4, 4, 5, 6, 7, 8, 9, 10, 11}, |
sahilmgandhi | 20:82836745332e | 110 | {12, 11, 10, 9, 8, 7, 6, 5, 5, 6, 7, 8, 9, 10, 11, 12}, |
sahilmgandhi | 20:82836745332e | 111 | {13, 12, 11, 10, 9, 8, 7, 6, 6, 7, 8, 9, 10, 11, 12, 13}, |
sahilmgandhi | 20:82836745332e | 112 | {14, 13, 12, 11, 10, 9, 8, 7, 7, 8, 9, 10, 11, 12, 13, 14}, |
sahilmgandhi | 20:82836745332e | 113 | }; |
sahilmgandhi | 20:82836745332e | 114 | |
kyleliangus | 4:b5b7836ca2b0 | 115 | #endif |