Arduino personnels Hoodie Bo (5 / 6 étapes)

Étape 5: Code

La majeure partie du code est pour le WaveShield, basé sur http://www.ladyada.net/make/waveshield/
Il existe plusieurs exemples de plusieurs boutons autour - J’ai utilisé un mash-up basé sur Rayshobby blog http://rayshobby.net/?p=16 avec un peu de cette un, jeté en.
Code de sélection aléatoire pour le dernier bouton est une adaptation de www.arduino.cc/en/Tutorial/Blink & www.arduino.cc/en/Reference/Random.

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

int buttonPinR = 0 ;  Bras droit de boutons sur la broche analogique 0
int buttonValueR = 0 ;
int buttonPinL = 1 ;  Bras gauche boutons sur la broche analogique 1
int buttonValueL = 0 ;

long randChoose = 0 ; Initialiser l’élément aléatoire
long randNumber ;

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

int wasplaying = 0 ;
int rval pointe ;

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()
{
Serial.Begin(9600) ;
Serial.println ("vague test!") ;
pinMode (sortie 2) ;
pinMode (3, sortie) ;
pinMode (sortie 4) ;
pinMode (5, sortie) ;
pinMode (13, sortie) ;

randomSeed (analogRead (1)) ; générateur de nombres aléatoires d’installation

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!") ;

}
Boutons calibré avec une résistance de 10K sur la broche 5 v avec une pile 9v connecté à la prise d’alimentation Arduino.
Utilisez les valeurs de votre esquisse de lecture analogique pour encadrer la valeur attribuée à chaque touche. Vôtre peuvent différer de ceux assignés ici.

Bras droit de boutons sur la broche 0

void loop() {}
buttonValueR = analogRead(buttonPinR) ;
Si (buttonValueR > 645 & & buttonValueR < 660) {}
playcomplete ("R1. « « « WAV ») ;
}
Delay(25) ; Il est toujours bon pour les choses lentes vers le bas lorsque vous lisez un peu entrées

Si (buttonValueR > 225 & & buttonValueR < 240) {}
playcomplete (« R2. « « « WAV ») ;
}

Delay(25) ;

Si (buttonValueR > 165 & & buttonValueR < 185) {}
playcomplete "(R3. « « « WAV ») ;
}

Delay(25) ;

Si (buttonValueR > 325 & & buttonValueR < 345) {}
playcomplete ("R4. « « « WAV ») ;
}

Delay(25) ;

Si (buttonValueR > 495 & & buttonValueR < 515) {}
playcomplete ("R5. « « « WAV ») ;
}

Bras gauche boutons sur la broche 1

buttonValueL = analogRead(buttonPinL) ;
Si (buttonValueL > 645 & & buttonValueL < 660) {}
playcomplete ("L1. « « « WAV ») ;
}
Delay(25) ;

Si (buttonValueL > 225 & & buttonValueL < 245) {}
playcomplete ("L2. « « « WAV ») ;
}

Delay(25) ;

Si (buttonValueL > 165 & & buttonValueL < 185) {}
playcomplete ("L3. « « « WAV ») ;
}

Delay(25) ;

Si (buttonValueL > 325 & & buttonValueL < 350) {}
playcomplete "(L4. « « « WAV ») ;
}

Delay(25) ;

Randomiser l’effet sonore émis lorsque vous appuyez sur le dernier bouton sur le bras gauche

Si (buttonValueL > 495 & & buttonValueL < 515) {}
randChoose = aléatoire (1, 20) ; générer un choix entre 1 et 20
Switch (randChoose)
{
cas 1 :
playcomplete "(RAND1. « « « WAV ») ;
rupture ;
cas 2 :
playcomplete "(RAND2. « « « WAV ») ;
rupture ;
cas 3 :
playcomplete "(RAND3. « « « WAV ») ;
rupture ;
cas 4 :
playcomplete "(RAND4. « « « WAV ») ;
rupture ;
cas no 5 :
playcomplete "(RAND5. « « « WAV ») ;
rupture ;
cas 6 :
playcomplete "(RAND6. « « « WAV ») ;
rupture ;
cas 7 :
playcomplete "(RAND7. « « « WAV ») ;
rupture ;
cas 8 :
playcomplete "(RAND8. « « « WAV ») ;
rupture ;
cas 9 :
playcomplete "(RAND9. « « « WAV ») ;
rupture ;
cas no 10 :
playcomplete "(RAND10. « « « WAV ») ;
rupture ;
cas no 11 :
playcomplete "(RAND11. « « « WAV ») ;
rupture ;
cas 12 :
playcomplete "(RAND12. « « « WAV ») ;
rupture ;
case 13 :
playcomplete "(RAND13. « « « WAV ») ;
rupture ;
cas no 14 :
playcomplete "(RAND14. « « « WAV ») ;
rupture ;
case 15 :
playcomplete "(RAND15. « « « WAV ») ;
rupture ;
case 16 :
playcomplete "(RAND16. « « « WAV ») ;
rupture ;
cas 17 :
playcomplete "(RAND17. « « « WAV ») ;
rupture ;
Case 18 :
playcomplete "(RAND18. « « « WAV ») ;
rupture ;
case 19 :
playcomplete "(RAND19. « « « WAV ») ;
rupture ;
case 20 :
playcomplete "(RAND20. « « « WAV ») ;
rupture ;
}
Delay(25) ;

}
}

Lit un fichier complet de bout en bout avec aucune pause.
void playcomplete(char *name) {}
Appelez notre aide pour trouver et jouer ce nom
playfile(Name) ;
alors que {(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 d’elle !
Wave.Stop() ; Arrête
}
Regardez dans le répertoire racine et ouvrir le fichier
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

Boîte personnelle de Black - Arduino Mega, ultime bouclier GPS + LSM303

Boîte personnelle de Black - Arduino Mega, ultime bouclier GPS + LSM303

personnels boîte noire en utilisant :-Arduino Mega 2560- Bouclier d'enregistreur de données GPS ultime- Accéléromètre de triple-axe + magnétomètre (LSM303)Après avoir connu beaucoup de difficultés à l'aide du bouclier de gps avec un Arduino Uno, j'ai
Arduino LilyPad canard dynastie Hoodie avec les témoins sonores et LED

Arduino LilyPad canard dynastie Hoodie avec les témoins sonores et LED

j'ai fait un chandail à capuchon canard dynastie sur le thème avec un LilyPad Arduino qui a 3 interrupteurs de capteur de fermeture à glissière pour activer les 3 actions/programmes différents à l'arrière de la capuche. La fermeture à glissière est l
Assistant personnel avec télégramme & Arduino.

Assistant personnel avec télégramme & Arduino.

Bonjour les gens !Il y a quelques mois, j'ai entendu parler un projet qui utilise un bot de messagerie instantanée pour créer un système qui serait automatiquement traiter et organiser des commandes de pizza envoyées par les clients via Whats app. J'
Smart personnel thermomètre avec Arduino

Smart personnel thermomètre avec Arduino

Cette instructable est préparée dans le cadre de notre mission pour TfCD (technique au service du Concept Design) cours de TU Delft. Ce instructable qui suit est préparé par :Bo Koperdraat : 4209567Karthik mandon : 4501578Dans ce instructable vous ap
Personnels Arduino Quiz

Personnels Arduino Quiz

Ce Quiz de l'Arduino est l'électronique nus nécessaires pour faire un jeu-questionnaire génial, portable ! Dans ce Instructable, vous apprendrez au fil de ce superbe projet éducatif. Aucune enceinte n'est inclus, parce que je veux que vous pensiez d'
Arduino ventilateur à commande personnelle avec capteur de Ping / ATtiny2313

Arduino ventilateur à commande personnelle avec capteur de Ping / ATtiny2313

que cela fait-il?Il s'agit d'un ventilateur qui s'allume automatiquement quand je suis assis à mon établi et éteint quand je partirai.Il utilise un Capteur de Distance à ultrasons, ou communément appelé un capteur "Ping" pour la détection.Un ATt
Comment connecter un téléphone Android directement à un Arduino (USB OTG) (Via un masseur personnel)

Comment connecter un téléphone Android directement à un Arduino (USB OTG) (Via un masseur personnel)

IntroductionCe projet vous est présenté par Comingle.io, le sextoy Open-Sourcesociété. Nous lançons une nouvelle marque crowdfunding campagne athttp://igg.me/at/mod pour financer la production de masse d'un nouveau gode complètement hackable. Il vous
Système de sécurité personnelle en utilisant Arduino

Système de sécurité personnelle en utilisant Arduino

Voici juste un simple guide sur comment créer votre propre mini « système de sécurité » à l'aide d'un Arduino. C'est juste un amusement du projet, s'il vous plaît ne dépendent en fait de ce dispositif pour préserver la sécurité de votre maison ! Ce m
Station météo personnelle arduino hébreu

Station météo personnelle arduino hébreu

הרעיון בפרויקט זה הוא ליצור שילוב של נתוני מזג אוויר המגיעים מלוח ארדוינו הנמצא בבית, ומהאינטרנט, ולאפשר למשתמש הן חיווי הנובע מהנתונים והן ביצוע פעולות פשוטות כמו הדלקה וכיבוי של תאורה מקומית (או כל מכשיר אחר המחובר לשקע הנשלט על ידי הלוח או מופעל ב
Arduino température moteur ventilateur - existant domotique

Arduino température moteur ventilateur - existant domotique

Ce projet vise à conduire un ventilateur à deux vitesses avec un Arduino, basé sur la température de l'environnement.Le projet a été conçu pour aider à automatiser un système de chauffage basé sur feu existant. L'idée est que l'environnement va être
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
RC Multi canal Arduino proportionnelle émetteur / récepteur avec bouton coupe-bordures

RC Multi canal Arduino proportionnelle émetteur / récepteur avec bouton coupe-bordures

Vous êtes à la recherche pour faire votre propre drone quadcopter ou voiture RC avec Arduino, mais ne sais pas par où commencer ? Peut-être vous avez déjà acheté quelques modules RF 433MHz, seulement pour découvrir qu'ils n'étaient pas aussi simples
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
Arduino Esp8266 Post données au site Web

Arduino Esp8266 Post données au site Web

Le WiFi Module de ESP8266 est un autonome SOC avec la pile de protocole TCP/IP intégré qui peut donner n'importe quel microcontrôleur accès à votre réseau WiFi. Il offre un complet et autonome Wi-Fi réseau solution, ce qui lui permet d'accueillir soi