Himanshu Arora
/
FCFS
Trying out a new commit
main.cpp@0:683dbfe46abe, 2015-10-30 (annotated)
- Committer:
- hiarora
- Date:
- Fri Oct 30 04:12:06 2015 +0000
- Revision:
- 0:683dbfe46abe
sex
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
hiarora | 0:683dbfe46abe | 1 | #include "mbed.h" |
hiarora | 0:683dbfe46abe | 2 | #include "LSM303DLH.h" |
hiarora | 0:683dbfe46abe | 3 | |
hiarora | 0:683dbfe46abe | 4 | DigitalOut led1(LED1); |
hiarora | 0:683dbfe46abe | 5 | DigitalOut led2(LED2); |
hiarora | 0:683dbfe46abe | 6 | |
hiarora | 0:683dbfe46abe | 7 | |
hiarora | 0:683dbfe46abe | 8 | /* |
hiarora | 0:683dbfe46abe | 9 | Misc decl. |
hiarora | 0:683dbfe46abe | 10 | */ |
hiarora | 0:683dbfe46abe | 11 | Serial debug(USBTX,USBRX); |
hiarora | 0:683dbfe46abe | 12 | |
hiarora | 0:683dbfe46abe | 13 | |
hiarora | 0:683dbfe46abe | 14 | /* |
hiarora | 0:683dbfe46abe | 15 | Motor Declarations and functions |
hiarora | 0:683dbfe46abe | 16 | @param on : decidedes which bits to set from the forward and backward array |
hiarora | 0:683dbfe46abe | 17 | */ |
hiarora | 0:683dbfe46abe | 18 | |
hiarora | 0:683dbfe46abe | 19 | unsigned int on = 0; |
hiarora | 0:683dbfe46abe | 20 | |
hiarora | 0:683dbfe46abe | 21 | DigitalOut m1(p21); |
hiarora | 0:683dbfe46abe | 22 | DigitalOut m2(p22); |
hiarora | 0:683dbfe46abe | 23 | DigitalOut m3(p23); |
hiarora | 0:683dbfe46abe | 24 | DigitalOut m4(p24); |
hiarora | 0:683dbfe46abe | 25 | |
hiarora | 0:683dbfe46abe | 26 | enum control{ |
hiarora | 0:683dbfe46abe | 27 | forward, |
hiarora | 0:683dbfe46abe | 28 | backward |
hiarora | 0:683dbfe46abe | 29 | }stepper_direction = forward; |
hiarora | 0:683dbfe46abe | 30 | |
hiarora | 0:683dbfe46abe | 31 | float motorTimeLapsed = 0.0, degrees = 0, motorTimerFrequency = 0.007, oneRotationTime = 15.0; |
hiarora | 0:683dbfe46abe | 32 | |
hiarora | 0:683dbfe46abe | 33 | char* forwardArr[] = {"1000", "1100", "0100", "0110","0010", "0011","0001", "1001"}; |
hiarora | 0:683dbfe46abe | 34 | char* backwardArr[] = {"1000", "1001", "0001", "0011", "0010", "0110", "0100", "1100"}; |
hiarora | 0:683dbfe46abe | 35 | |
hiarora | 0:683dbfe46abe | 36 | |
hiarora | 0:683dbfe46abe | 37 | void SetPortValues(char *myValues){ |
hiarora | 0:683dbfe46abe | 38 | m1 = myValues[0] - 48; |
hiarora | 0:683dbfe46abe | 39 | m2 = myValues[1] - 48; |
hiarora | 0:683dbfe46abe | 40 | m3 = myValues[2] - 48; |
hiarora | 0:683dbfe46abe | 41 | m4 = myValues[3] - 48; |
hiarora | 0:683dbfe46abe | 42 | } |
hiarora | 0:683dbfe46abe | 43 | |
hiarora | 0:683dbfe46abe | 44 | |
hiarora | 0:683dbfe46abe | 45 | void attime() { |
hiarora | 0:683dbfe46abe | 46 | motorTimeLapsed += motorTimerFrequency; |
hiarora | 0:683dbfe46abe | 47 | if(motorTimeLapsed > oneRotationTime){ |
hiarora | 0:683dbfe46abe | 48 | motorTimeLapsed = 0; |
hiarora | 0:683dbfe46abe | 49 | stepper_direction = stepper_direction == forward?backward:forward; |
hiarora | 0:683dbfe46abe | 50 | } |
hiarora | 0:683dbfe46abe | 51 | stepper_direction?SetPortValues(backwardArr[++on%8]):SetPortValues(forwardArr[++on%8]); |
hiarora | 0:683dbfe46abe | 52 | degrees = (stepper_direction == forward)?(motorTimeLapsed/oneRotationTime*180.0):(180.0-(motorTimeLapsed/oneRotationTime*180.0)); |
hiarora | 0:683dbfe46abe | 53 | } |
hiarora | 0:683dbfe46abe | 54 | |
hiarora | 0:683dbfe46abe | 55 | /* |
hiarora | 0:683dbfe46abe | 56 | Sonar - decl and functions |
hiarora | 0:683dbfe46abe | 57 | */ |
hiarora | 0:683dbfe46abe | 58 | |
hiarora | 0:683dbfe46abe | 59 | long duration, distance_cm; |
hiarora | 0:683dbfe46abe | 60 | Timer timerSonar; |
hiarora | 0:683dbfe46abe | 61 | DigitalOut trig(p6); // To generate trigger for Sonar |
hiarora | 0:683dbfe46abe | 62 | InterruptIn echo(p5); // To capture echo edge on I/O interrupt |
hiarora | 0:683dbfe46abe | 63 | |
hiarora | 0:683dbfe46abe | 64 | void begin_timer(){ |
hiarora | 0:683dbfe46abe | 65 | timerSonar.reset(); //reset timer |
hiarora | 0:683dbfe46abe | 66 | timerSonar.start(); |
hiarora | 0:683dbfe46abe | 67 | } |
hiarora | 0:683dbfe46abe | 68 | |
hiarora | 0:683dbfe46abe | 69 | void end_timer() |
hiarora | 0:683dbfe46abe | 70 | { |
hiarora | 0:683dbfe46abe | 71 | timerSonar.stop(); |
hiarora | 0:683dbfe46abe | 72 | duration = timerSonar.read_us(); // Pulse width measured |
hiarora | 0:683dbfe46abe | 73 | distance_cm = (double)(duration/2)*0.034 ; |
hiarora | 0:683dbfe46abe | 74 | } |
hiarora | 0:683dbfe46abe | 75 | |
hiarora | 0:683dbfe46abe | 76 | void echo_duration() { |
hiarora | 0:683dbfe46abe | 77 | trig=0; // trigger low |
hiarora | 0:683dbfe46abe | 78 | wait_us(2); // wait |
hiarora | 0:683dbfe46abe | 79 | trig=1; // trigger high |
hiarora | 0:683dbfe46abe | 80 | wait_us(10); |
hiarora | 0:683dbfe46abe | 81 | trig=0; // trigger low |
hiarora | 0:683dbfe46abe | 82 | } |
hiarora | 0:683dbfe46abe | 83 | |
hiarora | 0:683dbfe46abe | 84 | /* |
hiarora | 0:683dbfe46abe | 85 | Magnetometer decl and functions |
hiarora | 0:683dbfe46abe | 86 | */ |
hiarora | 0:683dbfe46abe | 87 | |
hiarora | 0:683dbfe46abe | 88 | LSM303DLH compass(p9, p10); |
hiarora | 0:683dbfe46abe | 89 | |
hiarora | 0:683dbfe46abe | 90 | |
hiarora | 0:683dbfe46abe | 91 | int main() { |
hiarora | 0:683dbfe46abe | 92 | //configure motor |
hiarora | 0:683dbfe46abe | 93 | Ticker motorTimer; |
hiarora | 0:683dbfe46abe | 94 | motorTimer.attach(&attime, motorTimerFrequency); |
hiarora | 0:683dbfe46abe | 95 | //configure sonar |
hiarora | 0:683dbfe46abe | 96 | echo.rise(&begin_timer); |
hiarora | 0:683dbfe46abe | 97 | echo.fall(&end_timer); |
hiarora | 0:683dbfe46abe | 98 | //configure compass |
hiarora | 0:683dbfe46abe | 99 | float hdg; |
hiarora | 0:683dbfe46abe | 100 | compass.setOffset(29.50, -0.50, 4.00); |
hiarora | 0:683dbfe46abe | 101 | compass.setScale(1.00, 1.03, 1.21); |
hiarora | 0:683dbfe46abe | 102 | while(1) { |
hiarora | 0:683dbfe46abe | 103 | echo_duration(); |
hiarora | 0:683dbfe46abe | 104 | hdg = compass.heading((vector){0,-1,0}); |
hiarora | 0:683dbfe46abe | 105 | debug.printf("Degree = %f Distance = %d Heading: %.2f \n\r", degrees, distance_cm, hdg); |
hiarora | 0:683dbfe46abe | 106 | } |
hiarora | 0:683dbfe46abe | 107 | } |