Components and supplies
LED (generic)
Speaker: 0.25W, 8 ohms
DFPlayer
Servos (Tower Pro MG996R)
Arduino MKR1000
Tools and machines
Soldering iron (generic)
Apps and platforms
Arduino IDE
MIT App Inventor
Project description
Code
Mini Christmas Show
arduino
1#include <DFRobotDFPlayerMini.h> //DFPlayer MP3 Module control library 2#include <Servo.h> //Servo motors control library 3#include <WiFi101.h> //Wifi library 4 5//Defining constants for pins 6//Santa and Elf Outputs 7const int SantaRHand = 0; 8const int SantaLHand = 1; 9const int ElfRHand = 2; 10const int ElfLHand = 3; 11//Tree Star pins 12const int TreeStar1 = 6; 13const int TreeStar2 = 7; 14const int TreeStar3 = 8; 15//Tree Star Patterns 16const int TreeLine1 = 9; 17const int TreeLine2 = 10; 18const int TreeLine3 = 11; 19//Defining variables 20//Defining Tree Pattern Variable 21int TreePattern = 1; 22//Defining MP3 player variable 23int CurrentSong =1; 24DFRobotDFPlayerMini myDFPlayer; //Creating DFPlayer object 25 26Servo myservo1; //Santa right hand instance 27Servo myservo2; //Santa left hand instance 28Servo myservo3; //Elf right hand instance 29Servo myservo4; //Elf left hand instance 30 31char ssid[] = "YourSSIDName"; // your network SSID (name) 32char pass[] = "YourSSIDPassword"; // your network password 33//int keyIndex = 0; // your network key Index number (needed only for WEP) 34char current_state = 'a'; 35int status = WL_IDLE_STATUS; 36WiFiServer server(80); 37 38void setup() { 39 Serial1.begin(9600); //Initializing serial communication to communicate with DFPlayer module 40 //Set TreeLine Pins to Outputs 41 pinMode(TreeLine1, OUTPUT); 42 pinMode(TreeLine2, OUTPUT); 43 pinMode(TreeLine3, OUTPUT); 44 while(!myDFPlayer.begin(Serial1)){} //Wait until DFPlayer starts 45 myDFPlayer.volume(30); //Setting the volume of DFPlayer 0-30 46 myservo1.attach(SantaRHand); //assigning servo objects to pins 47 myservo2.attach(SantaLHand); 48 myservo3.attach(ElfRHand); 49 myservo4.attach(ElfLHand); 50 51 // attempt to connect to Wifi network: 52 while ( status != WL_CONNECTED) { 53 // Connect to WPA/WPA2 network. Change this line if using open or WEP network: 54 status = WiFi.begin(ssid, pass); 55 // wait 10 seconds for connection: 56 delay(10000); 57 } 58 server.begin(); // start the web server on port 80 59} 60 61void loop() { 62 //////////////////////////////////////////////////////////////////////////////////////////// 63 64 65 66 WiFiClient client = server.available(); // listen for incoming clients 67 68 if (client) { // if you get a client 69 String currentLine = ""; // make a String to hold incoming data from the client 70 while (client.connected()) { // loop while the client's connected 71 if (client.available()) { // if there's bytes to read from the client, 72 char c = client.read(); // read a byte, then 73 if (c == '\n') { // if the byte is a newline character 74 75 // if the current line is blank, you got two newline characters in a row. 76 // that's the end of the client HTTP request, so send a response: 77 if (currentLine.length() == 0) { 78 // HTTP headers always start with a response code (e.g. HTTP/1.1 200 OK) 79 // and a content-type so the client knows what's coming, then a blank line: 80 client.println("HTTP/1.1 200 OK"); 81 client.println("Content-type:text/html"); 82 client.println(); 83 84 // the content of the HTTP response follows the header: 85 //client.print("Click <a href=\\"/H\\">here</a> turn the LED on pin 6 on<br>"); 86 // client.print("Click <a href=\\"/L\\">here</a> turn the LED on pin 6 off<br>"); 87 // client.print("Click <a href=\\"/B\\">here</a> Blink the LED on pin 6 On and Off<br>"); 88 // The HTTP response ends with another blank line: 89 // client.println(); 90 91 // break out of the while loop: 92 break; 93 } 94 else { // if you got a newline, then clear currentLine: 95 currentLine = ""; 96 } 97 } 98 else if (c != '\r') { // if you got anything else but a carriage return character, 99 currentLine += c; // add it to the end of the currentLine 100 } 101 102 // Check to see if the client request 103 104 if (currentLine.endsWith("GET /A")) { 105 current_state = 'a'; // Show start request 106 StartGreeting(); //Jump to greeting function (move hands) 107 myDFPlayer.play(1); //play first song on SD card 108 } 109 if (currentLine.endsWith("GET /B")) { 110 current_state = 'b'; // Show stop request 111 } 112 if (currentLine.endsWith("GET /C")) { 113 StartGreeting(); // Greeting request 114 } 115 //Tree Pattern Change Button 116 if (currentLine.endsWith("GET /D")) { 117 TreePattern = 1; //Change tree pattern 118 } 119 if (currentLine.endsWith("GET /E")) { 120 TreePattern = 2; //Change tree pattern 121 } 122 if (currentLine.endsWith("GET /F")) { 123 TreePattern = 3; //Change tree pattern 124 } 125 //Song Change Button 126 if (currentLine.endsWith("GET /G")) { 127 myDFPlayer.play(1); //Play First song 128 } 129 if (currentLine.endsWith("GET /H")) { 130 myDFPlayer.play(3); //Play Second Song 131 } 132 if (currentLine.endsWith("GET /I")) { 133 myDFPlayer.pause(); //Stop Playing songs (Pause) 134 } 135 } 136 } 137 // close the connection: 138 client.stop(); 139 140 } 141 //////////////////////////////////////////////////////////////////////////////////////////// 142 143 if (current_state == 'a') { // Show start request 144 turnOnTree(); 145 } 146 147 if (current_state == 'b') { // Show Stop request 148 turnOffTree(); 149 myDFPlayer.pause(); 150 } 151 152} 153 154 155 void StartGreeting(){ 156 myDFPlayer.play(2); //Play greeting sound 157 analogWrite(TreeStar1,100); //adjust color of the star 158 analogWrite(TreeStar2,100); 159 analogWrite(TreeStar3,100); 160 digitalWrite(TreeLine1, HIGH); //change tree lines pattern 161 digitalWrite(TreeLine2, HIGH); 162 digitalWrite(TreeLine3, HIGH); 163 delay(6500); 164 SantaElfHi(); //move hands 165 SantaElfHi(); 166 SantaElfHi(); 167 analogWrite(TreeStar1,100); 168 analogWrite(TreeStar2,100); 169 analogWrite(TreeStar3,100); 170 digitalWrite(TreeLine1, HIGH); 171 digitalWrite(TreeLine2, HIGH); 172 digitalWrite(TreeLine3, HIGH); 173 delay(16000); 174 } 175 176void SantaElfHi(){ //Move Santa and Elf Hands 177 myservo1.write(7); 178 delay(30); 179 myservo2.write(70); 180 delay(30); 181 myservo3.write(7); 182 delay(30); 183 myservo4.write(70); 184 delay(30); 185 analogWrite(TreeStar1,200); 186 analogWrite(TreeStar2,100); 187 analogWrite(TreeStar3,200); 188 digitalWrite(TreeLine1, HIGH); 189 digitalWrite(TreeLine2, HIGH); 190 digitalWrite(TreeLine3, HIGH); 191 delay(1000); 192 analogWrite(TreeStar1,0); 193 analogWrite(TreeStar2,0); 194 analogWrite(TreeStar3,0); 195 digitalWrite(TreeLine1, LOW); 196 digitalWrite(TreeLine2, LOW); 197 digitalWrite(TreeLine3, LOW); 198 myservo1.write(70); 199 delay(30); 200 myservo2.write(7); 201 delay(30); 202 myservo3.write(70); 203 delay(30); 204 myservo4.write(7); 205 delay(30); 206 delay(1000); 207} 208void turnOffTree(){ 209 //turn off all leds 210 analogWrite(TreeStar1,0); 211 analogWrite(TreeStar2,0); 212 analogWrite(TreeStar3,0); 213 digitalWrite(TreeLine1, LOW); 214 digitalWrite(TreeLine2, LOW); 215 digitalWrite(TreeLine3, LOW); 216} 217 218 219void turnOnTree() { 220 //turn on tree leds with the selected pattern 221 switch (TreePattern) { 222 case 1: 223 analogWrite(TreeStar1,255); 224 digitalWrite(TreeLine1, HIGH); 225 delay(100); 226 analogWrite(TreeStar1,0); 227 analogWrite(TreeStar2,255); 228 digitalWrite(TreeLine2, HIGH); 229 delay(100); 230 analogWrite(TreeStar2,0); 231 analogWrite(TreeStar3,255); 232 digitalWrite(TreeLine3, HIGH); 233 delay(100); 234 analogWrite(TreeStar3,0); 235 digitalWrite(TreeLine1, LOW); 236 digitalWrite(TreeLine2, LOW); 237 digitalWrite(TreeLine3, LOW); 238 delay(100); 239 break; 240 241 case 2: 242 analogWrite(TreeStar1,255); 243 analogWrite(TreeStar2,0); 244 analogWrite(TreeStar3,255); 245 digitalWrite(TreeLine1, HIGH); 246 digitalWrite(TreeLine2, HIGH); 247 digitalWrite(TreeLine3, HIGH); 248 delay(100); 249 analogWrite(TreeStar1,255); 250 analogWrite(TreeStar2,255); 251 analogWrite(TreeStar3,0); 252 digitalWrite(TreeLine1, LOW); 253 digitalWrite(TreeLine2, LOW); 254 digitalWrite(TreeLine3, LOW); 255 delay(50); 256 analogWrite(TreeStar1,0); 257 analogWrite(TreeStar2,255); 258 analogWrite(TreeStar3,255); 259 digitalWrite(TreeLine1, HIGH); 260 digitalWrite(TreeLine2, HIGH); 261 digitalWrite(TreeLine3, HIGH); 262 delay(100); 263 analogWrite(TreeStar1,255); 264 analogWrite(TreeStar2,200); 265 analogWrite(TreeStar3,100); 266 digitalWrite(TreeLine1, LOW); 267 digitalWrite(TreeLine2, LOW); 268 digitalWrite(TreeLine3, HIGH); 269 delay(100); 270 analogWrite(TreeStar1,255); 271 analogWrite(TreeStar2,0); 272 analogWrite(TreeStar3,255); 273 digitalWrite(TreeLine1, LOW); 274 digitalWrite(TreeLine2, HIGH); 275 digitalWrite(TreeLine3, LOW); 276 delay(100); 277 analogWrite(TreeStar1,255); 278 analogWrite(TreeStar2,0); 279 analogWrite(TreeStar3,0); 280 digitalWrite(TreeLine1, HIGH); 281 digitalWrite(TreeLine2, LOW); 282 digitalWrite(TreeLine3, LOW); 283 delay(100); 284 analogWrite(TreeStar1,0); 285 analogWrite(TreeStar3,255); 286 digitalWrite(TreeLine1, LOW); 287 digitalWrite(TreeLine2, LOW); 288 digitalWrite(TreeLine3, LOW); 289 delay(100); 290 break; 291 292 293 case 3: 294 analogWrite(TreeStar1,255); 295 digitalWrite(TreeLine1, HIGH); 296 digitalWrite(TreeLine2, LOW); 297 digitalWrite(TreeLine3, LOW); 298 delay(60); 299 analogWrite(TreeStar1,0); 300 analogWrite(TreeStar2,255); 301 digitalWrite(TreeLine1, LOW); 302 digitalWrite(TreeLine2, HIGH); 303 digitalWrite(TreeLine3, LOW); 304 delay(60); 305 analogWrite(TreeStar2,0); 306 analogWrite(TreeStar3,255); 307 digitalWrite(TreeLine1, LOW); 308 digitalWrite(TreeLine2, LOW); 309 digitalWrite(TreeLine3, HIGH); 310 delay(60); 311 analogWrite(TreeStar1,255); 312 analogWrite(TreeStar3,255); 313 digitalWrite(TreeLine1, LOW); 314 digitalWrite(TreeLine2, HIGH); 315 digitalWrite(TreeLine3, LOW); 316 delay(60); 317 break; 318 } 319} 320 321 322 323
Downloadable files
Mini Christmas show
Connection diagram
Mini Christmas show
Mini Christmas show
Connection diagram
Mini Christmas show
Documentation
Elf Body shapes
Elf Body shapes
Santa Dancing Template
Santa Dancing Template
Gift Box drawing
Gift Box drawing
Elf Body shapes
Elf Body shapes
Santa Dancing Template
Santa Dancing Template
Gift Box drawing
Gift Box drawing
Comments
Only logged in users can leave comments
majdjanineh
0 Followers
•0 Projects
Table of contents
Intro
1
0