Astley-izer
Delar:
Arduino Uno
Adafruit WaveShield
Parallax PIR
Vissa tråd
Ett projekt fall
Hur till: Hämta "Aldrig kommer att ge dig upp", covert filen enligt Ladyadas anvisningar för wave shield (måste vara. WAV på 16bits och 22 hertz), Anslut PIR till 5volts, marken och digitala Pin6 på wave skölden. Ladda upp koden till arduino, placera den våg skölden på det, kasta den i en diskret fall. Voila är du klar. Nu går Astley upp plats.
En andra RickRoller där ute, här använder en timer och fler elektroniska prylar. Min är löjligt lätt och roligt för Messina runt omkring med slumpmässiga främlingar. Jag har rickrolled några slumpmässiga personer hittills mest inte hittar det nästan lika rolig som jag gör.
Yay Video. Ledsen men jag har just nu byggs i laptop-webcam. Gör det bästa jag kan med vad jag fick. Sätt en laserskärare i mina händer och jag ska göra något EPIC. Hint, Hint.
Rick rullade-jag min flickvän ett halvdussin gånger ikväll i våra små Residence Inn suite. Min glädje var olycksfall. Överraskningen är allt. Ledsen jag inte fånga hennes glädje över att pranked. Det är tufft att lämna video kör i timmar för att fånga några ögonblicken när någon kommer att gå av min Astley fällor. Men jag försäkrar er, det är värt satsar ut någon plats.
Koden: Kredit där sin grund, lämnade några för Kristian Gohlke, LadyAda också blir galna rekvisita för att vara så fantastisk! Thx Limor. Jag kunde inte börjat göra detta utan att dina produkter, awesome kod och inspiration attityd.
/ * * / / / * //making känsla av Parallax PIR-sensorn produktion * / / / ** växlar en LED beroende på vilket av sensorerna utgång pin. * Anger början och slutet av kontinuerlig rörelsesekvenser. ** Kristian Gohlke / krigo (_) web.de / http://filformat.net * 3. September 2006 ** kr1 (kluven) 2006 * släppt under en licens creative commons "Attribution-NonCommercial-ShareAlike 2.0" * http://creativecommons.org/licenses/by-nc-sa/2.0/de/ *** The Parallax PIR-Sensor är en lättanvänd digital infraröd rörelse Sensormodul. * (http://www.parallax.com/detail.asp?product_id=555-28027) ** sensor´s produktionen stift går hög om motion är närvarande. * Även om motion finns det går dock till låg från tid till annan, * som kan ge intryck av ingen motion är närvarande. * Detta program behandlar denna fråga genom att ignorera låg-arrangerar gradvis kortare än en viss tid, * förutsatt att kontinuerlig rörelse är närvarande under dessa faser. *
*////////////////////////////////VARS
#include
#include
#include "util.h"
#include "wave.h"
AF_Wave kort;
Fil f;
Wavefile våg;
int calibrationTime = 30. den tid som vi ger sensorn för att kalibrera sig (10-60 SEK enligt databladet) longunsignedint lowIn; tiden när sensorn utgångar en låg impulselongunsignedint paus = 5000; millisekunder sensorn har vara låg innan vi antar all rörelse har stoppedboolean lockLow = true;
booleska takeLowTime;
int pirPin = 6; den digital pin ansluten till PIR-sensorns outputint ledPin = 13.
SETUPvoidsetup() {
Seriella.begin(9600);
pinMode (pirPin, ingång);
pinMode (ledPin, produktionen);
pinMode (2, utgång);
pinMode (3, OUTPUT);
pinMode (4, OUTPUT);
pinMode (5, OUTPUT);
digitalWrite (pirPin, låg);
ge sensorn lite tid att kalibrera
Seriella.print ("kalibrera sensorn");
för (int jag = 0; jag < calibrationTime; i ++) {
Seriella.print(".");
Delay(1000);
}
Seriella.println ("gjort");
Seriella.println ("sensorn aktiv");
Delay(50);
om (! card.init_card()) {
hemkomst.
}
om (! card.open_partition()) {
hemkomst.
}
om (! card.open_filesys()) {
hemkomst.
}
om (! card.open_rootdir()) {
hemkomst.
}
}
LOOPvoidloop() {
IF(digitalRead(pirPin) == hög) {
digitalWrite (ledPin, hög); den ledde visualiserar sensorer utdata pin staten
IF(lockLow) {
lockLow = false; se till att vi väntar på en övergång till låg innan någon ytterligare utgång görs
Seriella.println("---");
Seriella.print ("rörelse upptäckts på");
Seriella.print(millis()/1000);
Seriella.println ("sec");
Delay(50);
}
takeLowTime = sant;
}
IF(digitalRead(pirPin) == låg) {
digitalWrite (ledPin, låg); den ledde visualiserar sensorer utdata pin staten
IF(takeLowTime) {
lowIn = millis(); Spara tiden för övergången från hög till låg
takeLowTime = false; se till att detta görs endast i början av en låg fas
}
om (! lockLow & & millis() - lowIn > pausa) {//if sensorn är låg för mer än given paus, antar vi att inga fler förslag som kommer att hända
lockLow = sant; säkerställer detta block av kod körs endast igen efter en ny förslag sekvens har upptäckts
Seriella.print ("motion slutade på"); utgång
Seriella.print((millis() - paus) / 1000);
Seriella.println ("sec");
Delay(50);
}
Switch(digitalRead(pirPin) == hög) {
fall 1:
playcomplete("01NEVE~1.wav");
}
}}
void playcomplete(char *name) {
playfile(Name);
samtidigt (wave.isplaying);
Card.close_file(f);
}
void playfile(char *name) {
stoppa alla filer som redan spelar
om (wave.isplaying) {
Wave.stop();
Card.close_file(f);
}
f = card.open_file(name);
om (f & & wave.create(f)) {
Wave.Play();
}
}