Sensitive Jack-o'-Lantern
A jack-o'-lantern which change color when someone passes in front of it.
Components and supplies
1
IR Remote Control
1
IR Receiver Module from Kit
1
Super Starter Kit UNO R3 Project from Elegoo
3
General Purpose Transistor NPN
15
Resistor 221 ohm
1
Ultrasonic Sensor
1
Arduino UNO
3
Resistor 1k ohm
Apps and platforms
1
Arduino IDE
Project description
Code
Sensitive Jack-o'-lantern
arduino
1//Sensitive Jack-o'-lantern with ELEGOO 2 3#include <IRremote.h> 4 5//Ultrasonic sensor 6int eco = 8; 7int trigger = 7; 8//IR Receiver Module 9int receiver = 9; 10//variables 11int led_color = 0; 12int command = 0; 13 14IRrecv irrecv(receiver); // create instance of 'irrecv' 15decode_results results; // create instance of 'decode_results' 16 17 18//This function returns a number from 0 to 11 according which command IR Module receives 19int translateIR() // takes action based on IR code received 20{ 21 22 switch (results.value) 23 24 { //Button 25 case 0xFFA25D: return 10; break; //POWER 26 case 0xFFE21D: return 11; break; //FUNC/STOP 27 case 0xFF6897: return 0; break; //0 28 case 0xFF30CF: return 1; break; //1 29 case 0xFF18E7: return 2; break; //2 30 case 0xFF7A85: return 3; break; //3 31 case 0xFF10EF: return 4; break; //4 32 case 0xFF38C7: return 5; break; //5 33 case 0xFF5AA5: return 6; break; //6 34 case 0xFF42BD: return 7; break; //7 35 case 0xFF4AB5: return 8; break; //8 36 case 0xFF52AD: return 9; break; //9 37 case 0xFFFFFFFF: return command; break; //REPEAT 38 39 default: 40 return command; //OTHER 41 42 } 43 delay(500); // Do not get immediate repeat 44 45} //END translateIR 46 47 48//This function takes an action based on variable c which determines which LEDs turn on 49void color(int c) { 50 switch (c) { 51 case 0: 52 digitalWrite(13, LOW); 53 digitalWrite(12, LOW); 54 digitalWrite(11, LOW); 55 break; 56 case 1: 57 digitalWrite(13, HIGH); 58 digitalWrite(12, LOW); 59 digitalWrite(11, LOW); 60 break; 61 case 2: 62 digitalWrite(13, LOW); 63 digitalWrite(12, HIGH); 64 digitalWrite(11, LOW); 65 break; 66 case 3: 67 digitalWrite(13, HIGH); 68 digitalWrite(12, HIGH); 69 digitalWrite(11, LOW); 70 break; 71 case 4: 72 digitalWrite(13, LOW); 73 digitalWrite(12, LOW); 74 digitalWrite(11, HIGH); 75 break; 76 case 5: 77 digitalWrite(13, HIGH); 78 digitalWrite(12, LOW); 79 digitalWrite(11, HIGH); 80 break; 81 case 6: 82 digitalWrite(13, LOW); 83 digitalWrite(12, HIGH); 84 digitalWrite(11, HIGH); 85 break; 86 case 7: 87 digitalWrite(13, HIGH); 88 digitalWrite(12, HIGH); 89 digitalWrite(11, HIGH); 90 break; 91 } 92} 93//End color 94 95void setup() { 96 //IR 97 pinMode(receiver, OUTPUT); //Pin 9 98 99 100 //Ultrasound sensor 101 pinMode(eco, INPUT); //Pin 8 102 pinMode(trigger, OUTPUT); //Pin 7 103 104 //Pin's LED 105 pinMode(13, OUTPUT); 106 pinMode(12, OUTPUT); 107 pinMode(11, OUTPUT); 108 109 irrecv.enableIRIn(); // Start the receiver 110 111} 112 113void loop() { 114 115 if (irrecv.decode(&results)) // have we received an IR signal? 116 { 117 command = translateIR(); 118 if(command<=7) color(command); 119 Serial.println(command); 120 irrecv.resume(); // receive the next value 121 } 122 123 while (command == 11) { // numeber 11 activates the ultrasound sensor 124 digitalWrite( trigger, LOW); 125 126 digitalWrite( trigger, HIGH); 127 128 delayMicroseconds( 10 ); 129 130 digitalWrite( trigger, LOW ); 131 132 long tm = pulseIn( eco, HIGH); 133 134 long r = 0.0343 * tm / 2; //cm 135 136 delay(20); 137 138 if (r <= 40) { //if r<40cm this means that someone passes in front of it 139 led_color = random(0, 8); //In this way it can light the LEDs casually 140 color(led_color); 141 delay(500); 142 } 143 144 if (irrecv.decode(&results)) // have we received an IR signal? 145 { 146 command = translateIR(); 147 Serial.println(command); 148 irrecv.resume(); // receive the next value 149 150 } 151 } 152 153 154} 155
Documentation
schematic
schematic
schematic
schematic
Comments
Only logged in users can leave comments