Chasse au Trésor audio (5 / 14 étapes)

Étape 5: Le Code de l’Arduino

Voici la copie du Code de l’Arduino. Vous pouvez soit télécharger le fichier de code ci-joint, ou vous pouvez copier et coller ce texte dans une nouvelle esquisse.

Ensuite, connectez la carte Arduino à votre ordinateur et télécharger le code.

#include
#include #include #include « WaveUtil.h » #include « WaveHC.h »

Carte de SdReader ; Cet objet conserve les informations pour le vol de FatVolume de carte ; Il conserve les informations pour la partition sur la racine de FatReader carte ; Il conserve les informations du 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 DEBOUNCE 100 / / bouton debouncer

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 ; if ((int) __brkval == 0) {free_memory = ((int) & free_memory)-((int) & __bss_end);} else {free_memory = ((int) & free_memory)-((int) __brkval);} return free_memory;}

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

<---Setup void void setup() {/ / set up série port Serial.begin(9600) ; putstring_nl ("WaveHC avec 6 boutons"); putstring ("RAM libre:") ; Ce qui peut aider avec le débogage, manquer de RAM est Serial.println(freeRam()) mauvais ; 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 (2 sortie) ; pinMode (3, sortie) ; pinMode (sortie 4) ; pinMode (5, sortie) ; pin13 LED pinMode (13, sortie) ; activez les résistances de pull-up sur commutateur épingles (entrées analogiques) digitalWrite (14, HIGH) ; digitalWrite (15, HIGH) ; digitalWrite (16, HIGH) ; digitalWrite (17, HIGH) ; digitalWrite (18, HIGH) ; digitalWrite (19, haute) ; Si (! card.init(true)) {//play avec 4 MHz spi si 8MHz ne fonctionne pas pour vous si (! card.init()) {//play avec 8 MHz spi (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 if pause (vol.init (carte, partie)); / / 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 (« Using partition ») ; 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 passait mal, while(1); / / puis « arrêter » - ne rien faire!} / / ouf ! Nous avons passé les parties difficiles. putstring_nl("Ready!") ; }

//<------------------------------------------------------------------------------------- Void Loop

void loop() {/ / putstring("."); / / décommenter cela pour voir si la boucle n’est pas en cours d’exécution int secretCodeOne [6] = {1, 2, 3, 4, 5, 6}; int secretCodeTwo [6] = {1, 1, 2, 2, 3, 3}; int secretCodeThree [6] = {2, 4, 6, 1, 3, 5}; int secretCodeFour [6] = {1, 2, 3, 5, 5, 5}; int secretCodeFive [6] = {1, 2, 3, 3, 2, 1}; int secretCodeSix [6] = {1 2, 3, 4, 5, 1} ;

int enteredCode [6] = {0, 0, 0, 0, 0, 0} ; int correctKeys = 0 ; succès d’int = 0 ; octet pressé ; stocke les valeurs de touche enfoncée int i = 0 ; itération de boucle

pour (j’ai = 0; j’ai < 6; i ++) //stores appuyé sur des valeurs dans un tableau {faire {pressé = check_switches();} while (pressé < 1); enteredCode [i] = pressé ; //stores appuyé sur des valeurs dans un tableau delay(500) ; Serial.println(enteredCode[i]) ; touche "impression" enfoncée}

pour (j’ai = 0; j’ai < 6; i ++) //Check un Code {si (enteredCode [i] == secretCodeOne[i]) {correctKeys = correctKeys + 1: nombre de //counts de bonnes touches}} si (correctKeys == 6) //if le code saisi correspond à un, de jouer la piste un {Serial.println ("Code une correcte"); playcomplete("1.WAV") ; succès = 1;} correctKeys = 0 ; réinitialiser compteur clé correcte

pour (j’ai = 0; j’ai < 6; i ++) //Check deux Code {si (enteredCode [i] == secretCodeTwo[i]) {correctKeys = correctKeys + 1: nombre de //counts de bonnes touches}} si (correctKeys == 6) //if le code saisi correspond à un, de jouer la piste un {Serial.println ("Code deux correcte"); playcomplete("2.WAV") ; succès = 1;} correctKeys = 0 ; réinitialiser compteur clé correcte

pour (j’ai = 0; j’ai < 6; i ++) //Check trois Code {si (enteredCode [i] == secretCodeThree[i]) {correctKeys = correctKeys + 1: nombre de //counts de bonnes touches}} si (correctKeys == 6) //if le code saisi correspond à un, de jouer la piste un {Serial.println ("Code trois correcte"); playcomplete("3.WAV") ; succès = 1;} correctKeys = 0 ; réinitialiser compteur clé correcte

pour (j’ai = 0; j’ai < 6; i ++) //Check quatre Code {si (enteredCode [i] == secretCodeFour[i]) {correctKeys = correctKeys + 1: nombre de //counts de bonnes touches}} si (correctKeys == 6) //if le code saisi correspond à un, de jouer la piste un {Serial.println ("Code quatre correcte"); playcomplete("4.WAV") ; succès = 1;} correctKeys = 0 ; réinitialiser compteur clé correcte

pour (j’ai = 0; j’ai < 6; i ++) //Check cinq Code {si (enteredCode [i] == secretCodeFive[i]) {correctKeys = correctKeys + 1: nombre de //counts de bonnes touches}} si (correctKeys == 6) //if le code saisi correspond à un, de jouer la piste un {Serial.println ("Code cinq correcte"); playcomplete("5.WAV") ; succès = 1;} correctKeys = 0 ; réinitialiser compteur clé correcte

pour (j’ai = 0; j’ai < 6; i ++) //Check Six Code {si (enteredCode [i] == secretCodeSix[i]) {correctKeys = correctKeys + 1: nombre de //counts de bonnes touches}} si (correctKeys == 6) //if le code saisi correspond à un, de jouer la piste un {Serial.println ("Code Six correcte"); playcomplete("6.WAV") ; succès = 1;} correctKeys = 0 ; réinitialiser compteur clé correcte

if(Success == 1) {Serial.println ("You Got un Code Correct"); succès = 0;} else {playcomplete("0.WAV") ; Serial.println (« pas ») ; } }

check_switches() octet {octet statique précédente [6], longtemps statique [6]; octets lecture ; octet pressé ; indice d’octet ; pressé = 0 ;

pour (indice d’octet = 0; index < 6; ++ index) {lecture = digitalRead (14 + index); if (lecture == LOW & & précédent [index] == haute & & millis() - temps [index] > DEBOUNCE) {/ interrupteur / fois pressée [index] = millis() ; pressé = index + 1; break;} précédent [index] = lecture;} / / interrupteur numéro de retour (1-6) retour (pressé) ; }

Lit un fichier complet de bout en bout avec aucune pause. void playcomplete(char *name) {/ / appeler notre aide pour trouver et jouer cette playfile(name) nom ; while (wave.isplaying) {/ / ne rien faire pendant sa lecture} / / maintenant sa fait jouer}

void playfile(char *name) {/ / voir si l’objet vague est en train de faire quelque chose si (wave.isplaying) {/ / déjà jouer quelque chose, alors arrêtez il! wave.stop(); / / stop il} / / Rechercher dans le répertoire racine et ouvrez le fichier si (! f.open (racine, nom)) {putstring ("Impossible d’ouvrir le fichier") ; Serial.Print(Name) ; retour ; } / / OK, lire le fichier et qu’il devienne un objet vague si (! wave.create(f)) {putstring_nl ("pas un valide" WAV"); return;} / / ok temps de jouer ! Démarrez la lecture wave.play() ; }

Articles Liés

Chasse au Trésor Arduino

Chasse au Trésor Arduino

J'ai toujours aimé les films comme Trésor National et autres. Ceux qui dispose d'une équipe de gens qui courent partout essayant de résoudre une énigme ou un chapelet de devinettes pour, obtenir l'or, téléchargez la jeune fille, sauver le monde, deve
Comment faire pour créer une chasse au oeuf cryptiques pour le plaisir de chasse au Trésor adulte

Comment faire pour créer une chasse au oeuf cryptiques pour le plaisir de chasse au Trésor adulte

Je vais me contenter de le dire : chasses aux trésors sont impressionnantes. C'est un jeu, c'est un quiz, c'est une aventure. Bien fait, la chasse aux oeufs humble peut être littéralement le plus amusant que vous avez jamais had.*Oubliez les chasses
Chasse au Trésor adulte oeuf-cellent Easter Egg

Chasse au Trésor adulte oeuf-cellent Easter Egg

lapin de Pâques ! Fée des dents ! Père Noël ! J'aimerais être un gamin encore une fois, pas vous ?Ramener la magie et l'envoyer à quelqu'un que vous connaissez sur une chasse aux oeufs de Pâques oeuf-cellent !Étant donné que cette chasse au Trésor de
Comment planifier une amusante chasse au Trésor

Comment planifier une amusante chasse au Trésor

Même si ce coffre au Trésor rempli de bonbons est un plaisir trouver pour la plupart des enfants, le véritable trésor est à la chasse !Indices de photo à la brouille de mot et anagrammes, les enfants apprécié des heures de plaisir lors de notre derni
Chasse au Trésor de Noël

Chasse au Trésor de Noël

il s'agit d'une instructable sur la façon de mettre en place une chasse au Trésor de Noël pour vos enfants, famille ou conjoint. La chasse au Trésor ne doit pas être avec un cadeau de Noël, ça pourrait être un cadeau d'anniversaire ou quelque chose c
Letterbox : Le jeu de la chasse au Trésor Secret

Letterbox : Le jeu de la chasse au Trésor Secret

Letterbox est une activité étonnante (et étonnamment vieux) c'est vraiment cool, beaucoup de plaisir et à droite sous votre nez !  En bref, c'est une peau et recherche jeu de chasse au Trésor, joué par des milliers de personnes partout dans le monde.
Chasse au Trésor pour les enfants de maternelle

Chasse au Trésor pour les enfants de maternelle

Pour le 6ème anniversaire de notre fils aîné, nous avons décidé de lui organiser une fête, avec le thème du Trésor de la chasse. Les enfants étaient âgés de 3 à 6, donc tout devrait viser à cette tranche d'âge. Il y avait 10 enfants et 11 indices (qu
Chasse au Trésor dans une bouteille

Chasse au Trésor dans une bouteille

faire votre propre chasse au Trésor dans une bouteille en utilisant une bouteille de soda (ou bouteille pop si vous préférez) certains riz et environ une douzaine knick knacks.teeasure hunt dans une bouteille est une activité des enfants assez grands
Chasse au Trésor visuel pour les enfants

Chasse au Trésor visuel pour les enfants

l'idée de ce jeu a vu le jour ce printemps quand j'étais en vacances avec la famille de ma femme.  Nous étions tous dans une maison de location grande et à un moment donné les sept enfants qui étaient, il y avait tout ennuie et la recherche de quelqu
AlleyCats : chasse au Trésor sur votre vélo.

AlleyCats : chasse au Trésor sur votre vélo.

AlleyCats sont plus souvent associés à des messagers à vélo équitation soit engins fixes, ou vélo monovitesse dans leur course autour d'une ville en passant par plusieurs points de contrôle où une tâche peut-être aussi pour se faire.Ici à Norwich au
Dur & Soft Suceava 2015 « chasse au Trésor »

Dur & Soft Suceava 2015 « chasse au Trésor »

Le produit final, est un système embarqué robuste compacte accompli toutes les tâches tel que requis par l'édition H & S 2015. Le système comprend une carte Intel Edison, un Arduino Pro Mini et des capteurs pour recueillir les données de l'environnem
Chasse au Trésor pour adultes (compagnon de la boîte aux trésors Arduino)

Chasse au Trésor pour adultes (compagnon de la boîte aux trésors Arduino)

J'ai toujours aimé les films comme Trésor National et autres. Ceux qui dispose d'une équipe de gens qui courent partout essayant de résoudre une énigme ou un chapelet de devinettes pour, obtenir l'or, téléchargez la jeune fille, sauver le monde, deve
Chasse au Trésor de plaisirs d’été en

Chasse au Trésor de plaisirs d’été en

IntroductionUne couple d'années plusieurs familles et moi étions en vacances à une communauté de plage. C'était un de ces années où il a plu tous les jours. Les enfants ont envie de faire quelque chose. Ils avaient lu tous les livres de bandes dessin
Storm Chaser plage activité (chasse au Trésor)

Storm Chaser plage activité (chasse au Trésor)

Les tempêtes ont ces pouvoirs étonnants de nettoyage !Après que les tempêtes de pluie gros les rues sont plus propres, les calanques sont plus propres, tellement trash a été emporté.Il est allé loin, loin.Étape 1: Laver les tempêtes, toutEt vers le b