1#include <Servo.h>
2#include "SoftwareSerial.h"
3#include "DFRobotDFPlayerMini.h"
4
5
6const int servo1 = 2;
7const int servo2 = 3;
8const int servo3 = 5;
9const int servo4 = 6;
10const int servo5 = 9;
11
12
13Servo myservo1;
14Servo myservo2;
15Servo myservo3;
16Servo myservo4;
17Servo myservo5;
18
19
20SoftwareSerial mySoftwareSerial(10, 11);
21DFRobotDFPlayerMini myDFPlayer;
22
23
24#define SENSORPIN 7
25
26
27unsigned long previousMillis = 0;
28const long pauseTime = 2000;
29bool isPlaying = false;
30bool pirEnabled = true;
31
32void setup() {
33 mySoftwareSerial.begin(9600);
34 Serial.begin(115200);
35 pinMode(SENSORPIN, INPUT);
36
37
38 myservo1.attach(servo1);
39 myservo2.attach(servo2);
40 myservo3.attach(servo3);
41 myservo4.attach(servo4);
42 myservo5.attach(servo5);
43
44
45 myservo1.write(75);
46 myservo2.write(87);
47 myservo3.write(50);
48 myservo4.write(85);
49 myservo5.write(85);
50 delay(1000);
51
52 Serial.println(F("Initializing DFPlayer..."));
53
54
55 if (!myDFPlayer.begin(mySoftwareSerial)) {
56 Serial.println(F("Unable to begin:"));
57 while (true);
58 }
59 Serial.println(F("DFPlayer Mini online."));
60 myDFPlayer.volume(30);
61}
62
63void openEyes() {
64 myservo3.write(80);
65 delay(1000);
66}
67
68void playSound() {
69 Serial.println("DFPlayer Working...");
70 myDFPlayer.play(1);
71 delay(5000);
72}
73
74void moveServos() {
75 Serial.println("Moving Servos...");
76
77 myservo1.write(65);
78 myservo2.write(75);
79 myservo5.write(105);
80 myservo4.write(65);
81 delay(pauseTime);
82
83
84 myservo1.write(85);
85 myservo2.write(105);
86 myservo5.write(75);
87 myservo4.write(105);
88 delay(pauseTime);
89
90
91 myservo1.write(75);
92 myservo2.write(87);
93 myservo4.write(85);
94 myservo5.write(85);
95 delay(pauseTime);
96
97
98 myservo3.write(50);
99 delay(pauseTime);
100}
101
102void loop() {
103 int pirSensor = digitalRead(SENSORPIN);
104
105
106 if (pirSensor == HIGH && pirEnabled) {
107 pirEnabled = false;
108 openEyes();
109 playSound();
110 moveServos();
111 pirEnabled = true;
112 }
113
114 delay(50);
115}