A blinky variation for the mBuino with a bunch of different blink modes, deep-sleeping between iterations.
Dependencies: Crypto RNG mbed WakeUp
Fork of mBuinoBlinky by
mBuino blinky experiments.
main.cpp
- Committer:
- mikewebkist
- Date:
- 2014-09-06
- Revision:
- 7:c9e707fc8aa3
- Parent:
- 6:fe79549495e0
- Child:
- 8:41a5757f3bb9
File content as of revision 7:c9e707fc8aa3:
#include "mbed.h" #include "RNG/Random.h" DigitalOut LED[] = {(P0_7), (P0_8), (P0_2), (P0_20), (P1_19), (P0_17), (P0_23)};// declare 7 LEDs int rndLED = 0; Random RNG = Random(); void sweep(float delayTime) { for(int x=0; x<7; x++) { LED[x] = 1; wait(delayTime); } for(int x=6; x>=0; x--) { LED[x] = 0; wait(delayTime); } } void bounceMode(float delayTime) { for(int x=0; x<7; x++) { LED[x] = 1; wait(delayTime); LED[x] = 0; } for(int x=6; x>=0; x--) { LED[x] = 1; wait(delayTime); LED[x] = 0; } } void pileMode(float delayTime) { for(int x=0; x<7; x++) { for(int y=0; y<(6-x); y++) { LED[y]=1; wait(delayTime); LED[y]=0; } LED[6-x]=1; } for(int x=0; x<7; x++) { LED[x] = 0; } } void randomMode(float delayTime) { for(int x=0; x<128; x++) { rndLED = (int) RNG.getByte() % 8; LED[rndLED]=1; wait(0.01); LED[rndLED]=0; wait(delayTime); } } void binaryMode(float delayTime) { for(int n=0; n<128; n++) { for(int b=0; b<7; b++) { if(n & (1 << b)) { LED[6 - b]=1; } } wait(delayTime); for(int b=0; b<7; b++) { LED[b]=0; } } } void grayMode(float delayTime) { for(int b=0; b<7; b++) { LED[b]=0; } int prev=0; for(int n=1; n<128; n++) { int prevGray = (prev >> 1) ^ prev; int gray = (n >> 1) ^ n; int diffBit = prevGray ^ gray; for(int b=0; b<7; b++) { if(diffBit & (1 << b)) { LED[6 - b] = (diffBit & prevGray) ? 0 : 1; break; } } prev = n; wait(delayTime); } } int main() { while(1) { sweep(0.05); binaryMode(0.05); sweep(0.05); randomMode(0.05); sweep(0.05); grayMode(0.05); sweep(0.05); bounceMode(0.05); sweep(0.05); pileMode(0.05); // bounceMode(0.1); } }