Arduino Fart-o-matic blague humour de toilettes (3 / 3 étapes)

Étape 3: L’esquisse

J’aimerais bien demander à avoir écrit l’esquisse à partir de zéro, mais j’ai trouvé un déjà écrit que je pouvais modifier pour servir mes fins. J’ai inclus l’esquisse altérée mais le croquis original est de l’Instructable « Comment avoir un chien qui parle » de Schmidtn, vaut le détour dans sa forme inchangée, et en tout cas, qui ne veut pas un chien qui parle ?

L’esquisse peut être changé de sorte que plus les clips audio peuvent être ajoutés, tout simplement continuer avec le même pattern - cas : 35 playcomplete (filename) pause. Vous devrez également modifier le nombre de fichiers répertoriés dans la ligne de randNum, ici il est dit aléatoire (1, 22) ; , ainsi, par exemple, si vous aviez 35 fichiers il faut dire random(1,35);. Les fichiers audio sur la carte SD peuvent être nommés, ce que vous voulez, j’ai juste numérotées, juste n’oubliez pas de remplacer les noms de fichier numéroté par vos propres noms de fichier, est un exemple de cela dans ce sketch il dit - playcomplete ("49.WAV") et que votre fichier est nommé « bob », vous devrez changer le 49 / WAV dans le sketch de dire ("bob. « « « WAV »).

La farce finie est programmée pour que chaque fois il y a mouvement détecté, il lit un fichier audio aléatoire (la mienne étaient tous les sons bruts, après tout, c’est une salle de repos). Comme vous pouvez le voir sur la photo, le dispositif est placé afin qu’il ne peut pas être vu, mais le détecteur de mouvement peut détecter la requête chaque fois que quelqu'un s’approche l’urinoir. J’ai placé quelques bottes avec une paire de pantalons sur eux pour rendre la stalle occupée. Les toilettes, je l’ai utilisé dans a un flux assez constant de personnes, en utilisant le montage de l’aimant et goose neck, il était possible de mettre cela en place en quelques secondes. Ce n’est qu’en milieu d’après-midi, que mes collègues de travail a finalement obtenu suspectes et enquêtés, ils aimaient tellement qu’ils n’a pas révélé la farce et apprécié leur secret nouvellement trouvée pour le reste de la journée.

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

Carte de SdReader ;    Cet objet conserve les informations de la carte
Vol FatVolume ;    Il conserve les informations pour la partition sur la carte
FatReader racine ;   Il conserve les informations pour le système de fichiers sur la carte
FatReader f ;      Il conserve les informations pour le fichier que nous allons jouer

WaveHC vague ;      C’est le seul objet (audio) de la vague, puisque nous allons jouer seulement un à la fois

#define déclencheur 7
#define LED 13

int val = 0 ;
int potvalue = 0 ;
long randNum ;

Cette fonction pratique retournera le nombre d’octets actuellement libres en RAM, grand pour le débogage !
int freeRam(void)
{
extern int __bss_end ;
extern int * __brkval ;
int free_memory ;
Si ((int) __brkval == 0) {}
free_memory = ((int) & free_memory)-((int) & __bss_end) ;
}
else {}
free_memory = ((int) & free_memory)-((int) __brkval) ;
}
Return free_memory ;
}

Sub sdErrorCheck(void)
{
Si (! card.errorCode()) retourner ;
putstring ("\n\rSD I/O erreur:") ;
Serial.Print(Card.ErrorCode(), HEX) ;
putstring (",") ;
Serial.println(Card.ErrorData(), HEX) ;
while(1) ;
}

void setup() {}

mettre en place le port série
Serial.Begin(9600) ;
pinMode (déclencheur, entrée) ;
pinMode (LED, sortie) ;
randomSeed(analogRead(0)) ;

putstring ("RAM libre:") ;       Ce qui peut aider avec le débogage, manquer de RAM est mauvais
Serial.println(freeRam()) ;      s’il s’agit moins de 150 octets Il peut épeler ennuis !

Définissez les broches de sortie pour le contrôle de la DAC. Ce broches sont définis dans la bibliothèque
pinMode (sortie 2) ;
pinMode (3, sortie) ;
pinMode (sortie 4) ;
pinMode (5, sortie) ;

Si (! card.init(true)) {//play avec 4 MHz spi si 8MHz ne fonctionne pas pour vous
Si (! card.init()) {//play avec spi 8 MHz (par défaut plus rapide!)
putstring_nl ("carte init. a échoué!") ;  Quelque chose a mal tourné, permet d’imprimer les raisons pour lesquelles
sdErrorCheck() ;
while(1) ;                            puis « arrêter » - ne rien faire !
}

Enable optimiser la lecture - certaines cartes peuvent timeout. Désactiver si vous rencontrez des problèmes
card.partialBlockRead(true) ;

Maintenant, on va chercher une partition FAT !
uint8_t partie ;
pour (partie = 0; partie < 5; partie ++) {/ / nous avons jusqu'à 5 emplacements de regarder dans
Si (vol.init (carte, partie))
rupture ;                             Nous avons trouvé un, laisse en liberté sous caution
}
Si (partie == 5) {/ / si nous avons fini ne pas trouver un:(
putstring_nl ("aucun FAT partition valide!") ;
sdErrorCheck() ;      Quelque chose a mal tourné, permet d’imprimer les raisons pour lesquelles
while(1) ;                            puis « arrêter » - ne rien faire !
}

Permet d’indiquer à l’utilisateur sur ce que nous avons trouvé
putstring ("partition à l’aide") ;
Serial.Print (partie, DEC) ;
putstring (", est de type FAT") ;
Serial.println(vol.fatType(),DEC) ;     FAT16 ou FAT32 ?

Essayez d’ouvrir le répertoire racine
Si (! root.openRoot(vol)) {}
putstring_nl ("Impossible d’ouvrir le répertoire racine!") ; Quelque chose a mal tourné,
while(1) ;                             puis « arrêter » - ne rien faire !
}

Ouf ! Nous avons passé les parties difficiles.
putstring_nl("Ready!") ;

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

TIMER2 débordement Interrupt Enable
TIMSK2 | = 1 << TOIE2 ;
*/

}

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

Si (val == HIGH & & potvalue > = 0 & & potvalue < = 1023)
{
randNum = aléatoire (1, 22) ;
Delay(1000) ;
commutateur (randNum)
{
cas 1 :
Serial.println(1) ;
playcomplete("49.wav") ;
rupture ;
cas 2 :
Serial.println(2) ;
playcomplete("50.wav") ;
rupture ;
cas 3 :
Serial.println(3) ;
playcomplete("51.wav") ;
rupture ;
cas 4 :
Serial.println(4) ;
playcomplete("52.wav") ;
rupture ;
cas no 5 :
Serial.println(5) ;
playcomplete("53.wav") ;
rupture ;
cas 6 :
Serial.println(6) ;
playcomplete("54.wav") ;
rupture ;
cas 7 :
Serial.println(7) ;
playcomplete("55.wav") ;
rupture ;
cas 8 :
Serial.println(8) ;
playcomplete("56.wav") ;
rupture ;
cas 9 :
Serial.println(9) ;
playcomplete("57.wav") ;
rupture ;
cas no 10 :
Serial.println(10) ;
playcomplete("58.wav") ;
rupture ;
cas no 11 :
Si (! f.open (racine, nom)) {}
putstring ("Impossible d’ouvrir le fichier") ; Serial.Print(Name) ; retour ;
}
OK, lire le fichier et le transformer en un objet vague
Si (! wave.create(f)) {}
putstring_nl ("pas un valide" WAV") ; retour ;
}

OK le temps de jouer ! Démarrer la lecture
Wave.Play() ;
}

Articles Liés

Arduino-Fart-O-Meter

Arduino-Fart-O-Meter

OH non ! Il n'a pas !Oui je l'ai fait !Mon projet est simple : Péter dans un fauteuil et en envoyant le signal sans fil à un panneau qui indique l'intensité de la PET !Avertissement : S'il vous plaît ne pas vous forcez à Péter, vous pourriez merde da
Petits gâteaux urinoir

Petits gâteaux urinoir

Mon entrée d'aliments pour le concours de nourriture d'Halloween, ils ressemblent urinoir désodorisant gâteaux, avec un « P », a ajouté pour l'effet.Étape 1: ingrédients Ingrédients :Mélange à gâteauColorant alimentaire bleuCerise/glaçage dans une co
La meilleur blague de toilette jamais !

La meilleur blague de toilette jamais !

C'est ma blague de toilette préférée jusqu'à maintenant.  Lorsque votre victime vide aux toilettes, l'eau tombe en panne, mais l'eau reste jaune.   Cette farce sera faire croire que la toilette est cassée ou les tuyaux peuvent être obstrués.  Une aut
Lumière de toilette automatique PIR - aucun Arduino

Lumière de toilette automatique PIR - aucun Arduino

Cette instructable est une autre marque simple mais pourtant pratique comme je le pense, ma fille a une mauvaise habitude ne pas éteindre la lumière de la toilette après avoir utilisé, donc j'ai essayer PIR si peuvent être résolus. Je pense que cela
Débordement de bulles toilette blague

Débordement de bulles toilette blague

cette blague est assez simple, avec des résultats très destructrices et stressants. Il se termine par la toilette débordant avec une émulsion de bulles de gaz carbonique.Désolé pour ce léger manque de photos. Je n'ai pas une caméra légitime, alors j'
La blague « J’ai trouvé un dollar dans mon papier de toilette »

La blague « J’ai trouvé un dollar dans mon papier de toilette »

ok j'ai essayé plusieurs fois avant et toute ma famille flippé sa vraiment drôle!!! J'espère que vous apprécierez !Étape 1: les choses dont vous avez besoin vous aurez besoin d'un dollar bill et un papier toilette roulentÉtape 2: mise en place ok mai
Arduino automatique alimenté par l’alimentation pour animaux de compagnie

Arduino automatique alimenté par l’alimentation pour animaux de compagnie

Il s'agit de mon chargeur automatique pour animaux de compagnie. Propulsé par arduino, en utilisant un 3D imprimés auger et programmable avec deux fois l'alimentation avec un utilisateur sertie de quantité de nourriture, une pile sauvegardée horloge
ESP8266 Sans fil indicateur d’utilisation de toilettes (maison intelligente)

ESP8266 Sans fil indicateur d’utilisation de toilettes (maison intelligente)

Comme un ingénieur, c'est la chance de travailler pour une compagnie qui composent avec un groupe de machine à. Parce que nous rencontrons souvent des problèmes dans notre vie, notre crèche nous permettent de mettre notre créativité en plein jeu en r
Système d’arrosage automatique avec sonde capacitive et Arduino sur le bon marché (et je le pense)

Système d’arrosage automatique avec sonde capacitive et Arduino sur le bon marché (et je le pense)

Avertissement : Je ne suis pas un ingénieur électronicien, alors je ne peux pas offrir aucune garantie pour la conception (beaucoup moins pour votre implémentation). Je ne connais que la solution présentée a fonctionné pour moi pendant au moins 5-6 m
Catapulte Robot Arduino

Catapulte Robot Arduino

Bonjour là-bas collègues responsables,Cette instructable est ma tentative de faire un robot pour le concours « Concours de robotique » dans instructables. Donc voilà:)Je vais commencer cette instructable avec une blague:)Q: quelle est la différence e
Distributeur de papier de toilette automatique sans contact.

Distributeur de papier de toilette automatique sans contact.

Bonjour tout le monde.Dans ce instructable nous sera construit un distributeur automatique sans contact du papier toilette que vous voyez dans les cafés ou les hôpitaux. Notre construction :Est moins cher que les distributeurs de ready-to-buyQue les
La Machine de blague Powered Raspberry Pi

La Machine de blague Powered Raspberry Pi

j'ai récemment reçu un Nouvel indicateur d'exécution framboise et a voulu créer un projet Intro à Raspberry Pi . Mon Pi inclus un LCD 16 x 2 et une carte Wi-Pi j'ai donc créé La Machine Pi Powered blague sans fil framboise. Suffit d'appuyer sur les b
Débutant de l’Arduino et Basic Electronics Kit Primer

Débutant de l’Arduino et Basic Electronics Kit Primer

j'ai appris qu'une de mes nièces avait un intérêt dans la programmation.  Elle travaillait avec la robotique à l'école secondaire et a un stage d'été où ils avaient Arduinos.  Je pense qu'elle était en mesure d'emprunter un Arduino pour expérimenter
ARDUINO par moi-même Mini-CNC (Plotter)

ARDUINO par moi-même Mini-CNC (Plotter)

Machine d'Arduino Mini-CNC (fonctionnant comme un traceur)Fonctionnement de base et Description du système :Dans ce projet je vous guiderai sur la façon de créer facilement votre propre machine CNC-Mini et avec un faible coût (en utilisant l'arduino