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

Автоматизация игры «Динозавр» в Chrome на Arduino и LDR с Python

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

Arduino UNO 1
Фоторезистор (LDR), 5 МОм 1

О проекте

Скучно в карантин? 🥴 Давайте поиграем в «Динозавра» из Chrome... ;)

Автоматизация игры «Динозавр» в Chrome на Arduino и LDR с Python
Автоматизация игры «Динозавр» в Chrome на Arduino и LDR с Python

Но что, если игра тоже надоедает? Автоматизируем её! 😉

Нам понадобятся Arduino и LDR. Также нужны базовые знания Python.

Настройка Arduino

Автоматизация игры «Динозавр» в Chrome на Arduino и LDR с Python

Подключите Arduino UNO с LDR. (Не забудьте добавить резистор!)

Автоматизация игры «Динозавр» в Chrome на Arduino и LDR с Python

Загрузите код для аналогового чтения значений LDR:

// Arduino Dino Game ! :)
int sensorPin = A0; // LDR на A0
int sensorValue = 0; // переменная для хранения значения с LDR
int thresholdValue = 45; // подбирается методом проб и ошибок

void setup() {
  Serial.begin(9600);
}

void loop() {
  sensorValue = analogRead(sensorPin); // читаем датчик
  // Serial.println(sensorValue); // раскомментируйте при первом запуске, чтобы определить thresholdValue
  if(sensorValue <= thresholdValue){ // условие обнаружения препятствия
    Serial.println(1); // отправляем 1, если условие истинно
  }
  delay(40); // задержка 40 мс
}

Закрепите LDR на мониторе, считайте аналоговые значения при появлении препятствия, установите это значение как thresholdValue и обновите условие if. Готово! ✌️ Часть с Arduino завершена.

Можно добавить сервопривод для нажатия «Пробела», но в карантине его не было. Поэтому используем Python для эмуляции нажатия.

Код на Python

Автоматизация игры «Динозавр» в Chrome на Arduino и LDR с Python

Скопируйте код, внесите необходимые изменения. Используются модули pyserial (чтение последовательного порта) и PyAutoGUI (эмуляция нажатия клавиши «Вверх»).

import subprocess
import time
import pyautogui
import serial

subprocess.call([r'C:\Program Files\Mozilla Firefox\Firefox.exe',
 '-new-tab', 'https://chromedino.com/'])
# Для Chrome укажите путь к chrome.exe
# Я использую Firefox, поэтому открываю chromedino.com

time.sleep(6) // время на загрузку
print("All sett :)")

ser = serial.Serial('COM4') // обновите на ваш порт Arduino
ser.baudrate = '9600'

while True:
  h1 = ser.readline() // чтение данных
  if h1:
    ss = int(h1.decode('utf-8')) // декодирование в int
    if ss == 1: // препятствие обнаружено
      print("Oh :< Jump!! ")
      pyautogui.press('up') // авто-нажатие [UP]

Запустите Python-код и подберите положение LDR методом проб и ошибок. Автоматизированная игра готова! 💃 🕺

Автоматизация игры «Динозавр» в Chrome на Arduino и LDR с Python

Можно улучшить, добавив второй LDR для обнаружения птиц.

GitHub: https://github.com/rafitc/arduDino

Код

Фрагмент кода #1 (Arduino)

// Arduino Dino Game ! :)
int sensorPin = A0;
int sensorValue = 0;
int thresholdValue = 43;
void setup() {
  Serial.begin(9600);
}
void loop() {
  sensorValue = analogRead(sensorPin);
  // Serial.println(sensorValue);
  if(sensorValue <= thresholdValue){
    Serial.println(1);
  }
  delay(50);
}

Фрагмент кода #2 (Python)

import subprocess
import time
import pyautogui
import serial
subprocess.call([r'C:\Program Files\Mozilla Firefox\Firefox.exe',
 '-new-tab', 'https://chromedino.com/'])
time.sleep(6)
print("All sett :)")
ser = serial.Serial('COM4')
ser.baudrate = '9600'
while True:
  h1 = ser.readline()
  if h1:
    ss = int(h1.decode('utf-8'))
    if ss == 1:
      print("Oh :< Jump!! ")
      pyautogui.press('up')

GitHub

https://github.com/rafitc/arduDino

Схемы

Автоматизация игры «Динозавр» в Chrome на Arduino и LDR с Python

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

  1. Создание потрясающей системы Ambilight для монитора на Arduino
  2. TeleBall: ретро портативная игровая консоль на Arduino — собирайте сами Breakout и Tennis for Two
  3. Создание классической игры Pong на Arduino UNO с OLED-дисплеем: пошаговый урок
  4. DIY USB-геймпад на Arduino: собственный высокопроизводительный контроллер
  5. Автоматическая LEGO Star Wars пушка на Arduino Uno
  6. Arduino Breakout на сенсорном TFT 2.4″: классическая аркада своими руками
  7. Умный вольтметр на Arduino и смартфоне — простое DIY-проект
  8. IoT-монитор пульса в реальном времени на Arduino и MAX30100
  9. Веб-сервер на Arduino Uno WiFi: управление LED через браузер
  10. Pixel Chaser: игра на один тап с NeoPixel Ring и Arduino Nano