With
my Arduino and a button from a slot machine, I realized an electronic
dice for my severely multi-disabled daughter. Now she can always play
along with the "Mensch-ärgere-Dich-nicht". Here is the program for
controlling the 8x8 Colorduino LED Shield.
#include colorduino.h #include bounce.h /*************************************************************/ // Patterns for matrix byte matrix[][8] = { { 0,0,0,0,0,0,0,0 } , //leer { 0,0,0,24,24,0,0,0 } , //1 { 192,192,0,0,0,0,3,3 } ,//2 { 192,192,0,24,24,0,3,3 } ,//3 { 195,195,0,0,0,0,195,195 } ,//4 { 195,195,0,24,24,0,195,195 } ,//5 { 219,219,0,0,0,0,219,219 } //6 }; // farben definition typedef struct { int red; int green; int blue; } RGB; /*************************************************************/ //global /*************************************************************/ boolean taste = false; Bounce bouncer = Bounce(A5,20); RGB aus = { 0,0,0}; RGB farbeZahl = { 0,0,0}; /*************************************************************/ /** /* Set one pixel of Matrix */ void pixel(int col, int row,bool an){ RGB farbe = aus; if (an == 1){ farbe=farbeZahl; } Colorduino.SetPixel(col, row, farbe.red, farbe.green, farbe.blue); Colorduino.FlipPage(); Colorduino.SetPixel(col, row, farbe.red, farbe.green, farbe.blue); } /** /* Setzt die matrix des Colorduino /* anhand der Zeile gemäss nummer der */ void show(int nummer){ farbeZahl.red=255; farbeZahl.green=0; farbeZahl.blue=0; for (int col = 0; col < 8; col++){ //Spalten for (int row = 0; row < 8; row++){//zeilen int bitZeiger=7-row; int muster=matrix[nummer][col];//00001100 bool an = bitRead(muster,bitZeiger); pixel (col,row,an); } } } // role dice void wuerfeln(){ int zufallszahl = random(1,7); show(zufallszahl); delay(20); //Serial.println("ich wuerfle "); } void checkDigIn(){ bouncer.update(); if(bouncer.read() == LOW){ taste = true; } else{ taste = false; } } void setTasteBySerial(){ char received=' '; if (Serial.available() > 0) { // read the incoming byte: received = Serial.read(); // say what you got: Serial.print("I received: "); Serial.println( received); if(received == 'A'){ taste = true; } else{ taste = false; } } } /***********************************************************************/ /* Main /***********************************************************************/ // init Hook void setup() { Serial.begin(9600); pinMode(A5,INPUT); digitalWrite(A5, HIGH); // set pullup on analog pin 5 Colorduino.Init(); unsigned char whiteBalVal[3] = { 33,63,63 }; Colorduino.SetWhiteBal(whiteBalVal); Colorduino.ColorFill(0,0,0); } void loop(){ //setTasteBySerial(); checkDigIn(); if (taste){ wuerfeln(); } }
Comments
Post a Comment