Now all faces can win (not ones always win) and wait sequence reduced

Dependencies:   PixelArray mbed

Fork of blip_dado by Alberto Piganti

Committer:
pighixxx
Date:
Tue Dec 01 14:26:03 2015 +0000
Revision:
4:55d1628dd2e5
Parent:
3:2d84c8262139
Child:
5:3c7292459503
miniBLIP dado example

Who changed what in which revision?

UserRevisionLine numberNew 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 }