LEDの点滅や、ブザーのOn,Offの周期測定をおこなう。 搬送波の周期は測定できない(10ms周期以上のON,OFF)

Dependencies:   AQM0802A DigitalSw mbed

Committer:
suupen
Date:
Thu Jun 08 04:46:15 2017 +0000
Revision:
5:f137bb7eeda6
Parent:
3:2a8fdcc54c95
???;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
suupen 3:2a8fdcc54c95 1 #include "mbed.h"
suupen 3:2a8fdcc54c95 2 #include "testSound.h"
suupen 3:2a8fdcc54c95 3
suupen 3:2a8fdcc54c95 4 void tickSound(void);
suupen 3:2a8fdcc54c95 5 Ticker tickSounder;
suupen 3:2a8fdcc54c95 6
suupen 5:f137bb7eeda6 7 DigitalOut dbgSoundPort(p22);
suupen 5:f137bb7eeda6 8 DigitalOut testSound(p21);
suupen 3:2a8fdcc54c95 9
suupen 3:2a8fdcc54c95 10 Timer timerTestSound;
suupen 3:2a8fdcc54c95 11 bool brinkRequestSound = false;
suupen 3:2a8fdcc54c95 12
suupen 3:2a8fdcc54c95 13
suupen 3:2a8fdcc54c95 14
suupen 3:2a8fdcc54c95 15 void testSoundInitalize(void)
suupen 3:2a8fdcc54c95 16 {
suupen 3:2a8fdcc54c95 17 timerTestSound.start();
suupen 3:2a8fdcc54c95 18 timerTestSound.reset();
suupen 3:2a8fdcc54c95 19 brinkRequestSound = false;
suupen 3:2a8fdcc54c95 20
suupen 3:2a8fdcc54c95 21 tickSounder.attach_us(&tickSound, 250);
suupen 3:2a8fdcc54c95 22 }
suupen 3:2a8fdcc54c95 23
suupen 3:2a8fdcc54c95 24 uint8_t brinkPositionSound = 0; // brinkPatternSound[][ここ]
suupen 3:2a8fdcc54c95 25 uint16_t brinkPriodSound = 0; // 点滅時間 1/1 ([ms]/count)
suupen 3:2a8fdcc54c95 26 bool testSoundLevel = false; // false:Off true:On
suupen 3:2a8fdcc54c95 27 uint32_t brinkPatternSound[][2] = {
suupen 3:2a8fdcc54c95 28 {1,100},
suupen 3:2a8fdcc54c95 29 {0,100},
suupen 3:2a8fdcc54c95 30
suupen 3:2a8fdcc54c95 31 {1,200},
suupen 3:2a8fdcc54c95 32 {0,200},
suupen 3:2a8fdcc54c95 33
suupen 3:2a8fdcc54c95 34 {1,300},
suupen 3:2a8fdcc54c95 35 {0,300},
suupen 3:2a8fdcc54c95 36
suupen 3:2a8fdcc54c95 37 {1,400},
suupen 3:2a8fdcc54c95 38 {0,400},
suupen 3:2a8fdcc54c95 39
suupen 3:2a8fdcc54c95 40 {1,500},
suupen 3:2a8fdcc54c95 41 {0,500},
suupen 3:2a8fdcc54c95 42
suupen 3:2a8fdcc54c95 43 {1,100},
suupen 3:2a8fdcc54c95 44 {0,200},
suupen 3:2a8fdcc54c95 45
suupen 3:2a8fdcc54c95 46
suupen 3:2a8fdcc54c95 47
suupen 3:2a8fdcc54c95 48
suupen 3:2a8fdcc54c95 49 {2,0} // end
suupen 3:2a8fdcc54c95 50 };
suupen 3:2a8fdcc54c95 51
suupen 3:2a8fdcc54c95 52 void tickSound(void)
suupen 3:2a8fdcc54c95 53 {
suupen 3:2a8fdcc54c95 54 dbgSoundPort = !dbgSoundPort;
suupen 3:2a8fdcc54c95 55 if(testSoundLevel == true) {
suupen 3:2a8fdcc54c95 56 testSound = !testSound;
suupen 3:2a8fdcc54c95 57 } else {
suupen 3:2a8fdcc54c95 58 testSound = 0;
suupen 3:2a8fdcc54c95 59 }
suupen 3:2a8fdcc54c95 60 }
suupen 3:2a8fdcc54c95 61
suupen 3:2a8fdcc54c95 62
suupen 3:2a8fdcc54c95 63
suupen 3:2a8fdcc54c95 64 bool testSoundMain(bool request)
suupen 3:2a8fdcc54c95 65 {
suupen 3:2a8fdcc54c95 66 if(brinkRequestSound == false) {
suupen 3:2a8fdcc54c95 67 if(request == true) {
suupen 3:2a8fdcc54c95 68 brinkRequestSound = true;
suupen 3:2a8fdcc54c95 69 brinkPositionSound = 0;
suupen 3:2a8fdcc54c95 70 testSoundLevel = brinkPatternSound[brinkPositionSound][0];
suupen 3:2a8fdcc54c95 71 brinkPriodSound = brinkPatternSound[brinkPositionSound][1];
suupen 3:2a8fdcc54c95 72
suupen 3:2a8fdcc54c95 73 timerTestSound.reset();
suupen 3:2a8fdcc54c95 74 } else {
suupen 3:2a8fdcc54c95 75 // nothing
suupen 3:2a8fdcc54c95 76 }
suupen 3:2a8fdcc54c95 77 } else {
suupen 3:2a8fdcc54c95 78 if(timerTestSound.read_ms() > brinkPriodSound) {
suupen 3:2a8fdcc54c95 79 brinkPositionSound++;
suupen 3:2a8fdcc54c95 80 if(brinkPatternSound[brinkPositionSound][0] == 2) {
suupen 3:2a8fdcc54c95 81 testSoundLevel = 0;
suupen 3:2a8fdcc54c95 82 brinkRequestSound = false;
suupen 3:2a8fdcc54c95 83 } else {
suupen 3:2a8fdcc54c95 84 testSoundLevel = brinkPatternSound[brinkPositionSound][0];
suupen 3:2a8fdcc54c95 85 brinkPriodSound = brinkPatternSound[brinkPositionSound][1];
suupen 3:2a8fdcc54c95 86 timerTestSound.reset();
suupen 3:2a8fdcc54c95 87
suupen 3:2a8fdcc54c95 88 }
suupen 3:2a8fdcc54c95 89 }
suupen 3:2a8fdcc54c95 90 }
suupen 3:2a8fdcc54c95 91 return (brinkRequestSound);
suupen 3:2a8fdcc54c95 92 }