• I






      
           

Научно-популярный образовательный ресурс для юных и начинающих радиолюбителей - Popular science educational resource for young and novice hams

Основы электричества, учебные материалы и опыт профессионалов - Basics of electricity, educational materials and professional experience

КОНКУРС
language
 
Поиск junradio

Радиодетали
ОК
Сервисы

Stock Images
Покупка - продажа
Фото и изображений


 
Выгодный обмен
электронных валют

Друзья JR



JUNIOR RADIO

 

Игра в кости на Arduino

 

 

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

 

 

Схема игральных костей относительно проста и может быть быстро собрана. Есть способы улучшить схему, но в этом уроке мы оставим ее простой.

Я сделал принципиальную схему ниже, чтобы помочь вам разместить все в нужном месте. Я объясню больше о схеме прямо под диаграммой.

 

 

Переключатель установлен в H-образной цепи, например, на нашей схеме это боковая сторона H. Верхний левый и верхний правый выводы отделены от нижних выводов. Когда вы нажимаете кнопку, он соединяет верхний и нижний выводы, образуя цепь, таким образом активируя наши кости.

Мы подключаем к коммутатору соединение 3v3 и заземляем резистор 100 кОм. Между резистором 100 кОм и переключателем у нас есть провод, идущий к контакту 2. Он будет определять каждый раз, когда переключатель был нажат.

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

Каждый из светодиодов подключен к шине заземления через резистор 100 Ом. Затем положительный конец светодиодов подключается к контакту на Arduino. Вы можете увидеть, какие светодиоды к какому выводу подключены, в таблице ниже.

 

Нумерация игральных костей Arduino

 

Оживление схемы Arduino Dice

Код в этом проекте снова очень похож на проект светофора. Однако в этом мы вводим устройство ввода (переключатель), а также генерируем случайное число с помощью функции randomSeed () .

Этот код довольно длинный, поэтому я рекомендовал загрузить его  с нашего GitHub . Я возьму несколько фрагментов кода, которые точно объяснят, что мы делаем, чтобы помочь вам лучше понять код.

В приведенном ниже примере я объявляю переменные. BottomLeft относится к расположению светодиода, что упрощает идентификацию при редактировании скрипта. Число, которое мы даем этим переменным, - это контакты, к которым подключены светодиоды.

Состояние и randNumber переменные будут использоваться для хранения чисел. Вы увидите это в действии чуть позже.

int button = 2;

//LED for DICE

int bottomLeft = 3;

int middleLeft = 4;

int upperLeft = 5;

int middle = 6;

int bottomRight = 7;

int middleRight = 8;

int upperRight = 9;

int state = 0;

long randNumber;

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

//Initial setup

void setup(){

  pinMode(bottomLeft, OUTPUT);

  pinMode(middleLeft, OUTPUT);

  pinMode(upperLeft, OUTPUT);

  pinMode(middle, OUTPUT);

  pinMode(bottomRight, OUTPUT);

  pinMode(middleRight, OUTPUT);

  pinMode(upperRight, OUTPUT);

 

  pinMode(button, INPUT);

  Serial.begin(9600);

  randomSeed(analogRead(0));

}

Цикл нашего скрипта продолжает выполняться до тех пор, пока Arduino не будет выключен или пока не будет загружен новый набор кода. В начале цикла игры в кости Arduino мы проверяем, был ли нажат переключатель (высокий).

Если условия соблюдены, мы меняем состояние на 1 и получаем случайное число от 1 до 7. Получив случайное число, мы проверяем, что это такое, и запускаем соответствующую функцию.

По завершении функции мы ждем 4 секунды, затем выключаем светодиоды и возвращаемся в нормальное состояние 0.

void loop(){

  //Read our button if high then run dice

  if (digitalRead(button) == HIGH && state == 0){

    state = 1;

    randNumber = random(1, 7);

    delay(100);

    Serial.println(randNumber);

 

    if (randNumber == 6){

      six();

    }

    if (randNumber == 5){

      five();

    }

    if (randNumber == 4){

      four();

    }

    if (randNumber == 3){

      three();

    }

    if (randNumber == 2){

      two();

    }

    if (randNumber == 1){

      one();

    }

    delay(4000);

    clearAll();

    state = 0;

  }

}

Ниже приведен пример шести функций. Эта функция вызывается всякий раз, когда игральные кости производят число шесть. Как вы можете ясно видеть, он включает все соответствующие светодиоды.

Это заставит все необходимые светодиоды, образующие шесть, включиться, и вы получите правильное отображение граней кубика на схеме.

void six()

{

  digitalWrite(bottomLeft, HIGH);

  digitalWrite(middleLeft, HIGH);

  digitalWrite(upperLeft, HIGH);

  digitalWrite(bottomRight, HIGH);

  digitalWrite(middleRight, HIGH);

  digitalWrite(upperRight, HIGH);

}

Опять же, на этой странице нет всего кода, поэтому не забудьте загрузить его, чтобы вы могли поместить его на свой Arduino. Вы можете скачать на нашем GitHub .

 




Необходимо добавить материалы...
Результат опроса Результаты Все опросы нашего сайта Архив опросов
Всего голосовало: 373



          

Радио для всех© 2024