Всички ние сме запознати със заровете и често играехме LUDO или SANP SIDI (Snake & Ladders) игра, като използвахме зарове. Заровете са твърда кутия тип скуайър, която съдържа 6 различни числа от всичките си страни. Хвърляме зарове върху повърхност, за да получим произволно число, докато играем игрите. В този проект се опитахме да го репликираме с цифрови зарове, използвайки arduino uno платка. На мястото на хвърлянето на заровете тук трябва да натиснем бутон, за да получим произволно число между 0 и 6.
Необходими компоненти
- Arduino UNO
- Седем сегментен дисплей (общ анод)
- Бутони
- Свързващи проводници
- Дъска за хляб
- 1 k резистор
- Захранване
Електрическа схема и обяснение
Както е показано в горната схема за цифрови зарове, arduino се използва за управление на целия процес. Във веригата се използват два бутона - един за стартиране на заровете и друг за нулиране на заровете. Arduino чете тези два бутона и изпълнява операцията. За показване на резултата от заровете се използва седемсегментен дисплей.
Arduino непрекъснато изпълнява функцията rand () и съхранява стойността си във временна променлива. Когато натиснете бутона за зарове, съхранената стойност се изчислява и показва на седем сегмента с помощта на подходящ метод (вижте частта за програмиране на статията).
Тук в тази схема на зарове се използва общ аноден седемсегментен дисплей за показване на номера на зарове, който е директно свързан с цифрови номера на пинове на arduino 6, 5, 4, 3, 2, 1, 0. И общ аноден щифт от седем сегмента е свързан с +5 волта 220 Ohm резистор. Два бутона също са свързани, а именно бутон за зарове и бутон за нулиране, които са свързани към цифрови щифтове 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 pin като изход.
void setup () {for (int i = 0; i <7; i ++) pinMode (pin, OUTPUT); pinMode (зарове, INPUT); pinMode (нулиране, INPUT); digitalWrite (зарове, HIGH); digitalWrite (нулиране, HIGH);
Изпращаме код за показване на нула на седемсегментен дисплей по подразбиране.
int temp = 0x40; за (int i = 0; i <7; i ++) {int temp1 = temp & 0x01; digitalWrite (щифт, 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 (щифт, temp1); temp = temp >> 1; } закъснение (200); }
И същото за бутона за нулиране.
В тази програма изпращаме по един бит наведнъж. Тук прилагаме цикъл for, който се изпълнява 7 пъти за изпращане на данни към всеки сегмент един по един.