圧電ブザーをwaitなしで好きなように鳴らすライブラリ

Dependents:   Tourobo2022_TBCMotorDriver

Committer:
YutaTogashi
Date:
Fri Oct 04 10:23:05 2019 +0000
Revision:
1:96bd2135c3bf
Parent:
0:97f383c12e42
20191004

Who changed what in which revision?

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