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 0:c5384fa0fc28 1 #include "mbed.h"
suupen 0:c5384fa0fc28 2 #include "testLed.h"
suupen 0:c5384fa0fc28 3
suupen 1:d4291fd3a94c 4 void tick(void);
suupen 1:d4291fd3a94c 5 Ticker ticker;
suupen 1:d4291fd3a94c 6 DigitalOut myled3(LED3);
suupen 3:2a8fdcc54c95 7 DigitalOut dbgLedPort(p25);
suupen 1:d4291fd3a94c 8
suupen 0:c5384fa0fc28 9 DigitalOut testLed(LED1);
suupen 0:c5384fa0fc28 10
suupen 0:c5384fa0fc28 11 Timer timerTestLed;
suupen 0:c5384fa0fc28 12 bool brinkRequest = false;
suupen 0:c5384fa0fc28 13
suupen 1:d4291fd3a94c 14
suupen 1:d4291fd3a94c 15
suupen 0:c5384fa0fc28 16 void testLedInitalize(void)
suupen 0:c5384fa0fc28 17 {
suupen 0:c5384fa0fc28 18 timerTestLed.start();
suupen 0:c5384fa0fc28 19 timerTestLed.reset();
suupen 0:c5384fa0fc28 20 brinkRequest = false;
suupen 0:c5384fa0fc28 21
suupen 1:d4291fd3a94c 22 ticker.attach_us(&tick, 1000);
suupen 0:c5384fa0fc28 23 }
suupen 0:c5384fa0fc28 24
suupen 0:c5384fa0fc28 25 uint8_t brinkPosition = 0; // brinkPattern[][ここ]
suupen 0:c5384fa0fc28 26 uint16_t brinkPriod = 0; // 点滅時間 1/1 ([ms]/count)
suupen 1:d4291fd3a94c 27 bool testLedLevel = false; // false:Off true:On
suupen 0:c5384fa0fc28 28 uint32_t brinkPattern[][2] = {
suupen 0:c5384fa0fc28 29 {1,100},
suupen 0:c5384fa0fc28 30 {0,100},
suupen 1:d4291fd3a94c 31
suupen 2:f22110fb3925 32 {1,200},
suupen 2:f22110fb3925 33 {0,200},
suupen 1:d4291fd3a94c 34
suupen 2:f22110fb3925 35 {1,300},
suupen 2:f22110fb3925 36 {0,300},
suupen 1:d4291fd3a94c 37
suupen 2:f22110fb3925 38 {1,400},
suupen 2:f22110fb3925 39 {0,400},
suupen 1:d4291fd3a94c 40
suupen 1:d4291fd3a94c 41 {1,500},
suupen 1:d4291fd3a94c 42 {0,500},
suupen 1:d4291fd3a94c 43
suupen 0:c5384fa0fc28 44 {1,100},
suupen 2:f22110fb3925 45 {0,200},
suupen 1:d4291fd3a94c 46
suupen 2:f22110fb3925 47
suupen 1:d4291fd3a94c 48
suupen 1:d4291fd3a94c 49
suupen 0:c5384fa0fc28 50 {2,0} // end
suupen 0:c5384fa0fc28 51 };
suupen 0:c5384fa0fc28 52
suupen 1:d4291fd3a94c 53 void tick(void)
suupen 1:d4291fd3a94c 54 {
suupen 3:2a8fdcc54c95 55 dbgLedPort = !dbgLedPort;
suupen 1:d4291fd3a94c 56 myled3 = !myled3;
suupen 1:d4291fd3a94c 57 if(testLedLevel == true) {
suupen 1:d4291fd3a94c 58 testLed = !testLed;
suupen 1:d4291fd3a94c 59 } else {
suupen 1:d4291fd3a94c 60 testLed = 0;
suupen 1:d4291fd3a94c 61 }
suupen 1:d4291fd3a94c 62 }
suupen 1:d4291fd3a94c 63
suupen 1:d4291fd3a94c 64
suupen 1:d4291fd3a94c 65
suupen 0:c5384fa0fc28 66 bool testLedMain(bool request)
suupen 0:c5384fa0fc28 67 {
suupen 0:c5384fa0fc28 68 if(brinkRequest == false) {
suupen 0:c5384fa0fc28 69 if(request == true) {
suupen 0:c5384fa0fc28 70 brinkRequest = true;
suupen 0:c5384fa0fc28 71 brinkPosition = 0;
suupen 1:d4291fd3a94c 72 testLedLevel = brinkPattern[brinkPosition][0];
suupen 0:c5384fa0fc28 73 brinkPriod = brinkPattern[brinkPosition][1];
suupen 0:c5384fa0fc28 74
suupen 0:c5384fa0fc28 75 timerTestLed.reset();
suupen 0:c5384fa0fc28 76 } else {
suupen 0:c5384fa0fc28 77 // nothing
suupen 0:c5384fa0fc28 78 }
suupen 0:c5384fa0fc28 79 } else {
suupen 0:c5384fa0fc28 80 if(timerTestLed.read_ms() > brinkPriod) {
suupen 0:c5384fa0fc28 81 brinkPosition++;
suupen 0:c5384fa0fc28 82 if(brinkPattern[brinkPosition][0] == 2) {
suupen 1:d4291fd3a94c 83 testLedLevel = 0;
suupen 0:c5384fa0fc28 84 brinkRequest = false;
suupen 0:c5384fa0fc28 85 } else {
suupen 1:d4291fd3a94c 86 testLedLevel = brinkPattern[brinkPosition][0];
suupen 0:c5384fa0fc28 87 brinkPriod = brinkPattern[brinkPosition][1];
suupen 1:d4291fd3a94c 88 timerTestLed.reset();
suupen 0:c5384fa0fc28 89
suupen 0:c5384fa0fc28 90 }
suupen 0:c5384fa0fc28 91 }
suupen 0:c5384fa0fc28 92 }
suupen 0:c5384fa0fc28 93 return (brinkRequest);
suupen 0:c5384fa0fc28 94 }