цифровая электроника
вычислительная техника
встраиваемые системы

 

Симулятор игрального кубика на основе Arduino и светодиодов

Автор: Mike(admin) от 28-09-2018, 06:35

Микроконтроллерная платформа Arduino позволяет делать много различных проектов, как полезных, так и просто увлекательных. С помощью Arduino можно создавать простые игры или игровые аксессуары.


Симулятор игрального кубика на основе Arduino и светодиодов

В данном проекте мы покажем как с помощью Arduino и светодиодов можно реализовать поведение игрального кубика, который часто используется во многих настольных играх. Этот проект будет полезен для новичков в области изучения электроники и Arduino. Кроме того, здесь будет наглядно показана практика применения функции randomSeed для реализации генератора случайных чисел.


Итак, схема подключения элементов симулятора игрального кубика с использованием Arduino и светодиодов показана на изображении ниже.


Симулятор игрального кубика на основе Arduino и светодиодов

В этом проекте мы используем семь светодиодов вместо шести из-за нормального расположения светодиода в середине для выдачи нечетного числа. Один цифровой вывод подключается к одному светодиоду с одним резистором, и этот резистор используется как резистор ограничения тока. R1 здесь равен 100 кОм, а резисторы R2-R8 имеют значение сопротивления 270 Ом.


Код программы для светодиодного кубика с использованием Arduino очень прост. Массив, используемый в коде, определяет, какие светодиоды должны быть включены или выключены для любого конкретного броска.



int ledPins[7] = {2, 3, 4, 5, 6, 7, 8}; // выводы на светодиоды

int dicePatterns[7][7] = { // комбинации

{0, 0, 0, 0, 0, 0, 1}, // 1

{0, 0, 1, 1, 0, 0, 0}, // 2

{0, 0, 1, 1, 0, 0, 1}, // 3

{1, 0, 1, 1, 0, 1, 0}, // 4

{1, 0, 1, 1, 0, 1, 1}, // 5

{1, 1, 1, 1, 1, 1, 0}, // 6

{0, 0, 0, 0, 0, 0, 0} // обнуление

};

int switchPin = 9;

int blank = 6;

void setup()

{

for (int i = 0; i < 7; i++)

{

pinMode(ledPins[i], OUTPUT); // настраиваем линии на выход

digitalWrite(ledPins[i], LOW);

}

randomSeed(analogRead(0)); // берем случайное значение с аналогового входа 0

}

void loop()

{

if (digitalRead(switchPin))

{

rollTheDice();

}

delay(100);

}

void rollTheDice()

{

int result = 0;

int lengthOfRoll = random(15, 25);

for (int i = 0; i < lengthOfRoll; i++)

{

result = random(0, 6); // результат будет от 0 до 5, не от 1 до 6

show(result);

delay(50 + i * 10);

}

for (int j = 0; j < 3; j++)

{

show(blank);

delay(500);

show(result);

delay(500);

}

}

void show(int result)

{

for (int i = 0; i < 7; i++)

{

digitalWrite(ledPins[i], dicePatterns[result][i]);

}

}



© digitrode.ru


Теги: Arduino




Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь.
Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.

Комментарии:

Оставить комментарий