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

Dependents:   Tourobo2022_TBCMotorDriver

Revision:
1:96bd2135c3bf
Parent:
0:97f383c12e42
--- a/buzzer.cpp	Thu Oct 03 09:34:57 2019 +0000
+++ b/buzzer.cpp	Fri Oct 04 10:23:05 2019 +0000
@@ -5,6 +5,7 @@
     _counter = 0;
     _setCount = 0;
     _timerFlag = 0;
+    _loopFlag = 0;
 }
 
 void buzzer::output(unsigned int count,float period) {
@@ -21,19 +22,35 @@
     _buzzer = buzzerStates;
 }
 
+void buzzer::output(float period) {
+    if(!(_timerFlag)) {
+        _timer.attach(this,&buzzer::timerFunction,period);
+        _timerFlag = true;
+        //_setCount = count;
+        _loopFlag = true;
+    }
+}
+
 void buzzer::stop() {
     _timer.detach();
     _timerFlag = false;
     _buzzer = 0;
+    _loopFlag = 0;
+    _counter = 0;
 }
 
 void buzzer::timerFunction() {
-    if(_counter < _setCount * 2) {
+    if(_loopFlag) {
         _buzzer =! _buzzer;
-        _counter++;
     } else {
-        _buzzer = 0;
-        _timer.detach();
-        _timerFlag = false;
-    }   
+        if(_counter < _setCount * 2) {
+            _buzzer =! _buzzer;
+            _counter++;
+        } else {
+            _buzzer = 0;
+            _counter = 0;
+            _timer.detach();
+            _timerFlag = false;
+        }  
+    } 
 }
\ No newline at end of file