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

Строим Iron Man на Arduino: компоненты, сенсоры и пошаговый гайд

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

Идея

Оживляем фигурку Iron Man. При приближении человека (≤1.3 м) ультразвуковой датчик срабатывает → Arduino проигрывает случайную фразу Тони Старка через DFPlayer → включает реле (голова, грудь, руки) для анимации.

Аудиофайлы

Фразы из фильмов, переименованы в 001.mp3, 002.mp3… загружены на microSD в DFPlayer. Пример: GitHub.

Схема подключения

Код (Homem_de_FerroV5.ino)

#include 
#include 
#include 

SoftwareSerial mySoftwareSerial(6, 7); // RX, TX
DFRobotDFPlayerMini myDFPlayer;

#define TRIG 3
#define ECHO 4
#define VCC_US 2
#define GND_US 5

#define RELAY_HEAD 13
#define RELAY_CHEST 12
#define RELAY_LEFT 11
#define RELAY_RIGHT 10

Ultrasonic ultra(TRIG, ECHO);
int distancia;
int x = 3;
String buf;

void setup() {
  mySoftwareSerial.begin(9600);
  Serial.begin(115200);

  if (!myDFPlayer.begin(mySoftwareSerial)) {
    Serial.println("DFPlayer не найден");
    while (true);
  }
  myDFPlayer.setTimeOut(500);
  myDFPlayer.volume(30);
  myDFPlayer.EQ(0);
  int maxSongs = myDFPlayer.readFileCounts(DFPLAYER_DEVICE_SD);

  pinMode(RELAY_HEAD, OUTPUT);
  pinMode(RELAY_CHEST, OUTPUT);
  pinMode(RELAY_LEFT, OUTPUT);
  pinMode(RELAY_RIGHT, OUTPUT);
  pinMode(VCC_US, OUTPUT);
  pinMode(GND_US, OUTPUT);
  digitalWrite(GND_US, LOW);
  digitalWrite(VCC_US, HIGH);
  digitalWrite(RELAY_HEAD, HIGH);
  digitalWrite(RELAY_CHEST, HIGH);
  digitalWrite(RELAY_LEFT, HIGH);
  distancia = ultra.Ranging(CM);
}

void loop() {
  distancia = ultra.Ranging(CM);
  Serial.println(String(distancia) + " cm");

  if (distancia <= 150 && x == 3) {
    buf = String(random(1, 19));
    play();
    delay(3000);
    while (ultra.Ranging(CM) <= 150) {
      digitalWrite(RELAY_LEFT, HIGH);
      x = 2;
      delay(1200);
    }
  } else {
    digitalWrite(RELAY_RIGHT, LOW);
    x = 3;
  }
}

void play() {
  digitalWrite(RELAY_RIGHT, HIGH);
  delay(300);
  digitalWrite(RELAY_RIGHT, LOW);
  delay(300);
  digitalWrite(RELAY_RIGHT, HIGH);
  delay(300);
  digitalWrite(RELAY_RIGHT, LOW);
  delay(300);

  if (buf.toInt() >= 1 && buf.toInt() <= maxSongs) {
    myDFPlayer.play(buf.toInt());
  }
}

Примечание: реле активные LOW — HIGH = выкл, LOW = вкл. Логика в коде учитывает это.

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

  1. Цифровые кости на Arduino: генератор случайных чисел с LCD-дисплеем и кнопкой
  2. Find Me: Умный поисковик вещей на Arduino и Bluetooth
  3. Сборка функционального 3D-печатного манипулятора на Arduino: пошаговое руководство
  4. DIY-контроллер увлажнителя на Arduino с реле: безопасная работа с высоким напряжением
  5. Бесконтактный термометрический шлюз для быстрого и точного скрининга
  6. PiBot: Робот-пианист на Arduino для точного исполнения музыки
  7. NeoPixel Matrix Pong на Arduino Nano: неоновая игра Pong на матрице 15×10
  8. Метеостанция на Arduino и ThingSpeak: температура и влажность в облаке
  9. Своё рулевое управление (джойстик) для игр на Arduino
  10. FM-радиоприемник на Arduino и модуле TEA5767