Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Manufacturing Technology >> Производственный процесс

Доллар ниндзя - ЖК-игра

Компоненты и расходные материалы

Arduino UNO
× 1
Стандартный ЖК-экран Adafruit - 16x2, белый на синем
× 1
Макет (общий)
Я использовал два, чтобы больше места, вы можете использовать только один макет.
× 2
Однооборотный потенциометр - 10 кОм
× 1
LED (общий)
× 2
Резистор 1 кОм
× 4
Кнопочный переключатель SparkFun, 12 мм
× 2
Зуммер RobotGeek
× 1
Перемычки (общие)
× 1

Необходимые инструменты и машины

Паяльник (общий)
Для пайки ЖК-дисплея

Об этом проекте

Это простая игра на ЖК-экране. Меня вдохновила игра «Динозавр» в Google Chrome, но я добавил в нее еще несколько изменений. Доллар-воин постоянно движется и может прыгать, избегая препятствий и собирая «звездные» очки. Если он перепрыгивает препятствие, он получает одно очко, а если он ловит звезду, он получает пять очков. Он также может стрелять и устранять препятствия перед собой. Также есть светодиоды, которые показывают, прыгает он или стреляет. Когда он набирает 10, 20 или 30 очков, он начинает двигаться быстрее, чем раньше. Когда он наберет 50 очков, вы выиграете. Если вы столкнетесь с препятствием, вы проиграете. Конечно, вы можете легко изменить эти границы в коде. Я также добавил пассивный зуммер, который издает звук, когда воин прыгает или стреляет, и особую мелодию, когда вы проигрываете или выигрываете. Это мой первый проект здесь, и я надеюсь, что он вам понравится. Оставляйте свои комментарии и отзывы.

Видео

Связи

Модуль LCD (жидкокристаллический дисплей) имеет 16-контактный штыревой разъем на нижней стороне. Вставьте это в макет, как показано на рисунке. Все электронные сигналы, которые питают и управляют ЖК-дисплеем, проходят через этот заголовок.

Эти булавки (слева направо):

  • GND - сигнал заземления питания
  • VCC - сигнал положительной мощности
  • V0 - регулировка контрастности
  • RS - регистрация выбрать
  • R / W - выбор чтения / записи
  • E - включить сигнал
  • D0 - бит данных 0 (здесь не используется)
  • D1 - бит данных 1 (здесь не используется)
  • D2 - бит данных 2 (здесь не используется)
  • D3 - бит данных 3 (здесь не используется)
  • D4 - бит данных 4
  • D5 - бит данных 5
  • D6 - бит данных 6
  • D7 - бит данных 7
  • А - подсветка светодиодная положительная
  • К - подсветка светодиодная отрицательная

Используйте перемычку, чтобы соединить сигнал 5 В на Arduino с красным рядом в верхней части макета.

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

  • Подключите контакт VSS к земле.
  • Подключите вывод VDD к сигналу 5 В
  • Контакт V0 к выходному контакту потенциометра
  • Вывод RS на вывод 12 Arduino
  • Штифт RW к земле
  • Контакт E к контакту 11 Arduino
  • D4 к контакту 5 Arudino
  • D5 к контакту 4 Arduino
  • D6 к контакту 3 Arduino
  • D7 к контакту 2 Arduino
  • Контакт для сигнала 5 В
  • Контакт K к сигналу GND

Подключите оставшиеся контакты потенциометра к сигналу 5 В и сигналу GND.

Если у вас есть пьезозуммер с 3 контактами, подключите контакт S к контакту Arduino 7, контакт «-» к GND, а оставшийся контакт к сигналу 5V. Если у вас есть двухконтактный пьезозуммер, подключите один вывод к сигналу GND, а другой - к выводу Arduino 7.

Подключите кнопки переключателей согласно схемам. Первая кнопка (кнопка прыжка) подключена к контакту 1 Arduino, а вторая (кнопка стрельбы) подключена к контакту 6 Arduino. Светодиоды управляются только кнопками, а не Arduino. Анод подключается к контакту кнопки, который подключен к Arduino, а катод подключается к земле.

Код

  • воин_долла
dollar_warrior Arduino
 #include  const int rs =12, en =11, d4 =5, d5 =4, d6 =3, d7 =2; const int buttonPin1 =1; const int buttonPin2 =6; const int buzzer =7; unsigned long pts =0; // установить buttonstatesbool buttonState1 =0; bool buttonState2 =0; // случайное число для положения препятствияint randomNums [6]; // случайное число для количества препятствий int randomNum =0; // случайное число для позиции ptsint randomNums1 [3]; // случайное число для числа ptsint randomNum1 =0; // время задержки запуска, которое постепенно уменьшается unsigned int myDelay =500; // сделало это логическое значение, чтобы проверить, нажата ли кнопка2, потому что если он нажимается один раз в первом цикле for, я хочу, чтобы препятствия не записывались до конца itbool temp =0; // эта переменная хранит позиции воина во время стрельбы. может быть 16 позиций, потому что у воина 16 позиций. int tempI [16]; // я использую это логическое значение, чтобы проверить, захвачена ли точка bool temp1 =0; // используйте эту переменную для сохранения позиции захваченной точки. это должен быть массив и для хранения положения всех точек в одной итерации первого цикла for. если он сохранил только одну позицию, то «старая» точка вернется в новую итерацию int tempI1 [3]; // используйте эту переменную, чтобы получить количество выстрелов воина, которое также является длиной массива tempIint button2IsPressed =0; LiquidCrystal lcd (rs, en, d4, d5, d6, d7); void setup () {/ / установить количество столбцов и строк ЖК-дисплея:lcd.begin (16, 2); // установка режима закрепления кнопки pinMode (buttonPin1, INPUT); pinMode (buttonPin2, ВХОД); pinMode (зуммер, ВЫХОД); lcd.setCursor (4,0); lcd.print («ИГРА»); lcd.setCursor (2,1); lcd.print («НАЧИНАЕТСЯ»); lcd.print («5»); задержка (1000); lcd.setCursor (12,1); lcd.print («4»); задержка (1000); lcd.setCursor (12,1); lcd.print ("3"); задержка (1000); lcd.setCursor (12,1); lcd.print ("2"); задержка (1000); lcd.setCursor (12,1); lcd.print («1»); задержка (1000); lcd.clear ();} void loop () {здесь:randomNum =random (5); для (int i =0; i  9 &&pts <20) {lcd.setCursor (14,0); myDelay =400; } else if (pts> 19 &&pts <30) {lcd.setCursor (14,0); myDelay =300; } else if (pts> 29 &&pts <50) {myDelay =200; lcd.setCursor (14,0); } иначе, если (pts> =50) {pts =0; myDelay =500; lcd.clear (); lcd.setCursor (5,0); lcd.print («ПОБЕДА»); тон (зуммер, 262); задержка (200); тон (зуммер, 330); задержка (200); тон (зуммер, 392); задержка (100); тон (зуммер, 330); задержка (100); тон (зуммер, 392); задержка (100); тон (зуммер, 523); задержка (200); noTone (зуммер); задержка (3000); lcd.clear (); перейти сюда; } else lcd.setCursor (15,0); lcd.print (pts); buttonState1 =digitalRead (buttonPin1); buttonState2 =digitalRead (buttonPin2); // установка препятствий, если воин не стрелял или стрелял, но тоже прыгнул if (! temp) {for (int j =0; j  randomNums [j]) {lcd.setCursor (randomNums [j], 1); lcd.print ("#"); }}} // установка ptsif (! temp1) {for (int j =0; j  

Схема

game_aUIjA6VZxX.fzz

Производственный процесс

  1. Шахматы
  2. Пинбол
  3. Футбол
  4. Игра с гироскопом Arduino с MPU-6050
  5. Рулетка DIY 37 LED
  6. 3D RGB Arduclock
  7. MyRiver
  8. Игра с джойстиком
  9. Найди меня
  10. Осциллограф 10 Гц-50 кГц для самостоятельного изготовления на ЖК-дисплее 128x64