Хэллоуин-пранк на Arduino: PIR-датчик движения, светодиоды и MP3-звук
Компоненты и материалы
| Arduino UNO | 1 |
| PIR-датчик движения | 1 |
| MP3-модуль (с распаянными кнопками) | 1 |
| Красные светодиоды 5 мм (глаза) | 2 |
| Белый светодиод (эффект молнии) | 1 |
| Двухканальный релейный модуль | 1 |
О проекте
Хэллоуинский прANK, сделанный год назад. Реагирует на движение перед собой: угрожающе рычит, мигают красные глаза, вспыхивает «молния». Напугало моих детей наповал, когда мы вернулись от «сладкоесть или гадость» и забыли про коробку на крыльце >:)
Проект состоит из двух частей: (1) подключение PIR-датчика и светодиодов, (2) взаимодействие с MP3-плеером для воспроизведения звука.
Часть 1: PIR-датчик и свет
Простой датчик для интерфейса с Arduino, идеален для Хэллоуина. Скетч монтируется в маску — светящиеся глаза и вспышки.
Часть 2: Звук через MP3-плеер
Подключаем дешёвый MP3-плеер (~$3 на eBay) к Arduino вместо дорогого шилда. Отлично работает для воспроизведения одного звука.
Код
Halloween Arduino scare box
// Пример использования PIR-датчика, отлично для хэллоуинских пранков во дворе или на крыльце.
// Видео: часть 1 — PIR и свет: https://youtu.be/ZAUXMoygVOU
// Часть 2 — звук: https://www.youtube.com/watch?v=uR_UTPioQYc
int pirSensor = 2;
int previousPin = 3;
int pausePin = 4;
int statusLed = 10;
int led = 9; // пин светодиода (глаза)
void setup() {
pinMode(pirSensor, INPUT);
pinMode(statusLed, OUTPUT);
pinMode(previousPin, OUTPUT);
pinMode(pausePin, OUTPUT);
pinMode(led, OUTPUT);
}
void loop() {
if (digitalRead(pirSensor) == HIGH) {
// ЗВУК!
digitalWrite(pausePin, HIGH);
delay(100);
digitalWrite(previousPin, LOW);
delay(100);
digitalWrite(previousPin, HIGH);
delay(2000);
// ЭФФЕКТ «СВЕТЯЩИЕСЯ ГЛАЗА»
digitalWrite(statusLed, LOW);
delay(100);
digitalWrite(statusLed, HIGH);
analogWrite(led, 0);
for (int i = 0; i < 255; i++) {
Serial.println(i);
analogWrite(led, i);
delay(5);
}
digitalWrite(statusLed, LOW);
delay(100);
digitalWrite(statusLed, HIGH);
delay(100);
digitalWrite(statusLed, LOW);
delay(100);
digitalWrite(statusLed, HIGH);
delay(100);
digitalWrite(statusLed, LOW);
delay(100);
digitalWrite(statusLed, HIGH);
delay(100);
digitalWrite(statusLed, LOW);
delay(2000);
for (int i = 255; i >= 0; i--) {
Serial.println(i);
analogWrite(led, i);
delay(5);
}
digitalWrite(statusLed, HIGH);
analogWrite(led, 0);
// КОНЕЦ ЭФФЕКТА ГЛАЗ
// КОНЕЦ ЗВУКА
delay(2000);
digitalWrite(previousPin, HIGH);
delay(100);
digitalWrite(pausePin, LOW);
delay(100);
digitalWrite(pausePin, HIGH);
delay(1000);
} else {
digitalWrite(statusLed, HIGH);
analogWrite(led, 0);
}
}
Схемы
Хорошо объяснено в видео, если есть вопросы.
Производственный процесс
- Как работают схемы на PIR-датчиках: проектирование, принцип работы и реальные применения
- Isorg запускает 6-дюймовый полноэкранный мульти-фингер сканер отпечатков пальцев
- Построение надёжного Temperature & Sensor API на Raspberry Pi с модулем GY‑91
- Создайте домашний монитор температуры на Raspberry Pi с MCP9808, InfluxDB и Grafana
- Мастерство GPIO Raspberry Pi: подключение PIR-датчика движения на B+/Model 2
- Система домашней безопасности на Raspberry Pi: обнаружение движения PIR + камера с email-уведомлениями
- Подключение, калибровка и программирование PIR-датчика HC‑SR501 с Raspberry Pi
- Датчик эмоций и ЭЭГ: низкобюджетное железо для детекции эмоций в реальном времени
- UnifiedWater v1: полный набор датчиков качества воды на Arduino MKR GSM
- Мониторинг состояния реки: Arduino-система контроля качества воды