Dependents: MouseHybridSenseCode
calibrateFunc.cpp@3:7f44ab64e96b, 2018-03-05 (annotated)
- Committer:
- JamieBignell
- Date:
- Mon Mar 05 22:40:25 2018 +0000
- Revision:
- 3:7f44ab64e96b
- Child:
- 4:f1670eec4681
final before code actually downloaded
Who changed what in which revision?
| User | Revision | Line number | New contents of line |
|---|---|---|---|
| JamieBignell | 3:7f44ab64e96b | 1 | #include "mbed.h" |
| JamieBignell | 3:7f44ab64e96b | 2 | #include "funcdef.h" |
| JamieBignell | 3:7f44ab64e96b | 3 | |
| JamieBignell | 3:7f44ab64e96b | 4 | void CalibrateFunc() |
| JamieBignell | 3:7f44ab64e96b | 5 | { |
| JamieBignell | 3:7f44ab64e96b | 6 | //USER PUTS MOUSE LEFT OF LINE |
| JamieBignell | 3:7f44ab64e96b | 7 | |
| JamieBignell | 3:7f44ab64e96b | 8 | //TAKE MIN/MAX VALUES 1ST TIME |
| JamieBignell | 3:7f44ab64e96b | 9 | for (int i=0;i<=7;i++) |
| JamieBignell | 3:7f44ab64e96b | 10 | { |
| JamieBignell | 3:7f44ab64e96b | 11 | sensorValue[i]=((sensorPin[i]).read_u16()>>4); |
| JamieBignell | 3:7f44ab64e96b | 12 | sensorMinValue1[i]=sensorValue[i]; |
| JamieBignell | 3:7f44ab64e96b | 13 | sensorMaxValue1[i]=sensorValue[i]; |
| JamieBignell | 3:7f44ab64e96b | 14 | } |
| JamieBignell | 3:7f44ab64e96b | 15 | |
| JamieBignell | 3:7f44ab64e96b | 16 | //LEFT WHEEL STARTS TURN |
| JamieBignell | 3:7f44ab64e96b | 17 | leftMotorVal.pulsewidth_ms(50); |
| JamieBignell | 3:7f44ab64e96b | 18 | rightMotorVal.pulsewidth_ms(0); |
| JamieBignell | 3:7f44ab64e96b | 19 | |
| JamieBignell | 3:7f44ab64e96b | 20 | //TURN UNTIL MIN AND MAX OF ALL SENSORS ARE SET AND A SMIDGE MORE |
| JamieBignell | 3:7f44ab64e96b | 21 | ///////////////////////////////////////////// |
| JamieBignell | 3:7f44ab64e96b | 22 | |
| JamieBignell | 3:7f44ab64e96b | 23 | int doneYet=0; |
| JamieBignell | 3:7f44ab64e96b | 24 | while(1) |
| JamieBignell | 3:7f44ab64e96b | 25 | { |
| JamieBignell | 3:7f44ab64e96b | 26 | for (int i=0;i<=7;i++) |
| JamieBignell | 3:7f44ab64e96b | 27 | { |
| JamieBignell | 3:7f44ab64e96b | 28 | sensorValue[i]=((sensorPin[i]).read_u16()>>4); |
| JamieBignell | 3:7f44ab64e96b | 29 | if (sensorValue[i]>=sensorMaxValue1[i]) |
| JamieBignell | 3:7f44ab64e96b | 30 | { |
| JamieBignell | 3:7f44ab64e96b | 31 | sensorMaxValue1[i]=sensorValue[i]; |
| JamieBignell | 3:7f44ab64e96b | 32 | } |
| JamieBignell | 3:7f44ab64e96b | 33 | else if ((sensorValue[i]+70)<=sensorMaxValue1[i]) |
| JamieBignell | 3:7f44ab64e96b | 34 | { |
| JamieBignell | 3:7f44ab64e96b | 35 | doneYet++; |
| JamieBignell | 3:7f44ab64e96b | 36 | if (doneYet==8) |
| JamieBignell | 3:7f44ab64e96b | 37 | { |
| JamieBignell | 3:7f44ab64e96b | 38 | goto endOfScan1; |
| JamieBignell | 3:7f44ab64e96b | 39 | } |
| JamieBignell | 3:7f44ab64e96b | 40 | } |
| JamieBignell | 3:7f44ab64e96b | 41 | } |
| JamieBignell | 3:7f44ab64e96b | 42 | } |
| JamieBignell | 3:7f44ab64e96b | 43 | endOfScan1: |
| JamieBignell | 3:7f44ab64e96b | 44 | wait(0.1); |
| JamieBignell | 3:7f44ab64e96b | 45 | ///////////////////////////////////////////// |
| JamieBignell | 3:7f44ab64e96b | 46 | |
| JamieBignell | 3:7f44ab64e96b | 47 | //STOP WHEELS |
| JamieBignell | 3:7f44ab64e96b | 48 | leftMotorVal.pulsewidth_ms(0); |
| JamieBignell | 3:7f44ab64e96b | 49 | rightMotorVal.pulsewidth_ms(0); |
| JamieBignell | 3:7f44ab64e96b | 50 | |
| JamieBignell | 3:7f44ab64e96b | 51 | //TAKE MIN/MAX VALUES 2ND TIME |
| JamieBignell | 3:7f44ab64e96b | 52 | for (int i=0;i<=7;i++) |
| JamieBignell | 3:7f44ab64e96b | 53 | { |
| JamieBignell | 3:7f44ab64e96b | 54 | sensorValue[i]=((sensorPin[i]).read_u16()>>4); |
| JamieBignell | 3:7f44ab64e96b | 55 | sensorMinValue2[i]=sensorValue[i]; |
| JamieBignell | 3:7f44ab64e96b | 56 | sensorMaxValue2[i]=sensorValue[i]; |
| JamieBignell | 3:7f44ab64e96b | 57 | } |
| JamieBignell | 3:7f44ab64e96b | 58 | |
| JamieBignell | 3:7f44ab64e96b | 59 | //RIGHT WHEEL STARTS TURN |
| JamieBignell | 3:7f44ab64e96b | 60 | leftMotorVal.pulsewidth_ms(0); |
| JamieBignell | 3:7f44ab64e96b | 61 | rightMotorVal.pulsewidth_ms(50); |
| JamieBignell | 3:7f44ab64e96b | 62 | |
| JamieBignell | 3:7f44ab64e96b | 63 | //TURN UNTIL MIN AND MAX OF ALL SENSORS ARE SET IN NEW VARIABLES |
| JamieBignell | 3:7f44ab64e96b | 64 | doneYet=0; |
| JamieBignell | 3:7f44ab64e96b | 65 | while(1) |
| JamieBignell | 3:7f44ab64e96b | 66 | { |
| JamieBignell | 3:7f44ab64e96b | 67 | for (int i=0;i<=7;i++) |
| JamieBignell | 3:7f44ab64e96b | 68 | { |
| JamieBignell | 3:7f44ab64e96b | 69 | sensorValue[i]=((sensorPin[i]).read_u16()>>4); |
| JamieBignell | 3:7f44ab64e96b | 70 | if (sensorValue[i]>=sensorMaxValue2[i]) |
| JamieBignell | 3:7f44ab64e96b | 71 | { |
| JamieBignell | 3:7f44ab64e96b | 72 | sensorMaxValue2[i]=sensorValue[i]; |
| JamieBignell | 3:7f44ab64e96b | 73 | } |
| JamieBignell | 3:7f44ab64e96b | 74 | else if ((sensorValue[i]+70)<=sensorMaxValue2[i]) |
| JamieBignell | 3:7f44ab64e96b | 75 | { |
| JamieBignell | 3:7f44ab64e96b | 76 | doneYet++; |
| JamieBignell | 3:7f44ab64e96b | 77 | if (doneYet==8) |
| JamieBignell | 3:7f44ab64e96b | 78 | { |
| JamieBignell | 3:7f44ab64e96b | 79 | goto endOfScan2; |
| JamieBignell | 3:7f44ab64e96b | 80 | } |
| JamieBignell | 3:7f44ab64e96b | 81 | } |
| JamieBignell | 3:7f44ab64e96b | 82 | } |
| JamieBignell | 3:7f44ab64e96b | 83 | } |
| JamieBignell | 3:7f44ab64e96b | 84 | endOfScan2: |
| JamieBignell | 3:7f44ab64e96b | 85 | |
| JamieBignell | 3:7f44ab64e96b | 86 | wait(0.1); |
| JamieBignell | 3:7f44ab64e96b | 87 | ///////////////////////////////////////////// |
| JamieBignell | 3:7f44ab64e96b | 88 | |
| JamieBignell | 3:7f44ab64e96b | 89 | //STOP WHEELS |
| JamieBignell | 3:7f44ab64e96b | 90 | leftMotorVal.pulsewidth_ms(0); |
| JamieBignell | 3:7f44ab64e96b | 91 | rightMotorVal.pulsewidth_ms(0); |
| JamieBignell | 3:7f44ab64e96b | 92 | |
| JamieBignell | 3:7f44ab64e96b | 93 | //AVERAGE THESE VALUES |
| JamieBignell | 3:7f44ab64e96b | 94 | for (int i=1;i<=8;i++) |
| JamieBignell | 3:7f44ab64e96b | 95 | { |
| JamieBignell | 3:7f44ab64e96b | 96 | sensorMinValue[i]=(sensorMinValue1[i]+sensorMinValue2[i])/2; |
| JamieBignell | 3:7f44ab64e96b | 97 | sensorMaxValue[i]=(sensorMaxValue1[i]+sensorMaxValue2[i])/2; |
| JamieBignell | 3:7f44ab64e96b | 98 | } |
| JamieBignell | 3:7f44ab64e96b | 99 | |
| JamieBignell | 3:7f44ab64e96b | 100 | //SET THRESHOLDS FOR ERROR OF 0 |
| JamieBignell | 3:7f44ab64e96b | 101 | for (int i=1;i<=8;i++) |
| JamieBignell | 3:7f44ab64e96b | 102 | { |
| JamieBignell | 3:7f44ab64e96b | 103 | sensorThreshold[i]=sensorMaxValue[i]-100; |
| JamieBignell | 3:7f44ab64e96b | 104 | } |
| JamieBignell | 3:7f44ab64e96b | 105 | |
| JamieBignell | 3:7f44ab64e96b | 106 | return; |
| JamieBignell | 3:7f44ab64e96b | 107 | } |