Dependents: MouseHybridSenseCode
calibrateFunc.cpp
- Committer:
- JamieBignell
- Date:
- 2018-03-05
- Revision:
- 3:7f44ab64e96b
- Child:
- 4:f1670eec4681
File content as of revision 3:7f44ab64e96b:
#include "mbed.h" #include "funcdef.h" void CalibrateFunc() { //USER PUTS MOUSE LEFT OF LINE //TAKE MIN/MAX VALUES 1ST TIME for (int i=0;i<=7;i++) { sensorValue[i]=((sensorPin[i]).read_u16()>>4); sensorMinValue1[i]=sensorValue[i]; sensorMaxValue1[i]=sensorValue[i]; } //LEFT WHEEL STARTS TURN leftMotorVal.pulsewidth_ms(50); rightMotorVal.pulsewidth_ms(0); //TURN UNTIL MIN AND MAX OF ALL SENSORS ARE SET AND A SMIDGE MORE ///////////////////////////////////////////// int doneYet=0; while(1) { for (int i=0;i<=7;i++) { sensorValue[i]=((sensorPin[i]).read_u16()>>4); if (sensorValue[i]>=sensorMaxValue1[i]) { sensorMaxValue1[i]=sensorValue[i]; } else if ((sensorValue[i]+70)<=sensorMaxValue1[i]) { doneYet++; if (doneYet==8) { goto endOfScan1; } } } } endOfScan1: wait(0.1); ///////////////////////////////////////////// //STOP WHEELS leftMotorVal.pulsewidth_ms(0); rightMotorVal.pulsewidth_ms(0); //TAKE MIN/MAX VALUES 2ND TIME for (int i=0;i<=7;i++) { sensorValue[i]=((sensorPin[i]).read_u16()>>4); sensorMinValue2[i]=sensorValue[i]; sensorMaxValue2[i]=sensorValue[i]; } //RIGHT WHEEL STARTS TURN leftMotorVal.pulsewidth_ms(0); rightMotorVal.pulsewidth_ms(50); //TURN UNTIL MIN AND MAX OF ALL SENSORS ARE SET IN NEW VARIABLES doneYet=0; while(1) { for (int i=0;i<=7;i++) { sensorValue[i]=((sensorPin[i]).read_u16()>>4); if (sensorValue[i]>=sensorMaxValue2[i]) { sensorMaxValue2[i]=sensorValue[i]; } else if ((sensorValue[i]+70)<=sensorMaxValue2[i]) { doneYet++; if (doneYet==8) { goto endOfScan2; } } } } endOfScan2: wait(0.1); ///////////////////////////////////////////// //STOP WHEELS leftMotorVal.pulsewidth_ms(0); rightMotorVal.pulsewidth_ms(0); //AVERAGE THESE VALUES for (int i=1;i<=8;i++) { sensorMinValue[i]=(sensorMinValue1[i]+sensorMinValue2[i])/2; sensorMaxValue[i]=(sensorMaxValue1[i]+sensorMaxValue2[i])/2; } //SET THRESHOLDS FOR ERROR OF 0 for (int i=1;i<=8;i++) { sensorThreshold[i]=sensorMaxValue[i]-100; } return; }