Астрономия и микроскопия http://forum.shvedun.ru/ |
|
Электроника http://forum.shvedun.ru/viewtopic.php?f=23&t=5383 |
Страница 1 из 1 |
Автор: | Зеленый [ 18 мар 2017, 14:49 ] |
Заголовок сообщения: | Электроника |
Сегодня закончил прототип игральных костей. Реально случайное выпадение чисел вне зависимости перезагружали модуль или нет. Я не стал заморачиваться со снятием с пина сигнала для рально случайных чисел, а использовал простую функцию random (), но сделал так, что бы сразу начала она перебирать числа после включения устройства, а также после завершения выпадения числа. Т.е. предугадать невозможно какое число выпадет. |
Автор: | 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, подробный обзор |
Автор: | AZ3 [ 07 май 2023, 18:44 ] |
Заголовок сообщения: | Re: Электроника |
Вложение:
|
Страница 1 из 1 | Часовой пояс: UTC + 3 часа |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |