LEDの点滅や、ブザーのOn,Offの周期測定をおこなう。 搬送波の周期は測定できない(10ms周期以上のON,OFF)
Dependencies: AQM0802A DigitalSw mbed
testLed.cpp@5:f137bb7eeda6, 2017-06-08 (annotated)
- Committer:
- suupen
- Date:
- Thu Jun 08 04:46:15 2017 +0000
- Revision:
- 5:f137bb7eeda6
- Parent:
- 3:2a8fdcc54c95
???;
Who changed what in which revision?
User | Revision | Line number | New 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 | } |