Скетч игрального кубика
Библиотека "LedControl"
https://github.com/wayoda/LedControlКод:
#include <LedControl.h>
#define PUSH_PIN 2 //пин на который посажен датчик вибрации
LedControl lc = LedControl(12,11,10,1); // контакты: DIN,CLK,CS,
char incomingByte;
int k;
// время между отображениями перебора значен
int a = 100;
// задаем вид граней
byte cube_6[] =
{
B01100110,
B01100110,
B00000000,
B01100110,
B01100110,
B00000000,
B01100110,
B01100110,
};
byte cube_5[] =
{
B01100110,
B01100110,
B00000000,
B00011000,
B00011000,
B00000000,
B01100110,
B01100110,
};
byte cube_4[] =
{
B01100110,
B01100110,
B00000000,
B00000000,
B00000000,
B00000000,
B01100110,
B01100110,
};
byte cube_3[] =
{
B00000011,
B00000011,
B00000000,
B00011000,
B00011000,
B00000000,
B11000000,
B11000000,
};
byte cube_2[] =
{
B00000000,
B00000110,
B00000110,
B00000000,
B00000000,
B01100000,
B01100000,
B00000000,
};
byte cube_1[] =
{
B00000000,
B00000000,
B00000000,
B00011000,
B00011000,
B00000000,
B00000000,
B00000000,
};
void setup() {
lc.shutdown(0, false); // Включаем дисплеи
lc.setIntensity(0, 5); // Установка яркости
lc.clearDisplay(0); // Очищаем дисплей
pinMode(PUSH_PIN, INPUT);
}
void loop() {
k = random(1, 7); // постоянно перебираем случайные числа числа
if (digitalRead(PUSH_PIN) == 0 ) { // проверяем было ли сторясение датчика, 0 - да, 1 - да.
for (int i = 1; i < 200; i=i+10) { // цикл перебора значений на ккибике
k = random(1, 7);
switch (k) { // выбираем какое число выводить на матрицу от 1 до 6
case 6:
lc.clearDisplay(0);
delay(a);
OutGlaza_6();
delay(i);
break;
case 5:
lc.clearDisplay(0);
delay(a);
OutGlaza_5();
delay(i);
break;
case 4:
lc.clearDisplay(0);
delay(a);
OutGlaza_4();
delay(i);
break;
case 3:
lc.clearDisplay(0);
delay(a);
OutGlaza_3();
delay(i);
break;
case 2:
lc.clearDisplay(0);
delay(a);
OutGlaza_2();
delay(i);
break;
case 1:
lc.clearDisplay(0);
delay(a);
OutGlaza_1();
delay(i);
break;
}
}
}
}
// подпрограммы вывода изображения на экран матрицы
void OutGlaza_6()
{
for (int i = 0; i < 8; i++)
{
lc.setRow(0, i, cube_6[i]);
}
}
void OutGlaza_5(){
for (int i = 0; i < 8; i++)
{
lc.setRow(0, i, cube_5[i]);
}
}
void OutGlaza_4(){
for (int i = 0; i < 8; i++)
{
lc.setRow(0, i, cube_4[i]);
}
}
void OutGlaza_3(){
for (int i = 0; i < 8; i++)
{
lc.setRow(0, i, cube_3[i]);
}
}
void OutGlaza_2(){
for (int i = 0; i < 8; i++)
{
lc.setRow(0, i, cube_2[i]);
}
}
void OutGlaza_1(){
for (int i = 0; i < 8; i++)
{
lc.setRow(0, i, cube_1[i]);
}
}