gada888 发表于 2020-1-23 17:41:07

室内驱狗神器的诞生

不知你们有没有这样的经历,刚买的沙发,自己都不舍得坐呢,一个不看住,狗狗把沙发造的不要不要的。
这次这个项目就是告诉大家怎么造一个驱宠神器,神器放在沙发的上面,当PIR传感识别靠近的生物时,mp3马上语音警告,同时伺服电机带动打开的激光随机扫2秒,一方面吸引狗狗的注意,一方面驱赶狗狗。
https://v.youku.com/v_show/id_XNDUyMTExNjczMg==.html?spm=a2hzp.8244740.0.0

硬件清单
1.arduino uno

2.DF mp3

3.激光头5v

4.伺服电机9g

5.PIR传感

连线图

PIR脚位图

MP3文件拷贝目录

下面是代码
/*
made by gada888 in Luoyang China.Date:2020-1-20
*/
#include <SoftwareSerial.h>
SoftwareSerial Serial1(10, 11);
#include "Servo.h"
Servo ServoOne;                  // Generates an instance of a servo object
int ServoPosition = 0;         // Variable to be used to assign position of

int laserPin = 12; // choose the pin for the LED
int inputPin = 2; // choose the input pin (for PIR sensor)
int pirState = LOW; // we start, assuming no motion detected
int val = 0; // variable for reading the pin status

unsigned char order = {0xAA,0x06,0x00,0xB0};

void setup() {

ServoOne.attach(9);            // Assigns pin 9 as a servo

pinMode(laserPin, OUTPUT); // declare LED as output
pinMode(inputPin, INPUT); // declare sensor as input

Serial.begin(115200);
Serial1.begin(9600);
volume(0x1E);//闊抽噺璁剧疆0x00-0x1E
}
void loop(){

val = digitalRead(inputPin); // read input value

if (val == HIGH) { // check if the input is HIGH

digitalWrite(laserPin, HIGH); // turn LED ON

ServoPosition = random(0,90); // Generates a random number and stores it in ServoPosition
ServoOne.write(ServoPosition); // Commands servo to spin to position
delay(2000);                   // Delays for 1000 ms


if (pirState == LOW) {
// we have just turned on
Serial.println("Motion detected!");
// We only want to print on the output change, not state
pirState = HIGH;
play(0x01);//鎸囧畾鎾斁:0x01-鏂囦欢0001
//delay(1000);
}
} else {
digitalWrite(laserPin, LOW); // turn LED OFF
//playMP3;
//delay(1000);
if (pirState == HIGH){
// we have just turned off
Serial.println("Motion ended!");
// We only want to print on the output change, not state
pirState = LOW;
}
}
}
// =========FUNCTION============
void play(unsigned char Track)
{
unsigned char play = {0xAA,0x07,0x02,0x00,Track,Track+0xB3};//0xB3=0xAA+0x07+0x02+0x00,鍗虫渶鍚庝竴浣嶄负鏍¢獙鍜?
Serial1.write(play,6);
}
void volume( unsigned char vol)
{
unsigned char volume = {0xAA,0x13,0x01,vol,vol+0xBE};//0xBE=0xAA+0x13+0x01,鍗虫渶鍚庝竴浣嶄负鏍¢獙鍜?
Serial1.write(volume,5);
}

运行代码成功图

演示图
最后说一句,本人不养宠物。




hnyzcj 发表于 2020-1-23 18:54:34

虐待小动物

DFrJ5KYVQaH 发表于 2020-1-24 07:51:52

爱护小动物是一种美德

gada888 发表于 2020-1-28 12:02:32

hnyzcj 发表于 2020-1-23 18:54
虐待小动物

还好吧。那个激光头基本不会对动物带来伤害。

kylinpoet 发表于 2020-2-18 08:37:21

这个好,必须支持。
页: [1]
查看完整版本: 室内驱狗神器的诞生