Andy Pomfret
/
UoY-32C-lab7-class
Template project for University of York ELE00032C Lab 7
main.cpp@1:dc9328c6acaa, 2021-02-04 (annotated)
- Committer:
- ajp109
- Date:
- Thu Feb 04 17:15:15 2021 +0000
- Revision:
- 1:dc9328c6acaa
- Parent:
- 0:77209603a6fe
Initial commit (lab7-class)
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
ajp109 | 0:77209603a6fe | 1 | #include "mbed.h" |
ajp109 | 0:77209603a6fe | 2 | |
ajp109 | 1:dc9328c6acaa | 3 | class Flasher { |
ajp109 | 1:dc9328c6acaa | 4 | |
ajp109 | 1:dc9328c6acaa | 5 | DigitalOut pin_; |
ajp109 | 1:dc9328c6acaa | 6 | Ticker ticker_; |
ajp109 | 1:dc9328c6acaa | 7 | Timeout timeout_; |
ajp109 | 1:dc9328c6acaa | 8 | chrono::milliseconds onTime_; |
ajp109 | 1:dc9328c6acaa | 9 | chrono::milliseconds offTime_; |
ajp109 | 1:dc9328c6acaa | 10 | |
ajp109 | 1:dc9328c6acaa | 11 | void on() { |
ajp109 | 1:dc9328c6acaa | 12 | pin_ = true; |
ajp109 | 1:dc9328c6acaa | 13 | timeout_.attach(callback(this, &Flasher::off), onTime_); |
ajp109 | 1:dc9328c6acaa | 14 | } |
ajp109 | 1:dc9328c6acaa | 15 | |
ajp109 | 1:dc9328c6acaa | 16 | void off() { |
ajp109 | 1:dc9328c6acaa | 17 | pin_ = false; |
ajp109 | 1:dc9328c6acaa | 18 | } |
ajp109 | 1:dc9328c6acaa | 19 | |
ajp109 | 1:dc9328c6acaa | 20 | public: |
ajp109 | 1:dc9328c6acaa | 21 | |
ajp109 | 1:dc9328c6acaa | 22 | Flasher(PinName pin, chrono::milliseconds const & onTime, chrono::milliseconds const & offTime) : |
ajp109 | 1:dc9328c6acaa | 23 | pin_(pin), onTime_(onTime), offTime_(offTime) { } |
ajp109 | 1:dc9328c6acaa | 24 | |
ajp109 | 1:dc9328c6acaa | 25 | void start() { |
ajp109 | 1:dc9328c6acaa | 26 | ticker_.attach(callback(this, &Flasher::on), onTime_ + offTime_); |
ajp109 | 1:dc9328c6acaa | 27 | } |
ajp109 | 1:dc9328c6acaa | 28 | |
ajp109 | 1:dc9328c6acaa | 29 | void stop() { |
ajp109 | 1:dc9328c6acaa | 30 | ticker_.detach(); |
ajp109 | 1:dc9328c6acaa | 31 | } |
ajp109 | 1:dc9328c6acaa | 32 | |
ajp109 | 1:dc9328c6acaa | 33 | }; |
ajp109 | 1:dc9328c6acaa | 34 | |
ajp109 | 1:dc9328c6acaa | 35 | |
ajp109 | 1:dc9328c6acaa | 36 | |
ajp109 | 1:dc9328c6acaa | 37 | |
ajp109 | 1:dc9328c6acaa | 38 | Flasher green(D2, 500ms, 2500ms); |
ajp109 | 1:dc9328c6acaa | 39 | Flasher red(D3, 300ms, 1700ms); |
ajp109 | 1:dc9328c6acaa | 40 | |
ajp109 | 0:77209603a6fe | 41 | int main() |
ajp109 | 0:77209603a6fe | 42 | { |
ajp109 | 1:dc9328c6acaa | 43 | green.start(); |
ajp109 | 1:dc9328c6acaa | 44 | red.start(); |
ajp109 | 0:77209603a6fe | 45 | while (true); |
ajp109 | 0:77209603a6fe | 46 | } |