Seongbin Lim
/
sb_first_project
This is a very simple guide, reviewing the steps required to get Blinky working on an Mbed OS platform.
main.cpp@130:d19783810c05, 2020-05-01 (annotated)
- Committer:
- sb8718
- Date:
- Fri May 01 09:15:12 2020 +0000
- Revision:
- 130:d19783810c05
- Parent:
- 129:53f2df333d65
- Child:
- 131:8fb226cc407c
Lab 6-4
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
sb8718 | 109:5274dd9bebe1 | 1 | #include "mbed.h" |
sb8718 | 126:a89a400ec689 | 2 | |
sb8718 | 129:53f2df333d65 | 3 | DigitalOut trigger(D3); |
sb8718 | 129:53f2df333d65 | 4 | DigitalIn echo(D2); |
sb8718 | 129:53f2df333d65 | 5 | Timer timer1; |
sb8718 | 129:53f2df333d65 | 6 | |
sb8718 | 129:53f2df333d65 | 7 | DigitalOut led2(LED2); |
sb8718 | 129:53f2df333d65 | 8 | Serial pc(PA_2, PA_3, 115200); |
sb8718 | 130:d19783810c05 | 9 | PwmOut buzzer(PB_4); |
sb8718 | 117:cc2a98cdd8fa | 10 | |
sb8718 | 130:d19783810c05 | 11 | Ticker ticker; |
sb8718 | 130:d19783810c05 | 12 | |
sb8718 | 130:d19783810c05 | 13 | bool sing = false; |
sb8718 | 130:d19783810c05 | 14 | |
sb8718 | 130:d19783810c05 | 15 | float m_distance; |
sb8718 | 128:29911670c7fd | 16 | |
sb8718 | 130:d19783810c05 | 17 | void m_on() { |
sb8718 | 130:d19783810c05 | 18 | led2 = 1; |
sb8718 | 130:d19783810c05 | 19 | |
sb8718 | 130:d19783810c05 | 20 | |
sb8718 | 130:d19783810c05 | 21 | buzzer = 1.0 - 0.05; |
sb8718 | 130:d19783810c05 | 22 | |
sb8718 | 130:d19783810c05 | 23 | int period_us; |
sb8718 | 130:d19783810c05 | 24 | period_us = 1000000/880.0; |
sb8718 | 130:d19783810c05 | 25 | |
sb8718 | 130:d19783810c05 | 26 | buzzer.period_us(period_us); |
sb8718 | 130:d19783810c05 | 27 | } |
sb8718 | 130:d19783810c05 | 28 | void m_off() { |
sb8718 | 130:d19783810c05 | 29 | led2 = 0; |
sb8718 | 130:d19783810c05 | 30 | |
sb8718 | 130:d19783810c05 | 31 | |
sb8718 | 130:d19783810c05 | 32 | buzzer = 1.0 - 0.05; |
sb8718 | 130:d19783810c05 | 33 | |
sb8718 | 130:d19783810c05 | 34 | buzzer.period_us(100); |
sb8718 | 130:d19783810c05 | 35 | } |
sb8718 | 130:d19783810c05 | 36 | |
sb8718 | 130:d19783810c05 | 37 | void Bell() { |
sb8718 | 130:d19783810c05 | 38 | |
sb8718 | 130:d19783810c05 | 39 | if(m_distance > 100.0) { |
sb8718 | 130:d19783810c05 | 40 | sing = false; |
sb8718 | 130:d19783810c05 | 41 | m_off(); |
sb8718 | 130:d19783810c05 | 42 | } else if(sing) { |
sb8718 | 130:d19783810c05 | 43 | m_on(); |
sb8718 | 130:d19783810c05 | 44 | sing = false; |
sb8718 | 130:d19783810c05 | 45 | } else { |
sb8718 | 130:d19783810c05 | 46 | m_off(); |
sb8718 | 130:d19783810c05 | 47 | sing = true; |
sb8718 | 130:d19783810c05 | 48 | } |
sb8718 | 130:d19783810c05 | 49 | } |
sb8718 | 129:53f2df333d65 | 50 | int main() { |
sb8718 | 129:53f2df333d65 | 51 | |
sb8718 | 129:53f2df333d65 | 52 | trigger = 0; |
sb8718 | 129:53f2df333d65 | 53 | pc.printf("\r\nWelcome to Utrasonic Sensor Lab!\r\n");; |
sb8718 | 129:53f2df333d65 | 54 | |
sb8718 | 129:53f2df333d65 | 55 | while(1) { |
sb8718 | 129:53f2df333d65 | 56 | |
sb8718 | 129:53f2df333d65 | 57 | timer1.reset(); |
sb8718 | 129:53f2df333d65 | 58 | trigger = 1; |
sb8718 | 129:53f2df333d65 | 59 | wait_us(10.0); |
sb8718 | 129:53f2df333d65 | 60 | trigger = 0; |
sb8718 | 129:53f2df333d65 | 61 | |
sb8718 | 129:53f2df333d65 | 62 | while(echo == 0) {} |
sb8718 | 129:53f2df333d65 | 63 | timer1.start(); |
sb8718 | 129:53f2df333d65 | 64 | while(echo == 1) {} |
sb8718 | 129:53f2df333d65 | 65 | timer1.stop(); |
sb8718 | 130:d19783810c05 | 66 | m_distance = timer1.read_us()/58.0; |
sb8718 | 130:d19783810c05 | 67 | pc.printf("The distance is %f [cm] \n\r", m_distance); |
sb8718 | 130:d19783810c05 | 68 | |
sb8718 | 130:d19783810c05 | 69 | |
sb8718 | 130:d19783810c05 | 70 | ticker.detach(); |
sb8718 | 130:d19783810c05 | 71 | if(m_distance / 200 < 0.05) { |
sb8718 | 130:d19783810c05 | 72 | ticker.attach(&Bell, 0.05); |
sb8718 | 130:d19783810c05 | 73 | |
sb8718 | 130:d19783810c05 | 74 | } else { |
sb8718 | 130:d19783810c05 | 75 | ticker.attach(&Bell, m_distance / 200); |
sb8718 | 130:d19783810c05 | 76 | } |
sb8718 | 120:a1dd83d9c036 | 77 | |
sb8718 | 129:53f2df333d65 | 78 | ThisThread::sleep_for(1000); |
sb8718 | 118:88f30fadf08f | 79 | } |
sb8718 | 129:53f2df333d65 | 80 | |
sb8718 | 129:53f2df333d65 | 81 | |
sb8718 | 129:53f2df333d65 | 82 | return 1; |
sb8718 | 128:29911670c7fd | 83 | } |
sb8718 | 128:29911670c7fd | 84 | |
sb8718 | 128:29911670c7fd | 85 |