Arduresling

Введение

Данный проект является интерпретацией армреслинга в виде электронной игры с некоторыми особенностями в правилах.

Перечень элементов:

-  Arduino Nano;

-  USB – кабель;

-  breadboard;

-  модуль на 8 RGB сетодиодов

-  2 модуля кнопки

-  соединительные провода

План

1.  Принцип роботы Ардуреслинга.

2.  Модуль на 8 RGB сетодиодов

3.  Кнопка

Теоретическая часть

1.  Принцип роботы Ардуреслинга

Принцип роботы Ардуреслинга схож с армреслингом. Механизм игры основан на применении кнопок по аналогии с силой руки – чем чаще мы нажимаем кнопку тем быстрее пиксель движется в нужную нам сторону. Против игрока выступает компьютер который пытается «выбить» пиксель за края светодиодной линейки. Сложность заключается в том, что он постоянно, случайным образом меняет направление своего движения и количество шагов которое он делает в этом направлении, поэтому необходимо быстро реагировать и двигаться в противоположном направлении. А так как скорость компьютера со временем возрастает, то продержатся хотя бы минуту не каждый игрок сможет. С отдалением пикселя от центра линейки его цвет сначала меняется на оранжевый а потом на красный. Как только пиксель выходит за приделы ленты игра считается проигранной и вся светодиодная линейка мигает красным цветом. Потом игра начинается заново.

2.  Светодиодная линейка на 8 RGB светодиодов.

Для реализации этого проекта мы используем светодиодную линейку на 8 RGB светодиодов. К выводу VCC подключаем питание. Модуль имеет инверсную логику, поэтому для того что бы зажечь нужный нам светодиод необходимо на соответствующий вывод (d0 – d7) подать низкий уровень. На выводы R, G, B мы подаем аналоговые (ШИМ) сигналы, от интенсивности которых обратно зависит яркость соответствующих цветов светодиодов.

НЕ нашли? Не то? Что вы ищете?

Рисунок 2 -   Светодиодная линейка на 8 RGB светодиодов

3.  Кнопка

Очень часто необходимо управлять роботом или устройством посредством подачи импульсов. Рассмотрим обыкновенную компьютерную клавиатуру. У нее каждая клавиша выполнена в виде тактовой кнопки. Это чаще всего разомкнутый контакт, который практически мгновенно замыкается при нажатии. Этот вид кнопки имеет два состояния "замкнуто" и соответственно "разомкнуто". Кнопка практически мгновенно возвращается в исходное положение, размыкая контакт за счет пружинки при снятии с нее прижимающего усилия (пальца). Кнопка имеет четыре вывода, они соединены попарно между собой. Один подключается к земле, другой к любому цифровому выводу на Arduino. В модуле кнопки вывод, подписанный символом «-», подключаем к питанию, вывод, подписанный символом «S» подключаем к порту Arduino, оставшийся вывод подключаем к земле. Внешний вид показан на рисунке 3.

C:\Users\маша\Desktop\444.jpg

Рисунок 3 -   Модуль кнопки

Практическая часть

Шаг первый. Собираем схему

C:\Users\dowga\AppData\Local\Microsoft\Windows\INetCache\Content.Word\Untitled Sketch_bb.png

Рисунок 4 -   Схема Arduresling

Шаг второй. Пишем программу на С++

В проекте использовалась светодиодная линейка с инвертированной логикой. Для того что бы зажечь нужный нам светодиод необходимо подать низкий уровень а для того что бы выключить – высокий. Так как для подключения светодиодной линейки мы использовали все доступные цифровые выходы, то кнопки мы подключили в аналоговые входы A0 и A1, которые при программировании на С++ можно использовать как обычные цифровые (доступны под номерами 14 и 15).

Код программы:

#define RED 4

#define GREEN 3

#define BLUE 2

#define LED_1 12

#define LED_2 11

#define LED_3 10

#define LED_4 9

#define LED_5 8

#define LED_6 7

#define LED_7 6

#define LED_8 5

#define BUTTON_1 14

#define BUTTON_2 15

int pause;//Пауза між кроками Ардуїно

int sleep;//Таймер

int steps = 0;//Кроків в відповідному няпрямку

int dir = 1;//Напрямок руху

int pos;//Позиція піксела

int a[] = {12, 11, 10, 9, 8, 7, 6, 5};

//Починає гру спочатку

void initGame() {

digitalWrite(GREEN, LOW);

digitalWrite(RED, HIGH);

digitalWrite(BLUE, HIGH);

pos = 3;

pause = 500;

for (int i = 0; i <= 7; i++) digitalWrite(a[i], HIGH);

}

//Перевірка умови програшу

void checkGame() {

if (pos == -1 || pos == 8) {

digitalWrite(GREEN, HIGH);

digitalWrite(RED, LOW);

for (int i = 0; i <= 7; i++) digitalWrite(a[i], LOW);

delay (500);

for (int i = 0; i <= 7; i++) digitalWrite(a[i], HIGH);

delay (500);

for (int i = 0; i <= 7; i++) digitalWrite(a[i], LOW);

delay (500);

initGame();//Спробуємо ще)))

}

}

//Процедура встановлення позиції пікселя

void setPos(int p) {

digitalWrite(a[pos], HIGH);

if (p >= -1 && p <= 8) {//перевірка чи не вийшли за межі

pos = p;

//Встановлюємо відповідний колір піксела

if (pos == 0 || pos == 7) {

digitalWrite(GREEN, HIGH);

digitalWrite(RED, LOW);

} else if (p == 1 || p == 6) {

digitalWrite(GREEN, LOW);

digitalWrite(RED, LOW);

} else {

digitalWrite(GREEN, LOW);

digitalWrite(RED, HIGH);

}

digitalWrite(a[pos], LOW);

}

}

//Початкові налаштування
void setup() {

pinMode(RED, OUTPUT);

pinMode(GREEN, OUTPUT);

pinMode(BLUE, OUTPUT);

pinMode(LED_1, OUTPUT);

pinMode(LED_2, OUTPUT);

pinMode(LED_3, OUTPUT);

pinMode(LED_4, OUTPUT);

pinMode(LED_5, OUTPUT);

pinMode(LED_6, OUTPUT);

pinMode(LED_7, OUTPUT);

pinMode(LED_8, OUTPUT);

pinMode(BUTTON_1, INPUT);

pinMode(BUTTON_2, INPUT);

initGame();

}

void loop() {//Цикл гри

checkGame();//Перевірка умови програшу

//Через певні проміжки часу вибираємо напрямок

//і кількість кроків в чьому напрямку

if (steps == 0) {

steps = random(1, 8);

dir = random(0, 2);

if (dir == 0) dir = -1;

}

setPos(pos);//ця функція втановлює позицію

if (digitalRead(BUTTON_1) == 1) {//Обробка кнопки вліво

setPos(pos + 1);

while (digitalRead(BUTTON_1) == 1) delay(1);

}

if (digitalRead(BUTTON_2) == 1) {//Обробка кнопки вправо

setPos(pos - 1);

while (digitalRead(BUTTON_2) == 1) delay(1);

}

//Ардуїно робить свій крок

if (sleep == 0) {

setPos(pos + dir);

steps--;

sleep = pause;

if (pause > 100) pause -= 10;

}

delay(1);

sleep--;

}

Заключение:

Таким образом, при помощи простого набора модулей и Arduino Nano получаем электронную игру, в которую весело играть. При разработке была глубже изучена робота с модулем на 8 RGB светодиодов, кнопок, получен опыт программирования на языке С++.

Основные порталы (построено редакторами)

Домашний очаг

ДомДачаСадоводствоДетиАктивность ребенкаИгрыКрасотаЖенщины(Беременность)СемьяХобби
Здоровье: • АнатомияБолезниВредные привычкиДиагностикаНародная медицинаПервая помощьПитаниеФармацевтика
История: СССРИстория РоссииРоссийская Империя
Окружающий мир: Животный мирДомашние животныеНасекомыеРастенияПриродаКатаклизмыКосмосКлиматСтихийные бедствия

Справочная информация

ДокументыЗаконыИзвещенияУтверждения документовДоговораЗапросы предложенийТехнические заданияПланы развитияДокументоведениеАналитикаМероприятияКонкурсыИтогиАдминистрации городовПриказыКонтрактыВыполнение работПротоколы рассмотрения заявокАукционыПроектыПротоколыБюджетные организации
МуниципалитетыРайоныОбразованияПрограммы
Отчеты: • по упоминаниямДокументная базаЦенные бумаги
Положения: • Финансовые документы
Постановления: • Рубрикатор по темамФинансыгорода Российской Федерациирегионыпо точным датам
Регламенты
Термины: • Научная терминологияФинансоваяЭкономическая
Время: • Даты2015 год2016 год
Документы в финансовой сферев инвестиционнойФинансовые документы - программы

Техника

АвиацияАвтоВычислительная техникаОборудование(Электрооборудование)РадиоТехнологии(Аудио-видео)(Компьютеры)

Общество

БезопасностьГражданские права и свободыИскусство(Музыка)Культура(Этика)Мировые именаПолитика(Геополитика)(Идеологические конфликты)ВластьЗаговоры и переворотыГражданская позицияМиграцияРелигии и верования(Конфессии)ХристианствоМифологияРазвлеченияМасс МедиаСпорт (Боевые искусства)ТранспортТуризм
Войны и конфликты: АрмияВоенная техникаЗвания и награды

Образование и наука

Наука: Контрольные работыНаучно-технический прогрессПедагогикаРабочие программыФакультетыМетодические рекомендацииШколаПрофессиональное образованиеМотивация учащихся
Предметы: БиологияГеографияГеологияИсторияЛитератураЛитературные жанрыЛитературные героиМатематикаМедицинаМузыкаПравоЖилищное правоЗемельное правоУголовное правоКодексыПсихология (Логика) • Русский языкСоциологияФизикаФилологияФилософияХимияЮриспруденция

Мир

Регионы: АзияАмерикаАфрикаЕвропаПрибалтикаЕвропейская политикаОкеанияГорода мира
Россия: • МоскваКавказ
Регионы РоссииПрограммы регионовЭкономика

Бизнес и финансы

Бизнес: • БанкиБогатство и благосостояниеКоррупция(Преступность)МаркетингМенеджментИнвестицииЦенные бумаги: • УправлениеОткрытые акционерные обществаПроектыДокументыЦенные бумаги - контрольЦенные бумаги - оценкиОблигацииДолгиВалютаНедвижимость(Аренда)ПрофессииРаботаТорговляУслугиФинансыСтрахованиеБюджетФинансовые услугиКредитыКомпанииГосударственные предприятияЭкономикаМакроэкономикаМикроэкономикаНалогиАудит
Промышленность: • МеталлургияНефтьСельское хозяйствоЭнергетика
СтроительствоАрхитектураИнтерьерПолы и перекрытияПроцесс строительстваСтроительные материалыТеплоизоляцияЭкстерьерОрганизация и управление производством