This code enables our mouse to go round the track using the two error methods.
Dependencies: Nucleo_blink_led mbed
Fork of Nucleo_blink_led by
senseFunc.cpp
- Committer:
- JamieBignell
- Date:
- 2018-03-11
- Revision:
- 5:dfea493f7a12
- Child:
- 6:a652deaae134
File content as of revision 5:dfea493f7a12:
#include <mbed.h> #include <funcdef.h> void senseFunc() { //READ ALL SENSORS for (int i=0;i<=7;i++) { sensorValue[i]=((sensorPin[i]).read_u16()>>4); } //USING THRESHOLDS, DETERMINE IF SENSOR ON LINE, THEN PRODUCE ERROR ARRAY for (int i=0;i<=7;i++) { if ((sensorValue[i])>=(sensorThreshold[i])) { sensorErrors[i] = 1; } else { sensorErrors[i] = 0; } } //SENSOR CONFIG 1 /* 6 4 2 0 1 3 5 7 0 0 0 1 1 0 0 0 / 0 0 1 1 1 0 0 0 / 0 0 1 1 0 0 0 0 / 0 1 1 1 0 0 0 0 / 0 1 1 0 0 0 0 0 / 1 1 1 0 0 0 0 0 / 1 1 0 0 0 0 0 0 / 1 0 0 0 0 0 0 0 / 6 4 2 0 1 3 5 7 0 0 0 1 1 0 0 0 / 0 0 0 1 1 1 0 0 / 0 0 0 0 1 1 0 0 / 0 0 0 0 1 1 1 0 / 0 0 0 0 0 1 1 0 / 0 0 0 0 0 1 1 1 / 0 0 0 0 0 0 1 1 / 0 0 0 0 0 0 0 1 / */ //SENSOR CONFIG 2 /* 6 4 2 0 1 3 5 7 0 0 0 1 1 0 0 0 / 0 0 1 1 0 0 0 0 / 0 1 1 0 0 0 0 0 / 1 1 0 0 0 0 0 0 / 1 0 0 0 0 0 0 0 / 6 4 2 0 1 3 5 7 0 0 0 1 1 0 0 0 / 0 0 0 0 1 1 0 0 / 0 0 0 0 0 1 1 0 / 0 0 0 0 0 0 1 1 / 0 0 0 0 0 0 0 1 / */ //DETERMINE STATES WHERE AN ERROR CAN DEFINITELY BE PRODUCED, IF NONE OF THESE STATES EXIST CURRENTLY, USE PREVIOUS ERROR if (((sensorErrors[6]) == 0) && ((sensorErrors[4]) == 0) && ((sensorErrors[2]) == 0) && ((sensorErrors[0]) == 1) && ((sensorErrors[1]) == 1) && ((sensorErrors[3]) == 0) && ((sensorErrors[5]) == 0) && ((sensorErrors[7]) == 0)) { errorVar=0; //delayBetweenPulses_ms=500; //note=period_F6; } else if (((sensorErrors[6]) == 0) && ((sensorErrors[4]) == 0) && ((sensorErrors[2]) == 1) && ((sensorErrors[0]) == 1) && ((sensorErrors[1]) == 0) && ((sensorErrors[3]) == 0) && ((sensorErrors[5]) == 0) && ((sensorErrors[7]) == 0)) { errorVar=-1; //delayBetweenPulses_ms=400; //note=period_E6; } else if (((sensorErrors[6]) == 0) && ((sensorErrors[4]) == 1) && ((sensorErrors[2]) == 1) && ((sensorErrors[0]) == 0) && ((sensorErrors[1]) == 0) && ((sensorErrors[3]) == 0) && ((sensorErrors[5]) == 0) && ((sensorErrors[7]) == 0)) { errorVar=-2; //delayBetweenPulses_ms=300; //note=period_D6; } else if (((sensorErrors[6]) == 1) && ((sensorErrors[4]) == 1) && ((sensorErrors[2]) == 0) && ((sensorErrors[0]) == 0) && ((sensorErrors[1]) == 0) && ((sensorErrors[3]) == 0) && ((sensorErrors[5]) == 0) && ((sensorErrors[7]) == 0)) { errorVar=-3; //delayBetweenPulses_ms=200; //note=period_B6; } else if (((sensorErrors[6]) == 1) && ((sensorErrors[4]) == 0) && ((sensorErrors[2]) == 0) && ((sensorErrors[0]) == 0) && ((sensorErrors[1]) == 0) && ((sensorErrors[3]) == 0) && ((sensorErrors[5]) == 0) && ((sensorErrors[7]) == 0)) { errorVar=-4; //delayBetweenPulses_ms=100; //note=period_A6; } else if (((sensorErrors[6]) == 0) && ((sensorErrors[4]) == 0) && ((sensorErrors[2]) == 0) && ((sensorErrors[0]) == 0) && ((sensorErrors[1]) == 1) && ((sensorErrors[3]) == 1) && ((sensorErrors[5]) == 0) && ((sensorErrors[7]) == 0)) { errorVar=1; //delayBetweenPulses_ms=400; //note=period_E6; } else if (((sensorErrors[6]) == 0) && ((sensorErrors[4]) == 0) && ((sensorErrors[2]) == 0) && ((sensorErrors[0]) == 0) && ((sensorErrors[1]) == 0) && ((sensorErrors[3]) == 1) && ((sensorErrors[5]) == 1) && ((sensorErrors[7]) == 0)) { errorVar=2; //delayBetweenPulses_ms=300; //note=period_D6; } else if (((sensorErrors[6]) == 0) && ((sensorErrors[4]) == 0) && ((sensorErrors[2]) == 0) && ((sensorErrors[0]) == 0) && ((sensorErrors[1]) == 0) && ((sensorErrors[3]) == 0) && ((sensorErrors[5]) == 1) && ((sensorErrors[7]) == 1)) { errorVar=3; //delayBetweenPulses_ms=200; //note=period_B6; } else if (((sensorErrors[6]) == 0) && ((sensorErrors[4]) == 0) && ((sensorErrors[2]) == 0) && ((sensorErrors[0]) == 0) && ((sensorErrors[1]) == 0) && ((sensorErrors[3]) == 0) && ((sensorErrors[5]) == 0) && ((sensorErrors[7]) == 1)) { errorVar=4; //delayBetweenPulses_ms=100; //note=period_A6; } else { errorVar=previousError; } return; }