Астрономия и микроскопия

Форум сайта "Два Стрельца"
Текущее время: 23 мар 2017, 03:22

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 2 ] 
Автор Сообщение
 Заголовок сообщения: Электроника
СообщениеДобавлено: 18 мар 2017, 14:49 
Не в сети
Аватара пользователя

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

phpBB [youtube]

_________________
Это Vitaliy. Admin.
http://arthobbygames.ru


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Электроника
СообщениеДобавлено: 18 мар 2017, 15:16 
Не в сети
Site Admin
Аватара пользователя

Зарегистрирован: 10 окт 2008, 16:02
Сообщения: 791
Скетч игрального кубика

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


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 2 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB
Яндекс.Метрика