
Range Finder (Version 2) - Below 50cm, buzzer sounds, LED flashes for 5s, then alarm sounds until interrupted
Dependencies: mbed
Fork of range_finder_2 by
main.cpp@2:fe61a5e4cdf5, 2016-06-14 (annotated)
- Committer:
- wadh4587
- Date:
- Tue Jun 14 14:34:22 2016 +0000
- Revision:
- 2:fe61a5e4cdf5
- Parent:
- 1:b3590ab2a8ae
When someone comes within 50cm, buzzer sounds once, LED flashes for 5s, then alarm sounds until interrupted.
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
wadh4587 | 1:b3590ab2a8ae | 1 | /* Arthur Spencer 14/06/16 |
wadh4587 | 1:b3590ab2a8ae | 2 | LV-MaxSonar-EZ1 Range Finder |
wadh4587 | 2:fe61a5e4cdf5 | 3 | When someone comes within 50cm, LED flashes for 5s, then buzzer sounds until interupted. |
wadh4587 | 1:b3590ab2a8ae | 4 | */ |
shimniok | 0:9dfac5da16a9 | 5 | #include "mbed.h" |
shimniok | 0:9dfac5da16a9 | 6 | |
wadh4587 | 1:b3590ab2a8ae | 7 | AnalogIn ain(A0); //Receives analogue signal from range finder |
wadh4587 | 2:fe61a5e4cdf5 | 8 | Serial pc(USBTX, USBRX); |
wadh4587 | 2:fe61a5e4cdf5 | 9 | |
wadh4587 | 2:fe61a5e4cdf5 | 10 | PwmOut buzz(D2); |
wadh4587 | 2:fe61a5e4cdf5 | 11 | DigitalOut timer(D1); |
wadh4587 | 2:fe61a5e4cdf5 | 12 | int stop; |
shimniok | 0:9dfac5da16a9 | 13 | |
wadh4587 | 2:fe61a5e4cdf5 | 14 | void press_x() //Interrupt sequence |
wadh4587 | 2:fe61a5e4cdf5 | 15 | { |
wadh4587 | 2:fe61a5e4cdf5 | 16 | char c = pc.getc(); |
wadh4587 | 2:fe61a5e4cdf5 | 17 | if(c == 'x') { |
wadh4587 | 2:fe61a5e4cdf5 | 18 | stop = 1; |
wadh4587 | 2:fe61a5e4cdf5 | 19 | pc.printf("Interrupt\n\r"); |
wadh4587 | 2:fe61a5e4cdf5 | 20 | } |
wadh4587 | 2:fe61a5e4cdf5 | 21 | } |
wadh4587 | 1:b3590ab2a8ae | 22 | |
wadh4587 | 1:b3590ab2a8ae | 23 | int main() |
wadh4587 | 1:b3590ab2a8ae | 24 | { |
wadh4587 | 2:fe61a5e4cdf5 | 25 | float volts, distance, p, q; |
wadh4587 | 2:fe61a5e4cdf5 | 26 | buzz.period_ms(2); |
wadh4587 | 2:fe61a5e4cdf5 | 27 | timer = 0; |
wadh4587 | 2:fe61a5e4cdf5 | 28 | buzz = 0; |
wadh4587 | 2:fe61a5e4cdf5 | 29 | stop = 0; |
wadh4587 | 2:fe61a5e4cdf5 | 30 | pc.attach(&press_x); |
wadh4587 | 1:b3590ab2a8ae | 31 | while (1) { |
wadh4587 | 2:fe61a5e4cdf5 | 32 | if (stop == 0) { |
wadh4587 | 2:fe61a5e4cdf5 | 33 | volts = ain.read(); |
wadh4587 | 2:fe61a5e4cdf5 | 34 | distance = volts*1000; //cm |
wadh4587 | 2:fe61a5e4cdf5 | 35 | wait(0.5); |
wadh4587 | 2:fe61a5e4cdf5 | 36 | if (distance > 50) { |
wadh4587 | 2:fe61a5e4cdf5 | 37 | timer = 0; |
wadh4587 | 2:fe61a5e4cdf5 | 38 | buzz = 0; |
wadh4587 | 2:fe61a5e4cdf5 | 39 | wait(0.2); |
wadh4587 | 2:fe61a5e4cdf5 | 40 | } else { |
wadh4587 | 2:fe61a5e4cdf5 | 41 | for( p = 0.0f; p < 0.4; p += 0.1) { //Initial buzz |
wadh4587 | 2:fe61a5e4cdf5 | 42 | if(p<0.2) { |
wadh4587 | 2:fe61a5e4cdf5 | 43 | buzz = 0.5; |
wadh4587 | 2:fe61a5e4cdf5 | 44 | wait(0.1); |
wadh4587 | 2:fe61a5e4cdf5 | 45 | } else { |
wadh4587 | 2:fe61a5e4cdf5 | 46 | buzz = 0; |
wadh4587 | 2:fe61a5e4cdf5 | 47 | wait(0.1); |
wadh4587 | 2:fe61a5e4cdf5 | 48 | } |
wadh4587 | 2:fe61a5e4cdf5 | 49 | } |
wadh4587 | 2:fe61a5e4cdf5 | 50 | for( p = 0; p < 10; p++) { //5s LED timer |
wadh4587 | 2:fe61a5e4cdf5 | 51 | timer = !timer; |
wadh4587 | 2:fe61a5e4cdf5 | 52 | wait(0.5); |
wadh4587 | 2:fe61a5e4cdf5 | 53 | } |
wadh4587 | 2:fe61a5e4cdf5 | 54 | for( q = 0; q < 60; q += 1) { //Alarm |
wadh4587 | 2:fe61a5e4cdf5 | 55 | if (stop == 0) { |
wadh4587 | 2:fe61a5e4cdf5 | 56 | for( p = 0.0f; p < 0.5; p += 0.1) { |
wadh4587 | 2:fe61a5e4cdf5 | 57 | if(p<0.25) { |
wadh4587 | 2:fe61a5e4cdf5 | 58 | buzz = 0.5; |
wadh4587 | 2:fe61a5e4cdf5 | 59 | wait(0.05); |
wadh4587 | 2:fe61a5e4cdf5 | 60 | } else { |
wadh4587 | 2:fe61a5e4cdf5 | 61 | buzz = 0; |
wadh4587 | 2:fe61a5e4cdf5 | 62 | wait(0.05); |
wadh4587 | 2:fe61a5e4cdf5 | 63 | } |
wadh4587 | 2:fe61a5e4cdf5 | 64 | } |
wadh4587 | 2:fe61a5e4cdf5 | 65 | } else { |
wadh4587 | 2:fe61a5e4cdf5 | 66 | buzz = 0, timer = 0; |
wadh4587 | 2:fe61a5e4cdf5 | 67 | } |
wadh4587 | 2:fe61a5e4cdf5 | 68 | } |
wadh4587 | 2:fe61a5e4cdf5 | 69 | } |
wadh4587 | 1:b3590ab2a8ae | 70 | } else { |
wadh4587 | 1:b3590ab2a8ae | 71 | } |
shimniok | 0:9dfac5da16a9 | 72 | } |
wadh4587 | 1:b3590ab2a8ae | 73 | } |