Текущее время: 28 мар 2024, 18:46

Калининград & ХОББИ

Занятие любимым хобби - это путь к счастливой жизни!

Урок 7. Автомат "Электронный кубик" на Ардуино

Обучение с нуля, шаг за шагом.
Аватар пользователя
 
Сообщений: 799
Зарегистрирован: 27 мар 2013, 22:12

Урок 7. Автомат "Электронный кубик" на Ардуино

Сообщение -=dp=- » 09 мар 2018, 17:08

Урок 7. Автомат "Электронный кубик" на Ардуино

Для создания автомата "Электронный кубик" нам понадобятся следующие компоненты:
1 - плата контроллера Ардуино УНО
2 - цифровогй LED семисегментный индикатор
3 - резистор 560 Ом
4 - кнопки 2 шт.
5 - макетная плата
6 - монтажные провода
7 - кабель microUSB > USB

Схема на рисунке ниже:

Arduino UNO cubes.jpg
Автомат "Электронный кубик" на Ардуино



Аватар пользователя
 
Сообщений: 799
Зарегистрирован: 27 мар 2013, 22:12

Re: Урок 7. Автомат "Электронный кубик" на Ардуино

Сообщение -=dp=- » 09 мар 2018, 18:12

Теперь перейдем к написанию кода.
За основу возьмем код с предыдущего урока.

Добавим в код 2 кнопки, назначим 11 и 12 выводы контроллера как входы, можно посмотреть пример подключения кнопки из предыдущих уроков.

Далее, создаем переменную count для подсчета случайного числа.
Так как в оригинальном кубике всего 6 цифр, мы то же оставляем в коде программы 6 цифр, от 1 до 6.

Далее, в главном цикле программы создадим счетчик с проверкой условия, если значение счетчика больше или равно 6, присваиваем переменной count значение 1, если меньше то увеличиваем значение переменной count на 1.

if (count>=6) {
count = 0;
} else {
count = count + 1;
};

Затем сделаем отображение значения переменной count при нажатии на кнопку СТАРТ.

Полный код игрового автомата "Электронный кубик"

Код: выделить все
//  Урок 7. Игровой автомат "Электронный кубик" на Ардуино
const int led2 =  2;
const int led3 =  3;
const int led4 =  4;
const int led5 =  5;
const int led6 =  6;
const int led7 =  7;
const int led8 =  8;
 
const int button1 =  11;
const int button2 =  12;

int buttonState1 = 0;
int buttonState2 = 0;

 int count = 0;

void setup() {
  pinMode(led2, OUTPUT);
  pinMode(led3, OUTPUT);
  pinMode(led4, OUTPUT);
  pinMode(led5, OUTPUT);
  pinMode(led6, OUTPUT);
  pinMode(led7, OUTPUT);
  pinMode(led8, OUTPUT);
  //  Очистка всех сегментов 
    digitalWrite(led2, LOW);
    digitalWrite(led3, LOW);
    digitalWrite(led4, LOW);
    digitalWrite(led5, LOW);
    digitalWrite(led6, LOW);
    digitalWrite(led7, LOW);
    digitalWrite(led8, LOW);   
// 0 
    digitalWrite(led6, HIGH);
    digitalWrite(led7, HIGH);
    digitalWrite(led8, HIGH);
    digitalWrite(led2, HIGH);
    digitalWrite(led3, HIGH);
    digitalWrite(led4, HIGH);
  pinMode(button1, INPUT_PULLUP);
  pinMode(button2, INPUT_PULLUP);
}

void loop() {
 int i = 1;

  buttonState1 = digitalRead(button1);
  buttonState2 = digitalRead(button2);

if (count>=6) {
count =  0; 
  } else {
count = count + 1; 
  };

if (buttonState1 == HIGH) {

  } else {
 
if (count==1){
//  Очистка всех сегментов 
    digitalWrite(led2, LOW);
    digitalWrite(led3, LOW);
    digitalWrite(led4, LOW);
    digitalWrite(led5, LOW);
    digitalWrite(led6, LOW);
    digitalWrite(led7, LOW);
    digitalWrite(led8, LOW);

// 1 
    digitalWrite(led8, HIGH);
    digitalWrite(led2, HIGH);
};

if (count==2){
//  Очистка всех сегментов 
    digitalWrite(led2, LOW);
    digitalWrite(led3, LOW);
    digitalWrite(led4, LOW);
    digitalWrite(led5, LOW);
    digitalWrite(led6, LOW);
    digitalWrite(led7, LOW);
    digitalWrite(led8, LOW);

// 2 
    digitalWrite(led7, HIGH);
    digitalWrite(led8, HIGH);
    digitalWrite(led5, HIGH);
    digitalWrite(led4, HIGH);
    digitalWrite(led3, HIGH);
};
if (count==3){

//  Очистка всех сегментов 
    digitalWrite(led2, LOW);
    digitalWrite(led3, LOW);
    digitalWrite(led4, LOW);
    digitalWrite(led5, LOW);
    digitalWrite(led6, LOW);
    digitalWrite(led7, LOW);
    digitalWrite(led8, LOW);

// 3 
    digitalWrite(led7, HIGH);
    digitalWrite(led8, HIGH);
    digitalWrite(led5, HIGH);
    digitalWrite(led2, HIGH);
    digitalWrite(led3, HIGH);
};
if (count==4){

//  Очистка всех сегментов 
    digitalWrite(led2, LOW);
    digitalWrite(led3, LOW);
    digitalWrite(led4, LOW);
    digitalWrite(led5, LOW);
    digitalWrite(led6, LOW);
    digitalWrite(led7, LOW);
    digitalWrite(led8, LOW);


// 4 
    digitalWrite(led6, HIGH);
    digitalWrite(led5, HIGH);
    digitalWrite(led8, HIGH);
    digitalWrite(led2, HIGH);
};
if (count==5){

//  Очистка всех сегментов 
    digitalWrite(led2, LOW);
    digitalWrite(led3, LOW);
    digitalWrite(led4, LOW);
    digitalWrite(led5, LOW);
    digitalWrite(led6, LOW);
    digitalWrite(led7, LOW);
    digitalWrite(led8, LOW);

// 5 
    digitalWrite(led7, HIGH);
    digitalWrite(led6, HIGH);
    digitalWrite(led5, HIGH);
    digitalWrite(led2, HIGH);
    digitalWrite(led3, HIGH);
};
if (count==6){
   
//  Очистка всех сегментов 
    digitalWrite(led2, LOW);
    digitalWrite(led3, LOW);
    digitalWrite(led4, LOW);
    digitalWrite(led5, LOW);
    digitalWrite(led6, LOW);
    digitalWrite(led7, LOW);
    digitalWrite(led8, LOW);

// 6 
    digitalWrite(led7, HIGH);
    digitalWrite(led6, HIGH);
    digitalWrite(led4, HIGH);
    digitalWrite(led3, HIGH);
    digitalWrite(led2, HIGH);
    digitalWrite(led5, HIGH);
};

};

 if (buttonState2 == HIGH) {
 
  } else {
 
//  Очистка всех сегментов 
    digitalWrite(led2, LOW);
    digitalWrite(led3, LOW);
    digitalWrite(led4, LOW);
    digitalWrite(led5, LOW);
    digitalWrite(led6, LOW);
    digitalWrite(led7, LOW);
    digitalWrite(led8, LOW);   
// 0 
    digitalWrite(led6, HIGH);
    digitalWrite(led7, HIGH);
    digitalWrite(led8, HIGH);
    digitalWrite(led2, HIGH);
    digitalWrite(led3, HIGH);
    digitalWrite(led4, HIGH);

delay(i);
  }
}




Загружаем код в плату Ардуино и можно начинать игру ;) :o :shock: :D :geek: :ugeek:



Аватар пользователя
 
Сообщений: 799
Зарегистрирован: 27 мар 2013, 22:12

Re: Урок 7. Автомат "Электронный кубик" на Ардуино

Сообщение -=dp=- » 22 ноя 2019, 20:59

Видео урок - игра кубик на Ардуино

https://youtu.be/TTevvpkH2ho




Аватар пользователя
 
Сообщений: 799
Зарегистрирован: 27 мар 2013, 22:12

Re: Урок 7. Автомат "Электронный кубик" на Ардуино

Сообщение -=dp=- » 24 ноя 2019, 18:37

Электронные кубики версия 2.0

Скетч
Sketh

Код: выделить все
//Qubes v2.0 (C) forklg.ru

int q1=3;
int q2=5;
int i=100;


void setup() {
  pinMode(2, INPUT);
 
  pinMode(4, OUTPUT);
  pinMode(5, OUTPUT);
  pinMode(6, OUTPUT);
  pinMode(7, OUTPUT);
  pinMode(8, OUTPUT);
  pinMode(9, OUTPUT);
  pinMode(10, OUTPUT);
  pinMode(11, OUTPUT);
  pinMode(12, OUTPUT);
  pinMode(13, OUTPUT);
  pinMode(14, OUTPUT);
  pinMode(15, OUTPUT);
  pinMode(16, OUTPUT);
  pinMode(17, OUTPUT);
 
  //test
  //cubes one
  //1
  digitalWrite(7, HIGH);   
  digitalWrite(12, HIGH);
  delay(i);
  digitalWrite(7, LOW);
  digitalWrite(12, LOW);
  delay(i);
  //2
  digitalWrite(4, HIGH);
  digitalWrite(8, HIGH); 
 digitalWrite(15, HIGH);
 digitalWrite(17, HIGH);
  delay(i);
  digitalWrite(4, LOW);
  digitalWrite(8, LOW);
  digitalWrite(15, LOW);
 digitalWrite(17, LOW);
  delay(i);
//3
 digitalWrite(7, HIGH);
 digitalWrite(4, HIGH);
  digitalWrite(8, HIGH);
   digitalWrite(12, HIGH);
 digitalWrite(15, HIGH);
 digitalWrite(17, HIGH);
  delay(i);
  digitalWrite(7, LOW);
  digitalWrite(4, LOW);   
  digitalWrite(8, LOW);
   digitalWrite(12, LOW);
 digitalWrite(15, LOW);
 digitalWrite(17, LOW);
  delay(i); 
//4
 digitalWrite(4, HIGH);
 digitalWrite(5, HIGH);
 digitalWrite(8, HIGH);   
 digitalWrite(9, HIGH); 
  digitalWrite(11, HIGH); 
 digitalWrite(14, HIGH);
 digitalWrite(15, HIGH);
 digitalWrite(17, HIGH);
 delay(i); 
 digitalWrite(4, LOW);
 digitalWrite(5, LOW);   
 digitalWrite(8, LOW);   
 digitalWrite(9, LOW);
  digitalWrite(11, LOW);
 digitalWrite(14, LOW);
 digitalWrite(15, LOW);
 digitalWrite(17, LOW);
 delay(i);
//5
 digitalWrite(7, HIGH);
 digitalWrite(4, HIGH);
 digitalWrite(8, HIGH);   
 digitalWrite(9, HIGH); 
 digitalWrite(5, HIGH);
  digitalWrite(11, HIGH);
 digitalWrite(12, HIGH);
 digitalWrite(14, HIGH);
 digitalWrite(15, HIGH);
 digitalWrite(17, HIGH);
 delay(i);
 digitalWrite(7, LOW);
 digitalWrite(4, LOW);   
 digitalWrite(8, LOW);   
 digitalWrite(9, LOW);
 digitalWrite(5, LOW); 
  digitalWrite(11, LOW);
 digitalWrite(12, LOW);
 digitalWrite(14, LOW);
 digitalWrite(15, LOW);
 digitalWrite(17, LOW);
 delay(i);
//6
 digitalWrite(4, HIGH);
 digitalWrite(5, HIGH); 
 digitalWrite(6, HIGH);   
 digitalWrite(8, HIGH); 
 digitalWrite(9, HIGH);   
 digitalWrite(10, HIGH);
  digitalWrite(11, HIGH);   
 digitalWrite(13, HIGH);   
 digitalWrite(14, HIGH);
 digitalWrite(15, HIGH);
 digitalWrite(16, HIGH);
 digitalWrite(17, HIGH);
 delay(i);
 digitalWrite(4, LOW);   
 digitalWrite(5, LOW);   
 digitalWrite(6, LOW);
 digitalWrite(8, LOW);
 digitalWrite(9, LOW);   
 digitalWrite(10, LOW);
  digitalWrite(11, LOW);
 digitalWrite(13, LOW);
 digitalWrite(14, LOW);
 digitalWrite(15, LOW);
 digitalWrite(16, LOW);
 digitalWrite(17, LOW);
 delay(i); 
  //
  delay(100); 
  digitalWrite(4, LOW);
  digitalWrite(5, LOW);
  digitalWrite(6, LOW);   
  digitalWrite(7, LOW);
  digitalWrite(8, LOW);
  digitalWrite(9, LOW);
  digitalWrite(10, LOW);
  digitalWrite(11, LOW);
  digitalWrite(12, LOW);
  digitalWrite(13, LOW);   
  digitalWrite(14, LOW);
  digitalWrite(15, LOW);
  digitalWrite(16, LOW);
  digitalWrite(17, LOW);
 
}

// the loop function runs over and over again forever
void loop() {
 q1=random(1, 7); 
 q2=random(1, 7); 
 delay(10);
 
if (digitalRead(2) ==  HIGH)  {

 q1=random(1, 7); 
 q2=random(1, 7); 
 q1=random(1, 7); 
 q2=random(1, 7);
 q1=random(1, 7);
 q1=random(1, 7);
 q2=random(1, 7); 
 
  digitalWrite(4, LOW);
  digitalWrite(5, LOW);
  digitalWrite(6, LOW);   
  digitalWrite(7, LOW);
  digitalWrite(8, LOW);
  digitalWrite(9, LOW);
  digitalWrite(10, LOW);
  digitalWrite(11, LOW);
  digitalWrite(12, LOW);
  digitalWrite(13, LOW);   
  digitalWrite(14, LOW);
  digitalWrite(15, LOW);
  digitalWrite(16, LOW);
  digitalWrite(17, LOW);
 

 
 if (q1==1){
 digitalWrite(7, HIGH); 
 };
 
 if (q1==2){
   digitalWrite(4, HIGH);
  digitalWrite(8, HIGH);
 };

 if (q1==3){
  digitalWrite(7, HIGH);
 digitalWrite(4, HIGH);
  digitalWrite(8, HIGH);
 };
 
  if (q1==4){
 digitalWrite(4, HIGH);
 digitalWrite(5, HIGH);
 digitalWrite(8, HIGH);   
 digitalWrite(9, HIGH); 
 };
 
  if (q1==5){
 digitalWrite(7, HIGH);
 digitalWrite(4, HIGH);
 digitalWrite(8, HIGH);   
 digitalWrite(9, HIGH); 
 digitalWrite(5, HIGH); 
 };
 
  if (q1==6){
  digitalWrite(4, HIGH);
 digitalWrite(5, HIGH); 
 digitalWrite(6, HIGH);   
 digitalWrite(8, HIGH); 
 digitalWrite(9, HIGH);   
 digitalWrite(10, HIGH);
 };
 

 
  if (q2==1){
 digitalWrite(12, HIGH); 
 };
 
 if (q2==2){
  digitalWrite(15, HIGH);
 digitalWrite(17, HIGH);
 };

 if (q2==3){
 digitalWrite(12, HIGH);
 digitalWrite(15, HIGH);
 digitalWrite(17, HIGH); 
 };
 
  if (q2==4){
  digitalWrite(11, HIGH); 
 digitalWrite(14, HIGH);
 digitalWrite(15, HIGH);
 digitalWrite(17, HIGH);
 };
 
  if (q2==5){
 digitalWrite(11, HIGH);
 digitalWrite(12, HIGH);
 digitalWrite(14, HIGH);
 digitalWrite(15, HIGH);
 digitalWrite(17, HIGH); 
 };
 
  if (q2==6){
 digitalWrite(11, HIGH);   
 digitalWrite(13, HIGH);   
 digitalWrite(14, HIGH);
 digitalWrite(15, HIGH);
 digitalWrite(16, HIGH);
 digitalWrite(17, HIGH); 
 };
 
 
 
 
};

}





Аватар пользователя
 
Сообщений: 799
Зарегистрирован: 27 мар 2013, 22:12

Re: Урок 7. Автомат "Электронный кубик" на Ардуино

Сообщение -=dp=- » 24 ноя 2019, 20:40

Игра Электронный Кубик на Ардуино.
Версия 2.0
Qubes.jpg
Электронный Кубик на Ардуино



Аватар пользователя
 
Сообщений: 799
Зарегистрирован: 27 мар 2013, 22:12

Re: Урок 7. Автомат "Электронный кубик" на Ардуино

Сообщение -=dp=- » 29 ноя 2019, 15:20

Схема электронных кубиков на Ардуино версия 2.0
qubes_shema.jpg
схема электронных кубиков на Ардуино


Схема нумерации светодиодов
led pins.jpg
Схема нумерации светодиодов



Аватар пользователя
 
Сообщений: 799
Зарегистрирован: 27 мар 2013, 22:12

Re: Урок 7. Автомат "Электронный кубик" на Ардуино

Сообщение -=dp=- » 29 ноя 2019, 15:37

3D модель корпуса игральных электронных кубиков

dice.jpg
3D модель корпуса игральных электронных кубиков


dice2.jpg
3D модель корпуса игральных электронных кубиков



Аватар пользователя
 
Сообщений: 799
Зарегистрирован: 27 мар 2013, 22:12

Re: Урок 7. Автомат "Электронный кубик" на Ардуино

Сообщение -=dp=- » 29 ноя 2019, 17:09

Видео по изготовлению игральных кубиков на Ардуино



:arrow: https://youtu.be/2KEQVQM5cNE



Аватар пользователя
 
Сообщений: 799
Зарегистрирован: 27 мар 2013, 22:12

Re: Урок 7. Автомат "Электронный кубик" на Ардуино

Сообщение -=dp=- » 29 ноя 2019, 17:13

Скачать 3D модель корпуса игральных кубиков на Ардуино можно тут

https://www.thingiverse.com/thing:4009141


Вложения
game dice 2.jpg
3D модель корпуса игральных кубиков на Ардуино


Вернуться в Обучение Ардуино

Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2