|
|
发表于 2013-11-27 20:24:01
|
显示全部楼层
- #define LED_PIN 1 //led 引脚
- enum LED_STATE
- {
- LED_ON,
- LED_OFF,
- };
- struct led_t
- {
- LED_STATE state;
- uint32_t timeout;
- };
- struct led_state_t
- {
- uint8_t i;
- uint32_t time;
- };
- #define LED_MAX_COUNT 4
- struct led_t g_led[LED_MAX_COUNT] =
- {
- {
- LED_ON, 100
- }
- ,
- {
- LED_OFF, 100
- }
- ,
- {
- LED_ON, 100
- }
- ,
- {
- LED_OFF, 700
- }
- ,
- };
- struct led_state_t g_led_state =
- {
- 0, 0
- };
- void setLed(struct led_t *led)
- {
- switch (led->state)
- {
- case LED_ON:
- digitalWrite(LED_PIN, LOW);
- break;
- case LED_OFF:
- digitalWrite(LED_PIN, HIGH);
- break;
- }
- g_led_state.time = millis() + led->timeout;
- }
- inline void checkLed()
- {
- if (millis() >= g_led_state.time)
- {
- g_led_state.i++;
- if (g_led_state.i >= LED_MAX_COUNT)
- g_led_state.i = 0;
- setLed(&g_led[g_led_state.i]);
- }
- }
- void setup()
- {
- pinMode(LED_PIN, OUTPUT);
- setLed(&g_led[0]);
- }
- void loop()
- {
- checkLed();
- }
复制代码 |
|