Don't Touch the Light Switch
Hi, i'm Aviv Friedman, i'm from Israel and i started 8th grade this month.
When you walk into a dark room, the first thing you naturally want to do is to turn on the light. But who touched that light just before you? Is it worth the risk, or better just to stay in the dark? You no longer will have to face this dilemma with the "don't touch the light switch" device.
Make the Circuit
Connect the servo, the distance sensor, and the battery holder to the Arduino Pro Mini. The wiring is shown in the diagram:
Servo:
yellow wire to 8
Black wire to GND
Red wire to VCC
Distance sensor:
VCC to VCC
Trig to 9
Echo to 10
GND to GND
Battery holder:
Red to RAW (not VCC!!!)
Black to GND
Coding
You need to use a programmer to upload the code to the Arduino. Make sure the battery is not connected when you do the upload. The program is here:
#include <Servo.h> Servo myservo; bool x = 0; int pos = 0; // defines pins numbers const int trigPin = 9; const int echoPin = 10; // defines variables long duration; int distance; void setup() { //myservo.attach(8); pinMode(trigPin, OUTPUT); pinMode(echoPin, INPUT); Serial.begin(9600); } void loop() { digitalWrite(trigPin, LOW); delayMicroseconds(2); digitalWrite(trigPin, HIGH); delayMicroseconds(10); digitalWrite(trigPin, LOW); duration = pulseIn(echoPin, HIGH); distance = duration * 0.034 / 2; Serial.print("Distance: "); Serial.println(distance); // The minimum distance needed to activate the switch if (distance < 10) { x = !x; if (x == 0) { myservo.attach(8); for (pos = 0; pos <= 180; pos += 50) { // in steps of 1 degree} myservo.write(pos); delay(500); myservo.detach(); // waits 15ms for the servo to reach the position } } if (x == 1) { myservo.attach(8); for (pos = 180; pos >= 0; pos -= 50) { myservo.write(pos); delay(100); myservo.detach(); } } delay(500); } }
Make the Wooden Button and Connect the Servo
Connect a piece of wood (approximately 4 cm by 2 cm by 1 cm) to the servo using one of the connectors that comes with the servo. Connect another piece of wood (approximately 5.5 cm by 4 cm by 1.5 cm), e.g. using tape, to the side of the base of the servo (so it will be the right distance from the switch). Adjust the thickness appropriately based on how far the switch is from the wall.
Attach to the Wall
Attach the servo (with the piece of wood attached) to the wall using blutack.
Make the Switch More Friendly
In order to make the switch more friendly, cut out a robot shape from a piece of light cardboard. Make holes for the distance sensor (i.e., the eyes). Feel free to decorate as you wish (e.g. mouth, etc.). Use blutack to attach the robot to the wall.
Move your hand next to the robot's eyes to turn the switch on or off.