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

Dependencies:   PixelArray mbed

Fork of blip_dado by Alberto Piganti

Committer:
JCristobal
Date:
Fri Dec 04 10:07:24 2015 +0000
Revision:
5:3c7292459503
Parent:
4:55d1628dd2e5
Now all faces can win (not ones always win) and wait sequence reduced

Who changed what in which revision?

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