Construction de droïde C3PO (42 / 43 étapes)

Etape 42 : Arduino Uno R3

L’Arduino Uno R3 lit une valeur binaire à 4 chiffres de l’Arduino Mega 2560 et joue un fichier audio associé à la valeur binaire. Il s’agit de la voix du droïde C3PO. Se référer aux dessins pour l’information de raccordement électriques.

John Guarnero

Septembre 2014

#include

#include

#include

#include

int inp6 = 0 ;

int inp7 = 0 ;

int inp8 = 0 ;

int inp9 = 0 ;

int TC_Value = 8 ;

int Last_TC = 0 ;

int Demonstration_Value = 0 ;

int Last_Demonstration_Value = 1 ;

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

uint8_t dirLevel ; tiret de niveau pour les noms de fichier/dir

dir_t dirBuf ; tampon pour répertoire lectures

/*

Définir des macros pour mettre des messages d’erreur dans la mémoire flash

*/

#define error(msg) error_P(PSTR(msg))

Définitions de fonction (nous les définissons ici, mais le code est ci-dessous)

void play (FatReader et dir) ;

PROGRAMME D’INSTALLATION

void setup() {}

Serial.Begin(9600) ; mettre en place une bibliothèque série à 9600 bits/s pour le débogage

putstring_nl (« \nWave test!") ; dire que nous nous sommes réveillés !

putstring ("RAM libre:") ; Ce qui peut aider avec le débogage, manquer de RAM est mauvais

Serial.println(FreeRam()) ;

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

erreur ("carte init. a échoué!") ; Quelque chose a mal tourné, permet d’imprimer les raisons pour lesquelles

}

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, donc sortir

}

Si (partie == 5) {/ / si nous avons fini ne pas trouver un:(

erreur ("aucun FAT partition valide!") ; Dire ce qui s’est mal passé

}

Permet d’indiquer à l’utilisateur de ce qui s’est passé

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)) {}

erreur ("Impossible d’ouvrir le répertoire racine!") ; Quelque chose a mal tourné,

}

//

putstring_nl ("fichiers trouvés (* = fragmenté):") ;

Imprimer tous les fichiers dans tous les répertoires.

root.ls(LS_R | LS_FLAG_FRAGMENTED) ;

}

AIDES

/*

imprimer des message d’erreur et arrêter

*/

void error_P (const char * str) {}

PgmPrint ("erreur:") ;

SerialPrint_P(str) ;

sdErrorCheck() ;

while(1) ;

}

void sdErrorCheck(void) {}

Si (! card.errorCode()) retourner ;

PgmPrint ("\r\nSD I/O erreur:") ;

Serial.Print(Card.ErrorCode(), HEX) ;

PgmPrint (",") ;

Serial.println(Card.ErrorData(), HEX) ;

while(1) ;

}

Début de boucle

void loop()

{

octet i ;

INP6 = digitalRead(6) ; 1 binaire

inp7 = digitalRead(7) ; 2 binaire

inp8 = digitalRead(8) ; 4 binaire

inp9 = digitalRead(9) ; 8 binaire

Si (inp6 == HIGH & & inp7 == LOW & & inp8 == LOW & & inp9 == faible) / / 1 2 4 8

{//Happy anniversaire Emily

Serial.println("1") ;

TC_Value = 1 ;

playcomplete("1.wav") ;

retard (1) ;

}

Si (inp6 == LOW & & inp7 == HIGH & & inp8 == LOW & & inp9 == faible) / / 1 2 4 8

{//Happy anniversaire Kim

Serial.println("2") ;

TC_Value = 2 ;

playcomplete("2.wav") ;

retard (1) ;

}

Si (inp6 == HIGH & & inp7 == HIGH & & inp8 == LOW & & inp9 == faible) / / 1 2 4 8

{//Happy anniversaire Megan

Serial.println("3") ;

TC_Value = 3 ;

playcomplete("3.wav") ;

retard (1) ;

}

Si (inp6 == LOW & & inp7 == LOW & & inp8 == HIGH & & inp9 == faible) / / 1 2 4 8

{//Welcome à la maison de Guarnero

Serial.println("4") ;

TC_Value = 4 ;

playcomplete("4.wav") ;

retard (1) ;

}

Si (inp6 == HIGH & & inp7 == LOW & & inp8 == HIGH & & inp9 == faible) / / 1 2 4 8

{//Happy Halloween

Serial.println("5") ;

TC_Value = 5 ;

playcomplete("5.wav") ;

retard (1) ;

}

Si (inp6 == LOW & & inp7 == HIGH & & inp8 == HIGH & & inp9 == faible) / / 1 2 4 8

{//Happy anniversaire

Serial.println("6") ;

TC_Value = 6 ;

playcomplete("6.wav") ;

retard (1) ;

}

Si (inp6 == HIGH & & inp7 == HIGH & & inp8 == HIGH & & inp9 == faible) / / 1 2 4 8

{//Say quelques blagues

Serial.println("7") ;

TC_Value = 7 ;

playcomplete("7.wav") ;

retard (1) ;

}

Si (inp6 == LOW & & inp7 == LOW & & inp8 == LOW & & inp9 == haut) / / 1 2 4 8

{//Kim Saint dialogue & Kim R2D2 dialogue

Serial.println("8") ;

TC_Value = 8 ;

playcomplete("8.wav") ;

retard (1) ;

}

Si (inp6 == HIGH & & inp7 == LOW & & inp8 == LOW & & inp9 == haut) / / 1 2 4 8

{//Happy Thanksgiving

Serial.println("9") ;

TC_Value = 9 ;

playcomplete("9.wav") ;

retard (1) ;

}

Si (inp6 == LOW & & inp7 == HIGH & & inp8 == LOW & & inp9 == haut) / / 1 2 4 8

{//Kims brioches à la boîte de dialogue

Serial.println("10") ;

TC_Value = 10 ;

playcomplete("10.wav") ;

retard (1) ;

}

Si (inp6 == HIGH & & inp7 == HIGH & & inp8 == LOW & & inp9 == haut) / / 1 2 4 8

{//Master John & Lost In Space

Serial.println("11") ;

TC_Value = 11 ;

playcomplete("11.wav") ;

retard (1) ;

}

Si (inp6 == LOW & & inp7 == LOW & & inp8 == HIGH & & inp9 == haut) / / 1 2 4 8

{//Merry Noël

Serial.println("12") ;

TC_Value = 12 ;

playcomplete("12.wav") ;

retard (1) ;

}

Last_TC = TC_Value ;

Serial.println(Last_TC) ;

//

}

Fin de boucle

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 la lecture audio

}

Audio est fait jouer

}

void playfile(char *name) {}

voir si l’objet vague est en train de faire quelque chose

Si (wave.isplaying) {/ / audio qui déjà joue donc l’arrêter

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

Star Wars C3PO et R2D2 chaussures peint !

Star Wars C3PO et R2D2 chaussures peint !

Star Wars C3PO et R2D2 peint talons !Oui--ce sont les chaussures que vous cherchez !J'ai été inspiré par ces talons R2D2 que Mikeasaurus fait !Je n'ajoute le tech et j'ai mélangé les un peu... maisqui ne veut pas de chaussures dépareillées droid???J'
Droïde souris pleine échelle de star wars

Droïde souris pleine échelle de star wars

J'aime star wars et j'ai aimé toujours construire des choses de la franchise de film. J'ai mon propre armure de Stormtrooper, après la visite d'une journée de star wars à notre centre de sciences locale, que j'ai décidé que je voulais faire un droïde
Bases CNC (construction d’une pièce de machine cnc 1)

Bases CNC (construction d’une pièce de machine cnc 1)

Si vous voulez en savoir plus sur comment faire une machine CNC ?Que ce soit une imprimante 3D ou un témoin d'anomalie quelconque, cela vous mènera à travers les bases a donner vous une bonne idée de comment ils fonctionnent, exploiter et quelles piè
Comment utiliser le DRO (affichage numérique)

Comment utiliser le DRO (affichage numérique)

j'ai fait une lueur moteur Carter à l'aide de l'usine.  Je l'ai fait à TechShop (http://www.techshop.ws/).  Le dispositif DRO (affichage numérique) a joué un rôle important dans l'assurance que les dimensions étaient correctes et égalé mon schéma.  J
Droïde destroyer LEGO

Droïde destroyer LEGO

je ne sais pas si elle existe, mais j'ai jamais vu en vente un lego serti de miniature destroyer droïdes.Donc, voici une idée. Espérons qu'il vous plaira.Étape 1: pièces Tout d'abord, les pièces nécessaires à sa construction.Étape 2: bâtiment Mainten
Lumière LED luminaire Design et Construction

Lumière LED luminaire Design et Construction

Lumières avec indice de rendu des couleurs (CRI) étaient nécessaires pour un réglage de studio d'art. Plusieurs options d'éclairage étaient considérés comme incluant : incandescentes et halogènes, ampoules de rechange de diodes électroluminescentes (
Construction d’une imprimante de Delta de 550 $ (AU)

Construction d’une imprimante de Delta de 550 $ (AU)

le Delta XL du Kossel imprimante est un grand morceau de matériel que vous pouvez soit l'acheter en kit je recommande builda3dprinter.eu il faut environ un mois pour un kit complet arriver et ils sont environ 560 £ (650 $US) ($860AUD) ou les pièces d
Construction d’un Module de prototypage maquette

Construction d’un Module de prototypage maquette

Beaucoup d'entre nous des vétérans couper nos dents sur le laboratoire d'électronique Archer 200-en-1 classique ou kits similaires. Pensez-y comme un Arduino analogique - un couteau suisse électronique. Ils consistaient en un plateau avec différents
Construction d’une clôture semi-permanents

Construction d’une clôture semi-permanents

jardins. Tout le monde aime un jardin. Jardins de fournissent de la nourriture. Jardins de fournissent de l'ombre. Jardins offrent un endroit agréable pour creuser. Et une fois que vous creusez un trou de nice, un jardin fournit un endroit cool pour
Easy-construction remorque vélo

Easy-construction remorque vélo

Étant donné j'ai un enfant en bas âge à la maison et de temps n'est pas abondante, j'ai eu certaines philosophies/objectifs principaux à atteindre dans la construction de cette moto :Cela devait être fait pour presque rien ou libreIl devait être fait
Classe CCCR - de Rilley - construction d’un ordinateur

Classe CCCR - de Rilley - construction d’un ordinateur

Dans ce guide, nous allons parler de comment construire un ordinateur, à partir de quels documents vous devez, vous aurez besoin de prendre les précautions de sécurité. Il peut sembler comme une tâche ardue à tout d'abord et il devrait être beaucoup
Une toute nouvelle théorie sur la construction des pyramides (que je sache)

Une toute nouvelle théorie sur la construction des pyramides (que je sache)

Donc, voici le principe : vous êtes un milliardaire dot com, ou l'inventeur d'un goût de médias sociaux logiciel app, ou peut-être vous juste a gauche pots d'argent de votre vieil oncle riche, et votre minou BFF vient de perdre toutes ses neuf vies p
Construction d’un Laser Cut modèle On A Rainy Day

Construction d’un Laser Cut modèle On A Rainy Day

Si vous aimez construire des modèles et n'avez pas essayé le laser cut trousses... alors vous avez un enorme traiter en magasin.J'ai regardé sur Instructables et n'ont pas encore vu aucune référence à ces grands kits et alors j'ai pensé qu'il serait
Construction du Circuit pratique avec le Conseil de bande

Construction du Circuit pratique avec le Conseil de bande

Ce Instructable documente les outils « minimales » nécessaires pour créer des circuits électroniques de qualité raisonnable et donne des conseils de construction pragmatique terminant avec un exercice de conception pratique.On présume que tous les co