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

Dependencies:   AQM0802A DigitalSw mbed

Committer:
suupen
Date:
Sat May 27 08:20:20 2017 +0000
Revision:
2:f22110fb3925
Parent:
1:d4291fd3a94c
Child:
3:2a8fdcc54c95
LED????????

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