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

 

Симулятор игрального кубика на основе 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



   Благодарим Вас за интерес к информационному проекту digitrode.ru.
   Если Вы хотите, чтобы интересные и полезные материалы выходили чаще, и было меньше рекламы,
   Вы можее поддержать наш проект, пожертвовав любую сумму на его развитие.


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

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

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