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 Aron Phillips

mBuino blinky experiments.

Committer:
mikewebkist
Date:
Sat Sep 06 01:07:01 2014 +0000
Revision:
7:c9e707fc8aa3
Parent:
6:fe79549495e0
Child:
8:41a5757f3bb9
rework gray mode (so it really only toggles the changed bit) and add pile mode (suggested by Antje.)

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Experiment626 0:aa0e1ad88af5 1 #include "mbed.h"
mikewebkist 2:fd6008aa85cd 2 #include "RNG/Random.h"
Experiment626 0:aa0e1ad88af5 3
Experiment626 0:aa0e1ad88af5 4 DigitalOut LED[] = {(P0_7), (P0_8), (P0_2), (P0_20), (P1_19), (P0_17), (P0_23)};// declare 7 LEDs
Experiment626 0:aa0e1ad88af5 5
mikewebkist 2:fd6008aa85cd 6 int rndLED = 0;
mikewebkist 2:fd6008aa85cd 7 Random RNG = Random();
Experiment626 0:aa0e1ad88af5 8
mikewebkist 4:eea1a71b9a11 9 void sweep(float delayTime)
Experiment626 0:aa0e1ad88af5 10 {
mikewebkist 1:47c61bf9c81e 11 for(int x=0; x<7; x++)
Experiment626 0:aa0e1ad88af5 12 {
mikewebkist 1:47c61bf9c81e 13 LED[x] = 1;
mikewebkist 1:47c61bf9c81e 14 wait(delayTime);
Experiment626 0:aa0e1ad88af5 15 }
mikewebkist 2:fd6008aa85cd 16
mikewebkist 2:fd6008aa85cd 17 for(int x=6; x>=0; x--)
Experiment626 0:aa0e1ad88af5 18 {
mikewebkist 2:fd6008aa85cd 19 LED[x] = 0;
mikewebkist 1:47c61bf9c81e 20 wait(delayTime);
Experiment626 0:aa0e1ad88af5 21 }
mikewebkist 4:eea1a71b9a11 22 }
mikewebkist 4:eea1a71b9a11 23
mikewebkist 6:fe79549495e0 24 void bounceMode(float delayTime)
mikewebkist 6:fe79549495e0 25 {
mikewebkist 6:fe79549495e0 26 for(int x=0; x<7; x++)
mikewebkist 6:fe79549495e0 27 {
mikewebkist 6:fe79549495e0 28 LED[x] = 1;
mikewebkist 6:fe79549495e0 29 wait(delayTime);
mikewebkist 6:fe79549495e0 30 LED[x] = 0;
mikewebkist 6:fe79549495e0 31 }
mikewebkist 6:fe79549495e0 32
mikewebkist 6:fe79549495e0 33 for(int x=6; x>=0; x--)
mikewebkist 6:fe79549495e0 34 {
mikewebkist 6:fe79549495e0 35 LED[x] = 1;
mikewebkist 6:fe79549495e0 36 wait(delayTime);
mikewebkist 6:fe79549495e0 37 LED[x] = 0;
mikewebkist 6:fe79549495e0 38 }
mikewebkist 6:fe79549495e0 39 }
mikewebkist 6:fe79549495e0 40
mikewebkist 7:c9e707fc8aa3 41 void pileMode(float delayTime)
mikewebkist 7:c9e707fc8aa3 42 {
mikewebkist 7:c9e707fc8aa3 43 for(int x=0; x<7; x++)
mikewebkist 7:c9e707fc8aa3 44 {
mikewebkist 7:c9e707fc8aa3 45 for(int y=0; y<(6-x); y++) {
mikewebkist 7:c9e707fc8aa3 46 LED[y]=1;
mikewebkist 7:c9e707fc8aa3 47 wait(delayTime);
mikewebkist 7:c9e707fc8aa3 48 LED[y]=0;
mikewebkist 7:c9e707fc8aa3 49 }
mikewebkist 7:c9e707fc8aa3 50 LED[6-x]=1;
mikewebkist 7:c9e707fc8aa3 51 }
mikewebkist 7:c9e707fc8aa3 52
mikewebkist 7:c9e707fc8aa3 53 for(int x=0; x<7; x++)
mikewebkist 7:c9e707fc8aa3 54 {
mikewebkist 7:c9e707fc8aa3 55 LED[x] = 0;
mikewebkist 7:c9e707fc8aa3 56 }
mikewebkist 7:c9e707fc8aa3 57 }
mikewebkist 7:c9e707fc8aa3 58
mikewebkist 5:48b81f5fd186 59 void randomMode(float delayTime)
mikewebkist 4:eea1a71b9a11 60 {
mikewebkist 5:48b81f5fd186 61 for(int x=0; x<128; x++) {
mikewebkist 5:48b81f5fd186 62 rndLED = (int) RNG.getByte() % 8;
mikewebkist 5:48b81f5fd186 63 LED[rndLED]=1;
mikewebkist 6:fe79549495e0 64 wait(0.01);
mikewebkist 6:fe79549495e0 65 LED[rndLED]=0;
mikewebkist 5:48b81f5fd186 66 wait(delayTime);
mikewebkist 5:48b81f5fd186 67 }
mikewebkist 5:48b81f5fd186 68 }
mikewebkist 5:48b81f5fd186 69
mikewebkist 5:48b81f5fd186 70 void binaryMode(float delayTime) {
mikewebkist 3:f3e484ae4439 71 for(int n=0; n<128; n++) {
mikewebkist 3:f3e484ae4439 72 for(int b=0; b<7; b++) {
mikewebkist 3:f3e484ae4439 73 if(n & (1 << b)) {
mikewebkist 3:f3e484ae4439 74 LED[6 - b]=1;
mikewebkist 3:f3e484ae4439 75 }
mikewebkist 3:f3e484ae4439 76 }
mikewebkist 5:48b81f5fd186 77 wait(delayTime);
mikewebkist 3:f3e484ae4439 78 for(int b=0; b<7; b++) {
mikewebkist 3:f3e484ae4439 79 LED[b]=0;
mikewebkist 3:f3e484ae4439 80 }
mikewebkist 3:f3e484ae4439 81 }
mikewebkist 5:48b81f5fd186 82 }
mikewebkist 5:48b81f5fd186 83
mikewebkist 5:48b81f5fd186 84 void grayMode(float delayTime) {
mikewebkist 7:c9e707fc8aa3 85 for(int b=0; b<7; b++) { LED[b]=0; }
mikewebkist 7:c9e707fc8aa3 86
mikewebkist 7:c9e707fc8aa3 87 int prev=0;
mikewebkist 7:c9e707fc8aa3 88 for(int n=1; n<128; n++) {
mikewebkist 7:c9e707fc8aa3 89 int prevGray = (prev >> 1) ^ prev;
mikewebkist 4:eea1a71b9a11 90 int gray = (n >> 1) ^ n;
mikewebkist 7:c9e707fc8aa3 91 int diffBit = prevGray ^ gray;
mikewebkist 4:eea1a71b9a11 92 for(int b=0; b<7; b++) {
mikewebkist 7:c9e707fc8aa3 93 if(diffBit & (1 << b)) {
mikewebkist 7:c9e707fc8aa3 94 LED[6 - b] = (diffBit & prevGray) ? 0 : 1;
mikewebkist 7:c9e707fc8aa3 95 break;
mikewebkist 4:eea1a71b9a11 96 }
mikewebkist 4:eea1a71b9a11 97 }
mikewebkist 7:c9e707fc8aa3 98 prev = n;
mikewebkist 5:48b81f5fd186 99 wait(delayTime);
mikewebkist 4:eea1a71b9a11 100 }
mikewebkist 5:48b81f5fd186 101 }
mikewebkist 5:48b81f5fd186 102
mikewebkist 5:48b81f5fd186 103 int main()
mikewebkist 5:48b81f5fd186 104 {
mikewebkist 5:48b81f5fd186 105 while(1)
mikewebkist 5:48b81f5fd186 106 {
mikewebkist 5:48b81f5fd186 107 sweep(0.05);
mikewebkist 5:48b81f5fd186 108 binaryMode(0.05);
mikewebkist 5:48b81f5fd186 109 sweep(0.05);
mikewebkist 7:c9e707fc8aa3 110 randomMode(0.05);
mikewebkist 5:48b81f5fd186 111 sweep(0.05);
mikewebkist 5:48b81f5fd186 112 grayMode(0.05);
mikewebkist 6:fe79549495e0 113 sweep(0.05);
mikewebkist 7:c9e707fc8aa3 114 bounceMode(0.05);
mikewebkist 7:c9e707fc8aa3 115 sweep(0.05);
mikewebkist 7:c9e707fc8aa3 116 pileMode(0.05);
mikewebkist 7:c9e707fc8aa3 117 // bounceMode(0.1);
Experiment626 0:aa0e1ad88af5 118 }
Experiment626 0:aa0e1ad88af5 119 }