Arduino Fart-o-matic toalett humor skämt (3 / 3 steg)

Steg 3: Skiss




jag skulle älska att påstå sig ha skrivit skissen från början men jag hittade en redan skrivit att jag kunde ändra för att tjäna mitt ändamål. Jag har bifogat den förändrade skissen men den ursprungliga skissen är från Instructable "Hur man har en talande hund" av Schmidtn, och är värt att kolla in i sin oförändrade form, och hur som helst, vem vill inte ha en talande hund?

Skissen kan ändras så att mer ljudklipp kan läggas, bara fortsätta med samma mönster - fallet: 35 playcomplete (filnamn) paus. Du måste också ändra antalet filer i randNum linjen, här står slumpmässiga (1, 22); , så till exempel om du hade 35 filer bör det stå random(1,35);. Ljudfiler på SD-kortet kan namnges vad du vill, jag bara räknade dem, Tänk bara på att ersätta de numrerade filnamn med egna namn på filen, ett exempel på detta är i denna skiss står det - playcomplete ("49.WAV") och säga din filen heter "bob", skulle du behöva ändra 49. WAV i skissen att säga ("bob. WAV").

Den färdiga tilltag är programmerad så att varje gång det finns rörelse kände, det spelar en random ljudfilen (min var alla brutto ljud, det är en toalett trots allt). Som ni kan se på bilden är enheten placerad så att den inte kan ses men rörelsedetektorn kan känna rörelse när som helst någon närmar sig pissoaren. Jag placerade några stövlar med ett par byxor över dem för att göra ståndet ser ockuperade. Jag använde den i toaletten har en ganska jämn ström av människor, med hjälp av magnet fäste och gås hals var det möjligt att sätta detta på plats i några sekunder. Det var inte förrän på eftermiddagen att mina medarbetare fick äntligen misstänkta och undersökta, de älskade det så mycket att de inte avslöja upptågen och njöt av deras nyfunna hemlighet för resten av dagen.

#include < FatReader.h >
#include < SdReader.h >
#include < avr/pgmspace.h >
#include "WaveUtil.h"
#include "WaveHC.h"

SdReader kort; Detta objekt innehåller information för kortet
FatVolume vol; Detta innehåller information för partitionen på kortet
FatReader rot. Detta innehåller information för filsystemet på kortet
FatReader f; Detta innehåller information för filen vi är spelar

WaveHC våg; Detta är enda våg (audio)-objektet, eftersom vi bara kommer att spela en i taget

#define TRIGGER 7
#define LED 13

int val = 0;
int potvalue = 0;
lång randNum;

Denna behändiga funktionen returnerar antalet byte för närvarande gratis i RAM, bra för felsökning!
int freeRam(void)
{
extern int __bss_end;
extern int * __brkval;
int free_memory;
om ((int) __brkval == 0) {
free_memory = ((int) & free_memory)-((int) & __bss_end);
}
annat {
free_memory = ((int) & free_memory)-((int) __brkval);
}
återvända free_memory;
}

void sdErrorCheck(void)
{
om (! card.errorCode()) återvända;
putstring ("\n\rSD I/O fel:");
Serial.Print(Card.ErrorCode(), HEX);
putstring (",");
Serial.println(Card.errorData(), HEX);
While(1);
}

void setup() {

Ställ in serieporten
Serial.BEGIN(9600);
pinMode (TRIGGER, indata);
pinMode (LED, OUTPUT);
randomSeed(analogRead(0));

putstring ("fri slå ned:"); Detta kan hjälpa till med felsökning, slut RAM är dålig
Serial.println(freeRam()); om detta är under 150 byte kan det stava problem!

Ställa in produktionen stift för DAC kontroll. Detta stift definieras i biblioteket
pinMode (2, utgång);
pinMode (3, OUTPUT);
pinMode (4, OUTPUT);
pinMode (5, OUTPUT);

om (! card.init(true)) {//play med 4 MHz spi om 8MHz inte fungerar för dig
om (! card.init()) {//play med 8 MHz spi (standard snabbare!)
putstring_nl ("kort init. misslyckades!"); Något gick fel, kan skriva ut varför
sdErrorCheck();
While(1); sedan 'stoppa' - gör ingenting!
}

Aktivera optimera Läs - vissa kort kan timeout. Inaktivera om du har problem
card.partialBlockRead(true);

Nu söker vi en FAT-partition!
uint8_t del;
för (del = 0; del < 5; del ++) {/ / vi har upp till 5 platser att titta i
om (vol.init (kort, del))
bryta; Vi hittade en, låter borgen
}
om (del == 5) {/ / om vi slutade inte att hitta en :(
putstring_nl ("ingen giltig FAT-partition!");
sdErrorCheck(); Något gick fel, kan skriva ut varför
While(1); sedan 'stoppa' - gör ingenting!
}

Kan tala om för användaren om vad vi hittade
putstring ("använda partition");
Serial.Print (del, DEC);
putstring (", typ är FAT");
Serial.println(Vol.fatType(),dec); FAT16 eller FAT32?

Försök öppna rotkatalogen
om (! root.openRoot(vol)) {
putstring_nl kan inte ("öppna rotfästa dir!"); Något gick fel,
While(1); sedan 'stoppa' - gör ingenting!
}

Usch! Vi fick tidigare de hårda delarna.
putstring_nl("ready!");

/ * TCCR2A = 0;
TCCR2B = 1 << CS22 | 1 << CS21 | 1 << CS20;

Timer2 spill Interrupt Enable
TIMSK2 | = 1 << TOIE2;
*/

}

void loop()
{
Val = digitalRead(TRIGGER);
potvalue = analogRead(1);
Serial.println (potvalue, DEC);

om (val == hög & & potvalue > = 0 & & potvalue < = 1023)
{
randNum = random (1, 22);
Delay(1000);
växel (randNum)
{
fall 1:
Serial.println(1);
playcomplete("49.wav");
bryta;
fall 2:
Serial.println(2);
playcomplete("50.wav");
bryta;
fall 3:
Serial.println(3);
playcomplete("51.wav");
bryta;
fall 4:
Serial.println(4);
playcomplete("52.wav");
bryta;
fall 5:
Serial.println(5);
playcomplete("53.wav");
bryta;
fall 6:
Serial.println(6);
playcomplete("54.wav");
bryta;
fall 7:
Serial.println(7);
playcomplete("55.wav");
bryta;
mål 8:
Serial.println(8);
playcomplete("56.wav");
bryta;
mål 9:
Serial.println(9);
playcomplete("57.wav");
bryta;
mål 10:
Serial.println(10);
playcomplete("58.wav");
bryta;
mål 11:
Serial.println(11);
playcomplete("59.wav");
bryta;
ärende 12:
Serial.println(12);
playcomplete("60.wav");
bryta;
ärende 13:
Serial.println(13);
playcomplete("61.wav");
bryta;
fall 14:
Serial.println(14);
playcomplete("62.wav");
bryta;
mål 15:
Serial.println(15);
playcomplete("63.wav");
bryta;
fall 16:
Serial.println(16);
playcomplete("64.wav");
bryta;
fall 17:
Serial.println(17);
playcomplete("65.wav");
bryta;
fall 18:
Serial.println(18);
playcomplete("66.wav");
bryta;
fall 19:
Serial.println(19);
playcomplete("67.wav");
bryta;
mål 20:
Serial.println(20);
playcomplete("68.wav");
bryta;
mål 21:
Serial.println(21);
playcomplete("69.wav");
bryta;
fall 22:
Serial.println(22);
playcomplete("70.wav");
bryta;
standard:
bryta;
}
}

}

Spelar en full fil från början till slut med ingen paus.
void playcomplete(char *name) {
Ring vår hjälpare för att hitta och spela detta namn
playfile(Name);
samtidigt (wave.isplaying) {
göra ingenting samtidigt dess spelar
}
dess gjort spelar nu
}

void playfile(char *name) {
se om objektet våg för närvarande gör något
om (wave.isplaying) {/ / redan spelar något, så sluta det!
Wave.stop(); Sluta
}
titta i rotkatalogen och öppna filen
om (! f.open (rot, namn)) {
putstring kunde inte ("öppna filen"); Serial.Print(Name); hemkomst.
}
OK läsa filen och förvandla det till en våg objekt
om (! wave.create(f)) {
putstring_nl ("inte en giltig WAV"); hemkomst.
}

OK dags att spela! starta uppspelningen
Wave.Play();
}

Se Steg
Relaterade Ämnen

Arduino-Fart-O-Meter

OH NO! Gjorde han inte!Ja gjorde jag!Mitt projekt är enkel: prutta i en stol och skicka signalen trådlöst till en panel som visar intensiteten i fart!Ord av försiktighet: Inte tvinga vänligen dig att Fisa, du kan skita i byxorna om du försöker hårt!T...

PIR Auto toalett Light - ingen Arduino

Detta instructable är en annan enkel make men ändå praktisk som jag tror, min dotter har en dålig vana som inte stänger av toalett ljuset efter använt, så jag försöker PIR om kan lösas. Jag tror att detta kan vara enkelt och behöver inte Arduino att...

RC kontroll och Arduino: A färdiga arbeten

i detta instructable jag kommer att ta dig med på min resa för att lära sig lägga till RC kontroll med en Arduino mikrokontroller. Till skillnad från andra Instructables eller Bloggar, kommer att jag innehålla all information jag kan även om det inte...

Arduino Tutorial Bundle.: Arduino experimenterande Kit:. (ARDX)

Intresserad av att göra snyggt projekt med en Arduino men inte säker på var du ska börja?Här är ett lätt att följa guide på hur man ansluta och använda en uppsjö av elektroniska komponenter.(skamlös plugg)Vill du göra allt?Komplett kit med komponente...

Grunderna i förvandlar ditt Remote Controll fordon till ett autonomt System (Drone) genom att använda en Arduino

jag började detta projekt med målet att billigt vrida min RC helikopter till något av en UAV eller åtminstone att passa vissa sensorer att minska kollisioner och andra "mis haps."Nu är tyvärr i början av projektet missbedömde jag min lilla helik...

Arduino klo maskin

Vad?Maskinen är om 1:4 scale, perfekt för godis och andra små leksaker/priser. Fotavtryck är ~ 20 x 26 x 19 tum, tillverkad av aluminium extrudering, anpassade laserskurna akryl/trä, stegmotorer (Nema17) och en Arduino Mega. Stegmotorer flytta utlast...

Arduino bot Android fjärrkontroll

Hallå där,I detta instructable jag vill undersöka sambandet mellan Arduino och Android. Båda är öppna, lätt-till-program miljö (Ja, Android inte så lätt, men ganska), och samspelet mellan dem låter intressant mänskliga-till-anordning interaktion.Måle...

Automatisk Arduino Powered sällskapsdjur mataren

Detta är min Automatisk Sällskapsdjur Mataren. Drivs med arduino, med hjälp av en 3D tryckt skruv och programmerbar med två utfodring gånger med en användare ange mängd livsmedel, med batteri backas upp interna klocka.Min katt köra mig nötter i morgo...

Arduino-baserad optiska varvräknare

över tio år sedan, jag har lagt upp en webbsida med detaljerade instruktioner om att bygga en enkel elmotor baserat på en från den Beakman världen TV-show. Jag kallade det "Beakmans elmotor" sidan och under åren har det haft hundratusentals, om...

Gränsyta borstlös likströmsmotor (BLDC) med Arduino

Detta är en handledning om hur att gränssnitt och köra en borstlös likströmsmotor med Arduino. Om du har några frågor eller kommentarer vänligen svara i kommentarer eller mail till rautmithil [at] gmail [dot] com. Du kan också kontakta mig @mithilrau...

3020 CNC + Arduino + GRBL + CNC sköld V3

Låt oss konvertera en billig kinesisk CNC-maskin från parallell Port till Arduino och GRBL.Okej killar, detta är en kulmen på veckor läser, forska och beslutsamhet. Det är min första instructable så hoppas den här hjälper dig där du behöver gå.Lite b...

Raspberry Pi-Arduino-SignalR Home Automation navet

Efter ett par min prelude IBLEs publiceras här och här, detta projekt tar det första steget för att bygga upp en grundläggande version av en funktionell hem Automation Hub.Jag har använt flera olika tekniker i en ansträngning för att förstå hur jag k...

ESP8266 Trådlös toalett användning indikator (Smart Home)

Det är som en ingenjör, turen att arbeta för ett företag som gör upp med en grupp av maker. Eftersom vissa problem möter vi ofta i vårt liv, vår manger tillåter oss att sätta vår kreativitet i full spela på grund av den öppna atmosfären, vi kan bygga...

Arduino mikro Quadcopter

(Pågående projekt, just nu behöva löda kretsen)Detta är Arduino baserat, 3D tryckta mikro Quadcopter projekt för 8,5 mm diameter DC motorer. Men om du har lite erfarenhet (eller bara har en timme fri tid) kan du anpassa utformningen för att passa til...

Gest-kontrollerade Pac Man med Arduino & Grove gest modul

PAC-man Pac-man Pac-man! Hahaa! Om någon av er vet vad jag talar om, måste du vara gammal nog att veta sådant ett gammaldags arkadspel, precis som mig XD (nr BROTTET). I själva verket började jag att spela de klassiska japanska spelet eftersom jag va...

Arduino skrivbord Fan Controller

När jag nyligen bytt roller inom företaget, flyttade jag platser, flyttar från Bradford till vårt huvudkontor i Wakefield. Jag sa adjö till min trogna gamla skrivbord med måste ha skrivbord fläkt att svalka mig medan alla runt omkring mig... Hur som...

Geo Data Logger: Arduino + GPS + SD + Accelerometer att logga, tidsstämpel och geo-tag sensordata

uppdateringar17 okt 2013: Jag har publicerat en guide om hur du använder din Android-telefon kan utföra en liknande uppgift genom att utnyttja din Android enheten är inbyggd GPS och sensorer.6 feb 2013: Med på GeoAwesomeness http://geoawesomeness.com...

GPS-tid (UTC) till lokal tid konvertering genom att använda Arduino

jag har en GPS-mottagare, Holux M-1000, som du kan använda den med en bärbar dator, en Handdator eller en mobiltelefon via Bluetooth. Jag hade använt det för navigering med Palm TX och Treo700p (Ja, jag har länge varit ett stort fan av Palm PDA-serie...

Hur till: ansluta din Arduino till Internet som en webbserver

SAKERNAS INTERNET... < kö blixtar och åska >Det är vad alla coola barnen gör dessa dagar. Varför ska de ha allt roligt? Låt oss ställa in en Arduino som en webbserver som vem som helst, var som helst kan visa. Varför skulle vi göra en sådan sak? Möj...