Ми всі знайомі з кістками і часто грали в гру LUDO або SANP SIDI (Snake & Ladders), використовуючи кістки. Кістки - це тверда коробка типу сквайра, яка містить 6 різних цифр на всіх своїх сторонах. Ми кидаємо кубики на поверхню, щоб отримати випадкове число під час гри. У цьому проекті ми спробували відтворити його за допомогою цифрових кубиків за допомогою дошки arduino uno. Замість того, щоб кинути кубик, тут нам потрібно натиснути кнопку, щоб отримати випадкове число від 0 до 6.
Необхідні компоненти
- Arduino UNO
- Сім сегментний дисплей (загальний анод)
- Кнопки
- Підключення проводів
- Хлібна дошка
- 1 к резистор
- Блок живлення
Принципова схема та пояснення
Як показано у наведеній вище схемі цифрових кісток, arduino використовується для контролю всього процесу. У схемі використовуються дві кнопки - одна для запуску кубика, а інша для скидання кубиків. Arduino зчитує ці дві кнопки і виконує операцію. Для відображення результату кісток використовується семисегментний дисплей.
Arduino постійно виконує функцію rand () і зберігає своє значення у тимчасовій змінній. Коли натискається кнопка кістки, натискається збережене значення, яке обчислюється і відображається на семи сегментах за допомогою відповідного методу (див. Програмування частини статті)
Тут, у цій схемі кісток, для відображення номерів кубиків використовується загальний анодний семисегментний дисплей, який безпосередньо підключений до цифрових штифтових номерів Arduino 6, 5, 4, 3, 2, 1, 0. А загальний анодний штифт семи сегментів підключений резистором 220 Ом +5 вольт. Дві кнопки також підключені, а саме кнопка кубика та кнопка скидання, які підключені до цифрових штифтів 14 (A0) та 15 (A1) щодо землі.
Пояснення коду
Програмна частина цього проекту відіграє дуже важливу роль для відображення випадкових цифрових номерів кісток на семи сегментному дисплеї. Arduino не містить бібліотеки для семисегментного відображення. тому ми створили цілий код, не використовуючи жодної бібліотеки.
Перш за все ми вибираємо цифровий штифт для семи сегментного дисплея.
int pin = {6,5,4,3,2,1,0};
Після цього ми створюємо масив із 6 цифр кубиків, а саме 1, 2, 3, 4, 5 і 6.
цифра символу = {0x02, 0x79, 0x24, 0x30, 0x19, 0x12};
Тепер ми дали вказівку використовувати штифт arduino як вихід.
void setup () {for (int i = 0; i <7; i ++) pinMode (pin, OUTPUT); pinMode (кістки, INPUT); pinMode (resett, INPUT); digitalWrite (кістки, HIGH); digitalWrite (скидання, ВИСОКО);
За замовчуванням ми надсилаємо код для відображення нуля на семи сегментному дисплеї.
int temp = 0x40; для (int i = 0; i <7; i ++) {int temp1 = temp & 0x01; digitalWrite (pin, temp1); temp = temp >> 1; }
Тепер ми запускаємо функцію rand (), щоб отримати випадкове число.
int temp = rand ();
І коли ми натискаємо кнопку програми на кубику, спочатку зіставляємо це випадкове число, а потім надсилаємо число на семи сегментне відображення за допомогою бітового оператора.
if (digitalRead (dice) == 0) {int k = temp% 6; temp = цифра; чекати (); для (int i = 0; i <7; i ++) {int temp1 = temp & 0x01; digitalWrite (pin, temp1); temp = temp >> 1; } затримка (200); }
І те саме для кнопки скидання.
У цій програмі ми надсилаємо по одному біту за раз. Тут ми застосовуємо цикл for, який виконується 7 разів, щоб надсилати дані кожному сегменту по одному.