Tom Belpasso
/
CylonLED
Cylon like sequencer for on board LEDs demo. Turns on LED and shifts it left to right and back again.
main.cpp
- Committer:
- tombelpasso
- Date:
- 2009-12-30
- Revision:
- 0:1bf2c942b27f
File content as of revision 0:1bf2c942b27f:
/* * Cylon like sequencer for on board LEDs demo. * * Turns on LED and shifts it left to right and back again. * * Copyright (C) <2009> Tom Belpassso <tombelpasso@gmail.com> * * This is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * OneWire/DS18S20 is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * a copy of the GNU General Public License, see <http://www.gnu.org/licenses/>. */ #include "mbed.h" // configuration equates // time between shifting to next LED #define SHIFT_TIME 0.04 // total time for sequence #define REPEAT_TIME 1.0 // blank time between sequences #define BLANK_TIME REPEAT_TIME - 9 * SHIFT_TIME BusOut leds(LED1, LED2, LED3, LED4); int main() { // i is used to turn on first LED in the sequence short i = 1; bool dir = 0 ; // 0 shift left, 1 shift right leds = 0; while(1) { if (dir) leds = (leds >> 1) + i; // shift down else leds = (leds << 1) + i; // shift wait(SHIFT_TIME); if (leds != 0) { // if any leds lit, don't turn any more on i = 0; } // see if all LEDs are off if (leds == 0) { // leds = 0 ; if (dir) { dir = 0 ; // toggle directon i = 1; // LSB LED on next shift wait(BLANK_TIME); } else { dir = 1; i = 8; // MSB LED on next shift wait(SHIFT_TIME); } } } }