This is a very simple guide, reviewing the steps required to get Blinky working on an Mbed OS platform.

Dependencies:   RemoteIR

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?

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