Étape 5: Arduino, vague rencontre bouclier.
Désolé, je m’égare.
Voici ce que nous n’allons pas vous montrer : trois heures de soudure ! Ce qui est formidable à propos de Lady Ada et ses produits glorieux, c’est qu’ils sont peu coûteux et ils viennent avec des instructions très bonnes! De plus, la Dame, maintient le coût par ne pas assembler les planches et à son tour, vous apprendrez à souder comme un robot ! Ce qui suce est, le chemin d’accès à souder comme un robot est s’apparente la marche de Dante a pris avec Virgil.
Ne soyez pas skerd ! Soudure est une grande habileté !
La prochaine chose à faire est de suivre le tutoriel « Utiliser IT » sur le bouclier de la vague d’apprendre comment... euh... l’utiliser. Il s’agit à l’aide de votre carte de FORMATTER et carte SD, obtenir les fichiers sur la carte et d’obtenir le CODE ! Notre code est affiché ci-dessous. CELA DEMANDE BEAUCOUP D’UN NOUVEL UTILISATEUR ARDUINO!!! Ne vous découragez pas si elle ne va pas sans heurts. Il n’a pas pour nous non plus.
CODE : Ci-dessous voici, copiez et collez dans votre IDE Arduino.
#include « FatReader.h »
#include « SdReader.h »
#include
#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 du fichier que nous jouons
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 (pour prettyprinting)
dir_t dirBuf ; tampon pour répertoire lectures
void setUsUpTheCard(void) {}
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 !
}
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 !
}
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 ("fichiers trouvés:") ;
dirLevel = 0 ;
Imprimer tous les fichiers dans tous les répertoires.
lsR(root) ;
}
/*
* la liste récursivement - débordement de pile possible si les sous-répertoires imbriqués trop
*/
Sub DSL (FatReader-d)
{
int8_t r ; indique le niveau de récursivité
tandis que ((r = d.readDir(dirBuf)) > 0) {/ / lire le fichier suivant dans le répertoire
Passez les sous répertoires. et...
Si (dirBuf.name[0] == '.')
continuer ;
pour (uint8_t i = 0; i < dirLevel; i ++)
Serial.Print(' ') ; Il s’agit de prettyprinting, mis en face des espaces
printName(dirBuf) ; imprimer le nom du fichier que nous venons de trouver
Serial.println() ; et une nouvelle ligne
Si (DIR_IS_SUBDIR(dirBuf)) {/ / nous répète sur n’importe quel direcory
FatReader s ; rendre un nouvel objet de répertoire pour contenir des informations
dirLevel += 2 ; retrait des 2 espaces pour les futurs tirages
Si (s.open (vol, dirBuf))
lsR(s) ; Liste tous les fichiers dans ce répertoire maintenant !
dirLevel-=2 ; supprimer l’indentation supplémentaire
}
}
sdErrorCheck() ; Nous faisons OK ?
}
/*
* imprimer le champ de nom de dir_t. La sortie est 8.3 formater, donc comme bruit. WAV ou nom de fichier. DAT
*/
Sub printName (dir_t & dir)
{
pour (uint8_t j’ai = 0; i < 11; i ++) {/ / format 8.3 a 8 + 3 = 11 lettres dedans
Si (dir.name[i] == ' ')
continuer ; n’imprimez pas tous les espaces dans le nom
Si (j’ai == 8)
Serial.Print('.') ; après la 8e lettre, lieu d’un point
Serial.Print(dir.Name[i]) ; imprimer le n-ième chiffre
}
Si (DIR_IS_SUBDIR(dir))
Serial.Print('/') ; annuaires obtenir un / à la fin
}
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() ;
}
Sub sdErrorCheck(void)
{
Si (! card.errorCode()) retourner ;
putstring ("erreur e/s SD:") ;
Serial.Print(Card.ErrorCode(), HEX) ;
putstring (",") ;
Serial.println(Card.ErrorData(), HEX) ;
while(1) ;
}
/*************************************
* C’EST LES BONNES CHOSES ***
*************************************/
int tilt_port = 13 ; voies numériques le capteur d’inclinaison est sur
int tilt_original ; occupe le poste de début de la sonde d’inclinaison
d’action de l’accéléromètre faux
void setup() {}
Serial.Begin(9600) ;
pinMode (tilt_port, entrée) ;
int tilt_original = digitalRead(tilt_port) ;
setUsUpTheCard() ; initialiser le bouclier de la vague
}
pouce int = 0 ;
pointeur d’int = 0 ;
moyen d’int = 0 ;
bague int = 0 ;
pinky int = 0 ;
int tilt_waiting = 0 ;
int tilt_inmotion = 0 ;
int chicorée = 0 ;
int curled_previous = 0 ;
void loop() {}
pouce int = analogRead(A4) ;
pointeur d’int = analogRead(A3) ;
moyen d’int = analogRead(A2) ;
bague int = analogRead(A1) ;
pinky int = analogRead(A0) ;
chicorées = 0 ;
/*
* le pouce semble être b0rked
* au hasard (?) bâtons à 0
* donc, nous allons l’ignorer
*/
Si {(pouce > 120)
spirale += 1 ;
}
Si {(pointeur > 150)
spirale += 10 ;
}
/*
* le doigt du milieu est apparemment toujours sur
* donc, nous allons l’ignorer
*/
Si (moyenne > 130) {}
+= frisés 100 ;
}
Si {(anneau > 170)
spirale += 1000 ;
}
Si {(pinky > 120)
spirale += 10000 ;
}
Si (chicorées > = 11100) {}
tilt_check ("PUNCH", "coup de poing. « « « WAV ») ;
} else {}
tilt_check ("GUN", "des armes à feu. « « « WAV ») ;
}
/*
Si (chicorées == 0) {}
Karate CHOP !
tilt_check ("Hacher", "CHOP. « « « WAV ») ;
} ElseIf (chicorées == 1000 + 10000) {}
ARMES À FEU
tilt_check ("GUN", "des armes à feu. « « « WAV ») ;
} ElseIf (chicorées == 9999) {}
SPIIIIIDEY-HOMME
tilt_check ("Spider-Man", "Spider-Man. « « « WAV ») ;
} ElseIf (chicorées == 10 + 1000 + 10000) {}
POING
tilt_check ("PUNCH", "coup de poing. « « « WAV ») ;
}
*/
Serial.Print (« pouce: ") ; Serial.println(Thumb) ;
Serial.Print ("pointeur:") ; Serial.println(pointer) ;
Serial.Print ("moyenne:") ; Serial.println(Middle) ;
Serial.Print ("anneau:") ; Serial.println(Ring) ;
Serial.Print ("pinky:") ; Serial.println(Pinky) ;
Serial.Print ("chicorées:") ; Serial.println(curled) ;
Serial.println("") ;
Delay(15) ;
}
void reset_check (int reset = 0) {}
Si (réinitialiser || chicorées! = curled_previous) {}
tilt_waiting = 0 ;
tilt_inmotion = 0 ;
curled_previous = recourbé ;
}
}
void tilt_check (String message, char * filename) {}
reset_check() ;
inclinaison de l’int = digitalRead(tilt_port) ;
Serial.println(Tilt) ;
Si (! tilt_waiting) {}
tilt_waiting = 1 ;
tilt_original = l’inclinaison ;
} else {}
Si (incliner! = tilt_original) {}
tilt_inmotion = 1 ;
}
Si (tilt_inmotion & & incliner == tilt_original) {}
Serial.println(message) ;
Serial.println(fileName) ;
playcomplete(fileName) ;
reset_check(1) ;
}
}
}