Управление сервоприводом при помощи датчика звука на Arduino

1. Введение

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

2. Необходимые компоненты

Для создания данной системы потребуются следующие компоненты:

  • Arduino Uno

  • Датчик звука

  • Сервопривод

  • Соединительные провода

3. Подключение компонентов

Датчик звука:

  • VCC подключаем к 5V на Arduino.

  • GND подключаем к GND на Arduino.

  • Аналоговый выход (A0) подключаем к аналоговому пину A0 на Arduino.

Сервопривод:

  • Сигнальный провод сервопривода подключаем к цифровому пину 9 на Arduino.

  • Питание (VCC) подключаем к 5V на Arduino.

  • GND сервопривода подключаем к GND на Arduino.

Схема подключения сервопривода к Arduino

4. Код программы

Ниже приведен код, который нужно загрузить в Arduino для работы системы:

#include <Servo.h>
#define SENSOR_PIN A0     // Пин Arduino, подключенный к пину датчика звука
#define SERVO_PIN 9       // Пин Arduino, подключенный к пину серво
#define TIME_PERIOD 5000  // в миллисекундах
Servo servo;  // создаем объект servo для управления серво
// переменные будут изменяться:
int lastSoundState;      // предыдущее состояние датчика звука
int currentSoundState;   // текущее состояние датчика звука
unsigned long lastTime;  // текущее состояние датчика звука
int angle = 0;
void setup() {
  Serial.begin(9600);          // инициализируем сериализацию
  pinMode(SENSOR_PIN, INPUT);  // устанавливаем пин Arduino в режим ввода
  servo.attach(SERVO_PIN);     // присоединяем сервомотор к пину 9 с объектом servo
  servo.write(angle);
  currentSoundState = digitalRead(SENSOR_PIN);
}
void loop() {
  lastSoundState = currentSoundState;           // сохраняем предыдущее состояние
  currentSoundState = digitalRead(SENSOR_PIN);  // читаем новое состояние
  if (lastSoundState == HIGH && currentSoundState == LOW) {  // изменение состояния: HIGH -> LOW
    Serial.println("Обнаружен звук");
    angle = 90;
    servo.write(angle);  // управляем сервоприводом, поворачиваем на 90 градусов
    lastTime = millis();
  }
  if (angle == 90 && (millis() - lastTime) > TIME_PERIOD) {
    angle = 0;
    servo.write(angle);  // управляем сервоприводом, поворачиваем на 0 градусов
  }
}

5. Заключение

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

Создание таких проектов помогает лучше понять основы электроники и программирования, а также развивает навыки интеграции различных компонентов в одну систему. Надеемся, что данное руководство вдохновит вас на создание собственных проектов и экспериментов с платформой Arduino.