LED Matrix Dice Roller
Last updated
Was this helpful?
Last updated
Was this helpful?
5V
VCC
GND
GND
12
DIN
10
CS
11
CLK
Also add button to pin 8. Please see previous tutorials if you don't remember how to add a button.
/* To install this library, go to
Sketch --> Include Library--> Manage Libraries
now search for "LedControl"
Choose install
*/
#include "LedControl.h"
LedControl lc = LedControl(12, 11, 10, 1);
/* we always wait a bit between updates of the display */
unsigned long delaytime = 300;
//variables for the button
const int buttonPin = 8;
bool released = true;
void setup() {
//sets up the butonPin as an input
pinMode(buttonPin, INPUT_PULLUP);
//this command allows the random function to work better.
randomSeed(analogRead(0));
/*
The MAX72XX is in power-saving mode on startup,
we have to do a wakeup call
*/
lc.shutdown(0, false);
/* Set the brightness to a medium values */
lc.setIntensity(0, 8);
/* and clear the display */
lc.clearDisplay(0);
}
void loop() {
//check if the button is pressed and it has been released
if (digitalRead(buttonPin) == LOW and released == true)
{
released = false;
loading();
showRandom();
delay(50);
}
//check to see when the button gets released
if (digitalRead(buttonPin) == HIGH) {
released = true;
delay(50);
}
}
//function to generate a random number of the LED Matrix
void showRandom()
{
int randomNumber = random(1, 7);
if (randomNumber == 1) {
lc.setRow(0, 0, B00000000);
lc.setRow(0, 1, B00000000);
lc.setRow(0, 2, B00000000);
lc.setRow(0, 3, B00011000);
lc.setRow(0, 4, B00011000);
lc.setRow(0, 5, B00000000);
lc.setRow(0, 6, B00000000);
lc.setRow(0, 7, B00000000);
}
else if (randomNumber == 2) {
lc.setRow(0, 0, B11000000);
lc.setRow(0, 1, B11000000);
lc.setRow(0, 2, B00000000);
lc.setRow(0, 3, B00000000);
lc.setRow(0, 4, B00000000);
lc.setRow(0, 5, B00000000);
lc.setRow(0, 6, B00000011);
lc.setRow(0, 7, B00000011);
}
else if (randomNumber == 3) {
lc.setRow(0, 0, B11000000);
lc.setRow(0, 1, B11000000);
lc.setRow(0, 2, B00000000);
lc.setRow(0, 3, B00011000);
lc.setRow(0, 4, B00011000);
lc.setRow(0, 5, B00000000);
lc.setRow(0, 6, B00000011);
lc.setRow(0, 7, B00000011);
}
else if (randomNumber == 4) {
lc.setRow(0, 0, B11000011);
lc.setRow(0, 1, B11000011);
lc.setRow(0, 2, B00000000);
lc.setRow(0, 3, B00000000);
lc.setRow(0, 4, B00000000);
lc.setRow(0, 5, B00000000);
lc.setRow(0, 6, B11000011);
lc.setRow(0, 7, B11000011);
}
else if (randomNumber == 5) {
lc.setRow(0, 0, B11000011);
lc.setRow(0, 1, B11000011);
lc.setRow(0, 2, B00000000);
lc.setRow(0, 3, B00011000);
lc.setRow(0, 4, B00011000);
lc.setRow(0, 5, B00000000);
lc.setRow(0, 6, B11000011);
lc.setRow(0, 7, B11000011);
}
else {
lc.setRow(0, 0, B11000011);
lc.setRow(0, 1, B11000011);
lc.setRow(0, 2, B00000000);
lc.setRow(0, 3, B11000011);
lc.setRow(0, 4, B11000011);
lc.setRow(0, 5, B00000000);
lc.setRow(0, 6, B11000011);
lc.setRow(0, 7, B11000011);
}
//function to run before the numer is displayed
}
void loading() {
lc.setRow(0, 0, B11111111);
lc.setRow(0, 1, B10000001);
lc.setRow(0, 2, B10000001);
lc.setRow(0, 3, B10000001);
lc.setRow(0, 4, B10000001);
lc.setRow(0, 5, B10000001);
lc.setRow(0, 6, B10000001);
lc.setRow(0, 7, B11111111);
delay(delaytime);
lc.setRow(0, 0, B00000000);
lc.setRow(0, 1, B01111110);
lc.setRow(0, 2, B01000010);
lc.setRow(0, 3, B01000010);
lc.setRow(0, 4, B01000010);
lc.setRow(0, 5, B01000010);
lc.setRow(0, 6, B01111110);
lc.setRow(0, 7, B00000000);
delay(delaytime);
lc.setRow(0, 0, B00000000);
lc.setRow(0, 1, B00000000);
lc.setRow(0, 2, B00111100);
lc.setRow(0, 3, B00100100);
lc.setRow(0, 4, B00100100);
lc.setRow(0, 5, B00111100);
lc.setRow(0, 6, B00000000);
lc.setRow(0, 7, B00000000);
delay(delaytime);
lc.setRow(0, 0, B00000000);
lc.setRow(0, 1, B00000000);
lc.setRow(0, 2, B00000000);
lc.setRow(0, 3, B00011000);
lc.setRow(0, 4, B00011000);
lc.setRow(0, 5, B00000000);
lc.setRow(0, 6, B00000000);
lc.setRow(0, 7, B00000000);
delay(delaytime);
lc.setRow(0, 0, B00000000);
lc.setRow(0, 1, B00000000);
lc.setRow(0, 2, B00111100);
lc.setRow(0, 3, B00100100);
lc.setRow(0, 4, B00100100);
lc.setRow(0, 5, B00111100);
lc.setRow(0, 6, B00000000);
lc.setRow(0, 7, B00000000);
delay(delaytime);
lc.setRow(0, 0, B00000000);
lc.setRow(0, 1, B01111110);
lc.setRow(0, 2, B01000010);
lc.setRow(0, 3, B01000010);
lc.setRow(0, 4, B01000010);
lc.setRow(0, 5, B01000010);
lc.setRow(0, 6, B01111110);
lc.setRow(0, 7, B00000000);
delay(delaytime);
lc.setRow(0, 0, B11111111);
lc.setRow(0, 1, B10000001);
lc.setRow(0, 2, B10000001);
lc.setRow(0, 3, B10000001);
lc.setRow(0, 4, B10000001);
lc.setRow(0, 5, B10000001);
lc.setRow(0, 6, B10000001);
lc.setRow(0, 7, B11111111);
delay(delaytime);
}