Template project for University of York ELE00032C Lab 7

Dependencies:   UoY-serial

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?

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