Alberto Piganti
/
blip_dado
miniBLIP dado example
Fork of blip_rainbow by
main.cpp@4:55d1628dd2e5, 2015-12-01 (annotated)
- Committer:
- pighixxx
- Date:
- Tue Dec 01 14:26:03 2015 +0000
- Revision:
- 4:55d1628dd2e5
- Parent:
- 3:2d84c8262139
miniBLIP dado example
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
pighixxx | 4:55d1628dd2e5 | 1 | // miniblip led dado demo |
pighixxx | 3:2d84c8262139 | 2 | |
JacobBramley | 0:60499ad28ea9 | 3 | #include "mbed.h" |
JacobBramley | 1:ca76237d2965 | 4 | #include "neopixel.h" |
JacobBramley | 0:60499ad28ea9 | 5 | |
pighixxx | 3:2d84c8262139 | 6 | // Matrix led output pin |
pighixxx | 3:2d84c8262139 | 7 | #define DATA_PIN P0_9 |
JacobBramley | 0:60499ad28ea9 | 8 | |
pighixxx | 4:55d1628dd2e5 | 9 | #define ANALOG_PHOTO P0_16 |
pighixxx | 4:55d1628dd2e5 | 10 | #define ANALOG_POTENTIOMETER P0_22 |
pighixxx | 4:55d1628dd2e5 | 11 | #define ANALOG_BUZZER P0_8 |
pighixxx | 4:55d1628dd2e5 | 12 | #define DIGITAL_CIRCLE P0_12 |
pighixxx | 4:55d1628dd2e5 | 13 | |
pighixxx | 4:55d1628dd2e5 | 14 | AnalogIn ain(ANALOG_POTENTIOMETER); |
pighixxx | 4:55d1628dd2e5 | 15 | |
pighixxx | 4:55d1628dd2e5 | 16 | void fill_pixel(neopixel::Pixel buffer[25], int x, int y, int red, int green, int blue){ |
pighixxx | 4:55d1628dd2e5 | 17 | |
pighixxx | 4:55d1628dd2e5 | 18 | if(x<0) x=0; |
pighixxx | 4:55d1628dd2e5 | 19 | if(x>4) x=4; |
pighixxx | 4:55d1628dd2e5 | 20 | if(y<0) y=0; |
pighixxx | 4:55d1628dd2e5 | 21 | if(y>4) y=4; |
pighixxx | 4:55d1628dd2e5 | 22 | |
pighixxx | 4:55d1628dd2e5 | 23 | |
pighixxx | 4:55d1628dd2e5 | 24 | int posicion=x+y*5; |
pighixxx | 4:55d1628dd2e5 | 25 | buffer[posicion].red=red; |
pighixxx | 4:55d1628dd2e5 | 26 | buffer[posicion].green=green; |
pighixxx | 4:55d1628dd2e5 | 27 | buffer[posicion].blue=blue; |
pighixxx | 4:55d1628dd2e5 | 28 | } |
pighixxx | 4:55d1628dd2e5 | 29 | |
pighixxx | 4:55d1628dd2e5 | 30 | void void_matrix(neopixel::Pixel aux[25], int tam=25){ |
pighixxx | 4:55d1628dd2e5 | 31 | |
pighixxx | 4:55d1628dd2e5 | 32 | for(int i=0;i<tam;i++){ |
pighixxx | 4:55d1628dd2e5 | 33 | aux[i].red=0; |
pighixxx | 4:55d1628dd2e5 | 34 | aux[i].green=0; |
pighixxx | 4:55d1628dd2e5 | 35 | aux[i].blue=0; |
pighixxx | 4:55d1628dd2e5 | 36 | } |
JacobBramley | 0:60499ad28ea9 | 37 | } |
JacobBramley | 0:60499ad28ea9 | 38 | |
pighixxx | 4:55d1628dd2e5 | 39 | int dado_1[5][5] = { |
pighixxx | 4:55d1628dd2e5 | 40 | {0,0,0,0,0}, |
pighixxx | 4:55d1628dd2e5 | 41 | {0,0,0,0,0}, |
pighixxx | 4:55d1628dd2e5 | 42 | {0,0,1,0,0}, |
pighixxx | 4:55d1628dd2e5 | 43 | {0,0,0,0,0}, |
pighixxx | 4:55d1628dd2e5 | 44 | {0,0,0,0,0} |
pighixxx | 4:55d1628dd2e5 | 45 | }; |
pighixxx | 4:55d1628dd2e5 | 46 | |
pighixxx | 4:55d1628dd2e5 | 47 | int dado_2[5][5] = { |
pighixxx | 4:55d1628dd2e5 | 48 | {0,0,0,0,1}, |
pighixxx | 4:55d1628dd2e5 | 49 | {0,0,0,0,0}, |
pighixxx | 4:55d1628dd2e5 | 50 | {0,0,0,0,0}, |
pighixxx | 4:55d1628dd2e5 | 51 | {0,0,0,0,0}, |
pighixxx | 4:55d1628dd2e5 | 52 | {1,0,0,0,0} |
pighixxx | 4:55d1628dd2e5 | 53 | }; |
pighixxx | 4:55d1628dd2e5 | 54 | |
pighixxx | 4:55d1628dd2e5 | 55 | int dado_3[5][5] = { |
pighixxx | 4:55d1628dd2e5 | 56 | {0,0,0,0,1}, |
pighixxx | 4:55d1628dd2e5 | 57 | {0,0,0,0,0}, |
pighixxx | 4:55d1628dd2e5 | 58 | {0,0,1,0,0}, |
pighixxx | 4:55d1628dd2e5 | 59 | {0,0,0,0,0}, |
pighixxx | 4:55d1628dd2e5 | 60 | {1,0,0,0,0} |
pighixxx | 4:55d1628dd2e5 | 61 | }; |
pighixxx | 4:55d1628dd2e5 | 62 | |
pighixxx | 4:55d1628dd2e5 | 63 | int dado_4[5][5] = { |
pighixxx | 4:55d1628dd2e5 | 64 | {1,0,0,0,1}, |
pighixxx | 4:55d1628dd2e5 | 65 | {0,0,0,0,0}, |
pighixxx | 4:55d1628dd2e5 | 66 | {0,0,0,0,0}, |
pighixxx | 4:55d1628dd2e5 | 67 | {0,0,0,0,0}, |
pighixxx | 4:55d1628dd2e5 | 68 | {1,0,0,0,1} |
pighixxx | 4:55d1628dd2e5 | 69 | }; |
pighixxx | 4:55d1628dd2e5 | 70 | |
pighixxx | 4:55d1628dd2e5 | 71 | int dado_5[5][5] = { |
pighixxx | 4:55d1628dd2e5 | 72 | {1,0,0,0,1}, |
pighixxx | 4:55d1628dd2e5 | 73 | {0,0,0,0,0}, |
pighixxx | 4:55d1628dd2e5 | 74 | {0,0,1,0,0}, |
pighixxx | 4:55d1628dd2e5 | 75 | {0,0,0,0,0}, |
pighixxx | 4:55d1628dd2e5 | 76 | {1,0,0,0,1} |
pighixxx | 4:55d1628dd2e5 | 77 | }; |
pighixxx | 4:55d1628dd2e5 | 78 | |
pighixxx | 4:55d1628dd2e5 | 79 | int dado_6[5][5] = { |
pighixxx | 4:55d1628dd2e5 | 80 | {1,0,0,0,1}, |
pighixxx | 4:55d1628dd2e5 | 81 | {0,0,0,0,0}, |
pighixxx | 4:55d1628dd2e5 | 82 | {1,0,0,0,1}, |
pighixxx | 4:55d1628dd2e5 | 83 | {0,0,0,0,0}, |
pighixxx | 4:55d1628dd2e5 | 84 | {1,0,0,0,1} |
pighixxx | 4:55d1628dd2e5 | 85 | }; |
pighixxx | 4:55d1628dd2e5 | 86 | |
pighixxx | 4:55d1628dd2e5 | 87 | void drawVector(int theArray[5][5], neopixel::Pixel * vectorPixel, int r, int g, int b){ |
pighixxx | 4:55d1628dd2e5 | 88 | for(int i = 0;i<5;i++){ |
pighixxx | 4:55d1628dd2e5 | 89 | for(int j = 0; j<5;j++){ |
pighixxx | 4:55d1628dd2e5 | 90 | if(theArray[i][j] == 1) |
pighixxx | 4:55d1628dd2e5 | 91 | fill_pixel(vectorPixel,i,j,r,g,b); |
pighixxx | 4:55d1628dd2e5 | 92 | else |
pighixxx | 4:55d1628dd2e5 | 93 | fill_pixel(vectorPixel,i,j,0,0,0); |
pighixxx | 4:55d1628dd2e5 | 94 | } |
pighixxx | 4:55d1628dd2e5 | 95 | } |
pighixxx | 4:55d1628dd2e5 | 96 | } |
JacobBramley | 1:ca76237d2965 | 97 | int main() |
JacobBramley | 1:ca76237d2965 | 98 | { |
pighixxx | 3:2d84c8262139 | 99 | // Turn off miniblip buzzer |
pighixxx | 3:2d84c8262139 | 100 | PwmOut speaker(P0_8); |
pighixxx | 3:2d84c8262139 | 101 | speaker=0.0; |
JacobBramley | 1:ca76237d2965 | 102 | // Create a temporary DigitalIn so we can configure the pull-down resistor. |
JacobBramley | 1:ca76237d2965 | 103 | DigitalIn(DATA_PIN, PullDown); |
pighixxx | 4:55d1628dd2e5 | 104 | |
pighixxx | 4:55d1628dd2e5 | 105 | // Pushbutton |
pighixxx | 4:55d1628dd2e5 | 106 | DigitalIn pushbutton(P0_23); |
pighixxx | 4:55d1628dd2e5 | 107 | |
pighixxx | 4:55d1628dd2e5 | 108 | neopixel::Pixel vector[25]; |
pighixxx | 4:55d1628dd2e5 | 109 | void_matrix(vector); |
JacobBramley | 1:ca76237d2965 | 110 | |
JacobBramley | 1:ca76237d2965 | 111 | // The pixel array control class. |
JacobBramley | 1:ca76237d2965 | 112 | neopixel::PixelArray array(DATA_PIN); |
pighixxx | 4:55d1628dd2e5 | 113 | int posLed=0; |
pighixxx | 4:55d1628dd2e5 | 114 | int cred=10; |
pighixxx | 4:55d1628dd2e5 | 115 | int cblue=10; |
pighixxx | 4:55d1628dd2e5 | 116 | int cgreen=10; |
JacobBramley | 1:ca76237d2965 | 117 | while (1) { |
pighixxx | 4:55d1628dd2e5 | 118 | // Wait screen |
pighixxx | 4:55d1628dd2e5 | 119 | int posx=posLed%5; |
pighixxx | 4:55d1628dd2e5 | 120 | int posy=int(posLed/5); |
pighixxx | 4:55d1628dd2e5 | 121 | fill_pixel(vector,posx,posy,cred,cblue,cgreen); |
pighixxx | 4:55d1628dd2e5 | 122 | array.update(vector, 64); |
pighixxx | 4:55d1628dd2e5 | 123 | wait_ms(30); |
pighixxx | 4:55d1628dd2e5 | 124 | posLed++; |
pighixxx | 4:55d1628dd2e5 | 125 | if (posLed>24) { |
pighixxx | 4:55d1628dd2e5 | 126 | cred=int(rand()%50); |
pighixxx | 4:55d1628dd2e5 | 127 | cblue=int(rand()%50); |
pighixxx | 4:55d1628dd2e5 | 128 | cgreen=int(rand()%50); |
pighixxx | 4:55d1628dd2e5 | 129 | posLed=0; |
pighixxx | 4:55d1628dd2e5 | 130 | } |
pighixxx | 4:55d1628dd2e5 | 131 | // Wait button |
pighixxx | 4:55d1628dd2e5 | 132 | if(pushbutton){ |
pighixxx | 4:55d1628dd2e5 | 133 | posLed=0; |
pighixxx | 4:55d1628dd2e5 | 134 | float pot = ain.read() * 100.0f; |
pighixxx | 4:55d1628dd2e5 | 135 | int startdelay=10; |
pighixxx | 4:55d1628dd2e5 | 136 | int face=1; |
pighixxx | 4:55d1628dd2e5 | 137 | int red=10; |
pighixxx | 4:55d1628dd2e5 | 138 | while (1) { |
pighixxx | 4:55d1628dd2e5 | 139 | if (startdelay>300+(pot*3)) red=200; |
pighixxx | 4:55d1628dd2e5 | 140 | switch(face) { |
pighixxx | 4:55d1628dd2e5 | 141 | case 1: |
pighixxx | 4:55d1628dd2e5 | 142 | drawVector(dado_1,vector,red,200-red,200-red); |
pighixxx | 4:55d1628dd2e5 | 143 | break; |
pighixxx | 4:55d1628dd2e5 | 144 | case 2: |
pighixxx | 4:55d1628dd2e5 | 145 | drawVector(dado_2,vector,red,200-red,200-red); |
pighixxx | 4:55d1628dd2e5 | 146 | break; |
pighixxx | 4:55d1628dd2e5 | 147 | case 3: |
pighixxx | 4:55d1628dd2e5 | 148 | drawVector(dado_3,vector,red,200-red,200-red); |
pighixxx | 4:55d1628dd2e5 | 149 | break; |
pighixxx | 4:55d1628dd2e5 | 150 | case 4: |
pighixxx | 4:55d1628dd2e5 | 151 | drawVector(dado_4,vector,red,200-red,200-red); |
pighixxx | 4:55d1628dd2e5 | 152 | break; |
pighixxx | 4:55d1628dd2e5 | 153 | case 5: |
pighixxx | 4:55d1628dd2e5 | 154 | drawVector(dado_5,vector,red,200-red,200-red); |
pighixxx | 4:55d1628dd2e5 | 155 | break; |
pighixxx | 4:55d1628dd2e5 | 156 | case 6: |
pighixxx | 4:55d1628dd2e5 | 157 | drawVector(dado_6,vector,red,200-red,200-red); |
pighixxx | 4:55d1628dd2e5 | 158 | break; |
pighixxx | 4:55d1628dd2e5 | 159 | } |
pighixxx | 4:55d1628dd2e5 | 160 | array.update(vector, 64); |
pighixxx | 4:55d1628dd2e5 | 161 | if (startdelay>300+(pot*3)) break; |
pighixxx | 4:55d1628dd2e5 | 162 | face++; |
pighixxx | 4:55d1628dd2e5 | 163 | startdelay=startdelay+10; |
pighixxx | 4:55d1628dd2e5 | 164 | |
pighixxx | 4:55d1628dd2e5 | 165 | if (face>6) face=1; |
pighixxx | 4:55d1628dd2e5 | 166 | wait_ms(startdelay); |
pighixxx | 4:55d1628dd2e5 | 167 | |
pighixxx | 4:55d1628dd2e5 | 168 | } |
pighixxx | 4:55d1628dd2e5 | 169 | speaker=5.0; |
pighixxx | 4:55d1628dd2e5 | 170 | wait_ms(1000); |
pighixxx | 4:55d1628dd2e5 | 171 | speaker=0.0; |
pighixxx | 4:55d1628dd2e5 | 172 | wait_ms(2500); |
pighixxx | 4:55d1628dd2e5 | 173 | } |
JacobBramley | 0:60499ad28ea9 | 174 | } |
pighixxx | 4:55d1628dd2e5 | 175 | } |