圧電ブザーをwaitなしで好きなように鳴らすライブラリ
Dependents: Tourobo2022_TBCMotorDriver
buzzer.cpp@3:a5296d97ba97, 2019-10-22 (annotated)
- Committer:
- YutaTogashi
- Date:
- Tue Oct 22 04:05:17 2019 +0000
- Revision:
- 3:a5296d97ba97
- Parent:
- 1:96bd2135c3bf
1022
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
YutaTogashi | 0:97f383c12e42 | 1 | #include "buzzer.h" |
YutaTogashi | 0:97f383c12e42 | 2 | |
YutaTogashi | 0:97f383c12e42 | 3 | buzzer::buzzer(PinName buzzerPin) : _buzzer(buzzerPin) { |
YutaTogashi | 0:97f383c12e42 | 4 | _buzzer = 0; |
YutaTogashi | 0:97f383c12e42 | 5 | _counter = 0; |
YutaTogashi | 0:97f383c12e42 | 6 | _setCount = 0; |
YutaTogashi | 0:97f383c12e42 | 7 | _timerFlag = 0; |
YutaTogashi | 1:96bd2135c3bf | 8 | _loopFlag = 0; |
YutaTogashi | 0:97f383c12e42 | 9 | } |
YutaTogashi | 0:97f383c12e42 | 10 | |
YutaTogashi | 0:97f383c12e42 | 11 | void buzzer::output(unsigned int count,float period) { |
YutaTogashi | 0:97f383c12e42 | 12 | if(!(_timerFlag)) { |
YutaTogashi | 0:97f383c12e42 | 13 | _timer.attach(this,&buzzer::timerFunction,period); |
YutaTogashi | 0:97f383c12e42 | 14 | _timerFlag = true; |
YutaTogashi | 0:97f383c12e42 | 15 | _setCount = count; |
YutaTogashi | 0:97f383c12e42 | 16 | } |
YutaTogashi | 0:97f383c12e42 | 17 | } |
YutaTogashi | 0:97f383c12e42 | 18 | |
YutaTogashi | 0:97f383c12e42 | 19 | void buzzer::output(bool buzzerStates) { |
YutaTogashi | 0:97f383c12e42 | 20 | _timer.detach(); |
YutaTogashi | 0:97f383c12e42 | 21 | _timerFlag = false; |
YutaTogashi | 0:97f383c12e42 | 22 | _buzzer = buzzerStates; |
YutaTogashi | 0:97f383c12e42 | 23 | } |
YutaTogashi | 0:97f383c12e42 | 24 | |
YutaTogashi | 1:96bd2135c3bf | 25 | void buzzer::output(float period) { |
YutaTogashi | 1:96bd2135c3bf | 26 | if(!(_timerFlag)) { |
YutaTogashi | 1:96bd2135c3bf | 27 | _timer.attach(this,&buzzer::timerFunction,period); |
YutaTogashi | 1:96bd2135c3bf | 28 | _timerFlag = true; |
YutaTogashi | 1:96bd2135c3bf | 29 | //_setCount = count; |
YutaTogashi | 1:96bd2135c3bf | 30 | _loopFlag = true; |
YutaTogashi | 1:96bd2135c3bf | 31 | } |
YutaTogashi | 1:96bd2135c3bf | 32 | } |
YutaTogashi | 1:96bd2135c3bf | 33 | |
YutaTogashi | 0:97f383c12e42 | 34 | void buzzer::stop() { |
YutaTogashi | 0:97f383c12e42 | 35 | _timer.detach(); |
YutaTogashi | 0:97f383c12e42 | 36 | _timerFlag = false; |
YutaTogashi | 0:97f383c12e42 | 37 | _buzzer = 0; |
YutaTogashi | 1:96bd2135c3bf | 38 | _loopFlag = 0; |
YutaTogashi | 1:96bd2135c3bf | 39 | _counter = 0; |
YutaTogashi | 0:97f383c12e42 | 40 | } |
YutaTogashi | 0:97f383c12e42 | 41 | |
YutaTogashi | 0:97f383c12e42 | 42 | void buzzer::timerFunction() { |
YutaTogashi | 1:96bd2135c3bf | 43 | if(_loopFlag) { |
YutaTogashi | 0:97f383c12e42 | 44 | _buzzer =! _buzzer; |
YutaTogashi | 0:97f383c12e42 | 45 | } else { |
YutaTogashi | 1:96bd2135c3bf | 46 | if(_counter < _setCount * 2) { |
YutaTogashi | 1:96bd2135c3bf | 47 | _buzzer =! _buzzer; |
YutaTogashi | 1:96bd2135c3bf | 48 | _counter++; |
YutaTogashi | 1:96bd2135c3bf | 49 | } else { |
YutaTogashi | 1:96bd2135c3bf | 50 | _buzzer = 0; |
YutaTogashi | 1:96bd2135c3bf | 51 | _counter = 0; |
YutaTogashi | 1:96bd2135c3bf | 52 | _timer.detach(); |
YutaTogashi | 1:96bd2135c3bf | 53 | _timerFlag = false; |
YutaTogashi | 1:96bd2135c3bf | 54 | } |
YutaTogashi | 1:96bd2135c3bf | 55 | } |
YutaTogashi | 0:97f383c12e42 | 56 | } |