Что бы кот не ходил где не нужно решился сделать отпугиватель кота.
Это первое моё устройство.
Купил автоматический освежитель воздуха, датчик движения HC-SR501, ардуино нано, инфракрасный приёмник.
Задумка такая - включая на расстоянии пультом ду от телевизора, должен загораться светодиод и при срабатывании датчика движения должен производиться пшик из баллона 1 секунду, следующий пшик должен случиться через заданное время.
Написал скетч, спаял эту конструкцию, мотор подключил на прямую к цифровому контакту, освежитель работал от 2х пальчиковых батареек.
Включаю устройство, нажимаю кнопку на пульте ду, светодиод загорается, мотор не шевелится.
Требуется помочь со скетчем и вероятно схемой. Cледовало подключить мотор через транзистор к 5в?
Это первое моё устройство.
Купил автоматический освежитель воздуха, датчик движения HC-SR501, ардуино нано, инфракрасный приёмник.
Задумка такая - включая на расстоянии пультом ду от телевизора, должен загораться светодиод и при срабатывании датчика движения должен производиться пшик из баллона 1 секунду, следующий пшик должен случиться через заданное время.
Написал скетч, спаял эту конструкцию, мотор подключил на прямую к цифровому контакту, освежитель работал от 2х пальчиковых батареек.
Включаю устройство, нажимаю кнопку на пульте ду, светодиод загорается, мотор не шевелится.
Требуется помочь со скетчем и вероятно схемой. Cледовало подключить мотор через транзистор к 5в?
C++:
// подключаем библиотеку https://github.com/z3t0/Arduino-IRremote
#include "IRremote.h"
// цифровой пин для сервопривода
const int servoPin = 2;
// цифровой пин для диода
const int ledPin = 3;
// цифровой пин для инфракрасного приёмника
const int irdaPin = 4;
// цифровой пин для датчика движения
const int sensorPin = 5;
// код кнопки пульта ДУ
//irCode = '0xE0E040BF'; как передать в переменной?
// режим отладки, 1 - включён, 0 - отключён
int debug = 1;
// дефолтное значение для переменной led
int led = 0;
IRrecv irrecv(irdaPin);
decode_results irda;
void setup() {
pinMode(ledPin, OUTPUT);
pinMode(servoPin, OUTPUT);
pinMode(sensorPin, INPUT);
Serial.begin(9600);
irrecv.enableIRIn();
}
void loop() {
if (irrecv.decode(&irda)) {
if (debug) {
// отправляем значения с инфракрасного приёмника в последовательный порт компьютера
Serial.println(irda.value, HEX);
}
// если устройство не работает - включаем его
if (irda.value==0xE0E040BF&&led==0) {
// включаем светодиод
digitalWrite(ledPin, HIGH);
led = 1;
irda.value = 0;
}
// выключаем устройство
if (irda.value==0xE0E040BF&&led==1) {
// выключаем светодиод
digitalWrite(ledPin, LOW);
led = 0;
irda.value = 0;
}
irrecv.resume();
}
if (led==1) {
// читаем значение с датчика движения
int sensor = digitalRead(sensorPin);
if (debug) {
// отправляем значения с датчика движения в последовательный порт компьютера
Serial.println(sensor);
// пауза 1 секунда
delay(1000);
}
if (sensor==1) {
// включаем сервопривод
digitalWrite(servoPin, HIGH);
// пауза 1 секунда
delay(1000);
// отключаем сервопривод
digitalWrite(servoPin, LOW);
// пауза 10 секунд
delay(10000);
}
}
}
Вложения
-
61 KB Просмотры: 19
Изменено: