Астрономия и микроскопия
http://www.forum.shvedun.ru/

Электроника
http://www.forum.shvedun.ru/viewtopic.php?f=23&t=5383
Страница 1 из 1

Автор:  Зеленый [ 18 мар 2017, 14:49 ]
Заголовок сообщения:  Электроника

Сегодня закончил прототип игральных костей.
Реально случайное выпадение чисел вне зависимости перезагружали модуль или нет.
Я не стал заморачиваться со снятием с пина сигнала для рально случайных чисел, а использовал простую функцию random (), но сделал так, что бы сразу начала она перебирать числа после включения устройства, а также после завершения выпадения числа. Т.е. предугадать невозможно какое число выпадет.

phpBB [youtube]

Автор:  Vitaliy [ 18 мар 2017, 15:16 ]
Заголовок сообщения:  Re: Электроника

Скетч игрального кубика

Библиотека "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]);
  }
}

Автор:  Зеленый [ 26 окт 2019, 22:45 ]
Заголовок сообщения:  Re: Электроника

Электронный конструктор "Позитроник" от PinLab, подробный обзор

phpBB [youtube]

Страница 1 из 1 Часовой пояс: UTC + 3 часа
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/