Dependencies:   mbed

Dependents:   MouseHybridSenseCode

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?

UserRevisionLine numberNew 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 }