Spooky Alarm - Particle Argon - Lane Tech PCL **GONE WRONG**
by smcorter in Circuits > Microcontrollers
120 Views, 1 Favorites, 0 Comments
Spooky Alarm - Particle Argon - Lane Tech PCL **GONE WRONG**
Do you have trouble waking up in the morning? Do you always set your alarm and then one day it doesn't go off? Well let me introduce you to the SPOOKY ALARM!!👻😱
Instead of waking up to a pitch black room, only to hit to snooze button again, now there is a bright flashing light in your eyes. I appreciate that it doesn't make a sound so my alarm does not wake up my family. OH. And the strobe lights do not stop until you get out of bed :)
Supplies
- Particle Argon
- Breadboard
- Jumper wires
- PIR motion sensor
- Micro servo
- Spooky strobe light w/ small push button
- 220 ohm resistor
- LED
Wires
sensorPin = D2
ledPin = D6
servo = D8
shorter side of LED connects to resistor
VUSB = + rail
3v3 = + rail
GND = - rail
middle wires on motion sensor & servo connect to + rail with VUSB
*I didn't change any settings on the sensor*
Code / Assembly Fails
- try different angular servo movements that will get the button to turn on, making sure the fin will not fly off
- hot glue the servo like crazy next to button
- all those screenshots are me overthinking the sensor code
- I looked at other projects that used the sensor and it was so much more complicated than it needed to be and consumed so much time
- I was also having trouble getting the led to work alongside the sensor value
- I finally asked Mr. Law for help and he fixed it right away, of course.
below is a short clip of testing the servo hitting the ON button :)
Code
Servo myServo;
int sensorPin = 2;
int ledPin = 6;
int motion = 0;
void setup() {
pinMode(ledPin, OUTPUT);
pinMode(sensorPin, INPUT);
myServo.attach(8);
Time.zone(-6); //Central Standard Time Zone
}
void loop() {
if(Time.hour() == 6 && Time.minute() == 0 && Time.second() == 0)
{
if (digitalRead(sensorPin) == HIGH)
{
digitalWrite(ledPin, HIGH); //once motion detected, turn on led and stop servo from moving
motion++;
delay(1000);
digitalWrite(ledPin, LOW);
}
else
{
if(motion < 1)
{
digitalWrite(ledPin, LOW);
myServo.write(110); //turn strobe lights on
delay(200);
myServo.write(170); //turn strobe lights on
delay(13000); //wait for light to turn back off --> different depending on strobe light
}
}
}
}
Finished Product
Tips & Future Improvements
- when testing the motion sensor, use a box so it does not detect unintentional motion (it's very sensitive)
- unplug argon if servo starts vibrating
- I would change code so the sensor is always looking for movement and the alarm turns off immediately
- in the video you can see that the LED doesn't turn on right away when I am waving my hand in front of it, and that's because the sensor only checks for motion at a specific time (when the delay from the strobe light is over)