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

Dependencies:   AQM0802A DigitalSw mbed

testLed.cpp

Committer:
suupen
Date:
2017-05-20
Revision:
0:c5384fa0fc28
Child:
1:d4291fd3a94c

File content as of revision 0:c5384fa0fc28:

#include "mbed.h"
#include "testLed.h"

DigitalOut testLed(LED1);

Timer timerTestLed;
bool brinkRequest = false;

void testLedInitalize(void)
{
    timerTestLed.start();
    timerTestLed.reset();
    brinkRequest = false;

}

uint8_t brinkPosition = 0;  // brinkPattern[][ここ]
uint16_t brinkPriod = 0;    // 点滅時間 1/1 ([ms]/count)
uint32_t brinkPattern[][2] = {
    {1,10},
    {0,10},
    
    {1,100},
    {0,100},
    
    {1,10},
    {0,10},
    
    {1,100},
    {0,100},
    
    {1,10},
    {0,10},
    
    {1,100},
    {0,100},
    
    {1,10},
    {0,10},
    
    {1,100},
    {0,100},
    
    {1,10},
    {0,10},
    
    {1,200},
    {0,300},
    
    {1,100},
    {0,100},
    
    {1,10},
    {0,10},
    
    {1,200},
    {0,300},
    
    {1,100},
    {0,100},
    
    {1,10},
    {0,10},
    
    {1,200},
    {0,300},
    
    {1,100},
    {0,100},
    
    {1,10},
    {0,10},
    
    {1,200},
    {0,300},
    
    {1,100},
    {0,100},
    
    {1,10},
    {0,10},
    
    {1,200},
    {0,300},
    
    {1,100},
    {0,100},
    
    {1,10},
    {0,10},
    
    {1,200},
    {0,300},
    
    {1,100},
    {0,100},
    
    {1,10},
    {0,10},
    
    {1,200},
    {0,300},
    
    {1,100},
    {0,100},
    
    {1,10},
    {0,10},
    
    {1,200},
    {0,300},
    
    {2,0}       // end
};

bool testLedMain(bool request)
{
    if(brinkRequest == false) {
        if(request == true) {
            brinkRequest = true;
            brinkPosition = 0;
            testLed = brinkPattern[brinkPosition][0];
            brinkPriod = brinkPattern[brinkPosition][1];

            timerTestLed.reset();
        } else {
            // nothing
        }
    } else {
        if(timerTestLed.read_ms() > brinkPriod) {
            brinkPosition++;
            if(brinkPattern[brinkPosition][0] == 2) {
                testLed = 0;
                brinkRequest = false;
            } else {
                testLed = brinkPattern[brinkPosition][0];
                brinkPriod = brinkPattern[brinkPosition][1];
            timerTestLed.reset();

            }
        }
    }
    return (brinkRequest);
}