Stap 5: Arduino Arduino,, ontmoet Wave Shield.
Sorry, ik dwaal af.
Hier is wat we niet bent gaat om u te tonen: drie uur van solderen! Wat is groot over Lady Ada en haar roemrijke producten is dat ze goedkoop zijn en ze met echt goede instructies komen! Plus, de dame, houdt de kosten omlaag door niet het monteren van de planken en op zijn beurt, je leert om te solderen als een robot! Wat zuigt is, het pad naar het solderen als een robot verwant is de wandeling Dante nam met Virgil.
Wees niet skerd! Solderen is een grote vaardigheid!
De volgende ding om te doen is het volgen van de tutorial "Gebruiken het" op de WAVE SHIELD om te leren hoe... uh... gebruiken. Dit gaat met behulp van uw SD CARD FORMATTER en CARD, krijgen de bestanden op de kaart en krijgt de CODE! Onze code is gepost hieronder. DIT VRAAGT VEEL VAN EEN NIEUWE GEBRUIKER VAN DE ARDUINO!!! Niet worden ontmoedigd als het niet soepel gaat. Het niet voor ons beide.
CODE: Hieronder hier, kopieer en plak in de Arduino IDE.
#include "FatReader.h"
#include "SdReader.h"
#include
#include "WaveUtil.h"
#include "WaveHC.h"
Kaart van de SdReader; Dit object bevat de gegevens voor de kaart
FatVolume vol; Dit houdt de informatie voor de partitie op de kaart
FatReader wortel; Dit bevat de gegevens voor het bestandssysteem op de kaart
F FatReader; Dit bevat de gegevens voor het bestand we spelen
WaveHC Golf; Dit is de enige Golf (audio) object, omdat we zullen slechts één filter tegelijk spelen
uint8_t dirLevel; inspringing van niveau voor bestand/map namen (voor prettyprinting)
dir_t dirBuf; buffer voor de map leest
ongeldig setUsUpTheCard(void) {}
pinMode (2, OUTPUT);
pinMode (3, OUTPUT);
pinMode (4, OUTPUT);
pinMode (5, OUTPUT);
Als (! card.init(true)) {//play met 4 MHz spi als 8MHz niet voor u werkt
Als (! card.init()) {//play met 8 MHz spi (standaard sneller!)
putstring_nl ("Card init. mislukt!"); Er ging iets mis, laat uitprinten waarom
sdErrorCheck();
while(1); vervolgens 'stoppen' - niets doen!
}
Nu gaan we voor een FAT-partitie!
uint8_t deel;
voor (deel = 0; deel < 5; deel ++) {/ / Wij hebben maximaal 5 "slots" om in te kijken
Als (vol.init (kaart, deel))
breken; We vonden een, laat borgtocht
}
Als (deel == 5) {/ / als we uiteindelijk niet het vinden van een :(
putstring_nl ("geen geldige FAT-partitie!");
sdErrorCheck(); Er ging iets mis, laat uitprinten waarom
while(1); vervolgens 'stoppen' - niets doen!
}
Probeert te openen van de root directory
Als (! root.openRoot(vol)) {}
putstring_nl ("kan niet openen root dir!"); Er ging iets mis,
while(1); vervolgens 'stoppen' - niets doen!
}
Oef! Daar kregen we voorbij de harde delen.
putstring_nl ("bestanden gevonden:");
dirLevel = 0;
Afdrukken van alle bestanden in alle mappen.
lsR(root);
}
/*
* lijst recursief - mogelijk stackoverloop als submappen ook genest
*/
VOID lsR (FatReader & d)
{
int8_t r; geeft het niveau van recursie
terwijl ((r = d.readDir(dirBuf)) > 0) {/ / Lees het volgende bestand in de directory
overslaan van submappen. en...
Als (dirBuf.name[0] == '.')
blijven;
voor (uint8_t ik = 0; ik < dirLevel; i ++)
Serial.Print(' '); Dit is voor prettyprinting, spaties vooraan zetten
printName(dirBuf); de naam van het bestand dat we net ontdekt afdrukken
Serial.println(); en een nieuwe lijn
Als (DIR_IS_SUBDIR(dirBuf)) {/ / wij zal recursief op elke direcory
FatReader s; Maak een nieuwe directory-object om informatie
dirLevel += 2; streepje 2 ruimten voor toekomstige afdrukken
Als (s.open (vol, dirBuf))
lsR(s); lijst van alle bestanden in deze map nu!
dirLevel-=2; de extra inspringing verwijderen
}
}
sdErrorCheck(); doen we OK?
}
/*
* afdrukken dir_t naamveld. De output is 8.3 opmaken, zo als geluid. WAV- of bestandsnaam. DAT
*/
VOID printName (dir_t & dir)
{
voor (uint8_t ik = 0; ik < 11; i ++) {/ / 8.3-indeling heeft 8 + 3 = 11 brieven in het
Als (dir.name[i] == ' ')
blijven; geen spaties in de naam worden niet afgedrukt
Als (ik == 8)
Serial.Print('.'); na de 8e brief, plaats een stip
Serial.Print(dir.name[i]); het zoveelste cijfer afdrukken
}
Als (DIR_IS_SUBDIR(dir))
Serial.Print('/'); mappen krijgen een / eind
}
Speelt een volledige bestand van begin tot eind met geen pauze.
ongeldig playcomplete(char *name) {}
Bel onze helper vinden en spelen deze naam
playfile(name);
terwijl (wave.isplaying) {}
niets te doen tijdens het spelen van haar
}
nu zijn gedaan afspelen
}
ongeldig playfile(char *name) {}
Zie als de Golf-object is momenteel bezig met iets
Als (wave.isplaying) {/ / al het spelen van iets, dus stoppen met het!
Wave.stop(); Stop ermee
}
kijken in de root directory en open het bestand
Als (! f.open (root, naam)) {}
putstring kon niet ("open bestand"); Serial.Print(name); terugkeer;
}
OK lees het bestand en zet hem in een golf-object
Als (! wave.create(f)) {}
putstring_nl ("niet een geldig WAV"); terugkeer;
}
OK tijd om te spelen! Start het afspelen
Wave.Play();
}
VOID sdErrorCheck(void)
{
Als (! card.errorCode()) keren;
putstring ("SD i/o-fout:");
Serial.Print(Card.ErrorCode(), HEX);
putstring (",");
Serial.println(Card.errorData(), HEX);
while(1);
}
/*************************************
* DIT IS HET GOEDE SPUL ***
*************************************/
int tilt_port = 13; digitale poort de neigingsensor is op
int tilt_original; houdt de beginpositie van de Kantelsensor
voor faux versnellingsmeter actie
VOID Setup {}
Serial.begin(9600);
pinMode (tilt_port, INPUT);
int tilt_original = digitalRead(tilt_port);
setUsUpTheCard(); initialiseren van de Wave Shield
}
int duim = 0;
int aanwijzer = 0;
int midden = 0;
int ring = 0;
int pinky = 0;
int tilt_waiting = 0;
int tilt_inmotion = 0;
int gekruld = 0;
int curled_previous = 0;
void loop {}
int duim = analogRead(A4);
int aanwijzer = analogRead(A3);
int midden = analogRead(A2);
int ring = analogRead(A1);
int pinky = analogRead(A0);
gekruld = 0;
/*
* de duim lijkt te zijn b0rked
* willekeurig (?) stokken op 0
* Dus laten we negeren
*/
Als (duim > 120) {}
gekrulde += 1;
}
Als (aanwijzer > 150) {}
gekrulde += 10;
}
/*
* de middelvinger is schijnbaar altijd op
* Dus laten we negeren
*/
Als (middelste > 130) {}
gekrulde += 100;
}
Als (ring > 170) {}
gekrulde += 1000;
}
Als (pinky > 120) {}
gekrulde += 10000;
}
Als (gekruld > = 11100) {}
tilt_check ("PUNCH", "PUNCH. WAV");
} else {}
tilt_check ("GUN", "GUN. WAV");
}
/*
Als (gekruld == 0) {}
Karate CHOP!
tilt_check ("Hak", "CHOP. WAV");
} else if (gekruld == 1000 + 10000) {}
PISTOOL
tilt_check ("GUN", "GUN. WAV");
} else if (gekruld == 9999) {}
SPIIIIIDEY-MAN
tilt_check ("SPIDEY", "SPIDEY. WAV");
} else if (gekruld == 10 + 1000 + 10000) {}
VUIST
tilt_check ("PUNCH", "PUNCH. WAV");
}
*/
Serial.Print ("duim:"); Serial.println(Thumb);
Serial.Print ("aanwijzer:"); Serial.println(pointer);
Serial.Print ("Midden:"); Serial.println(Middle);
Serial.Print ("ring:"); Serial.println(ring);
Serial.Print ("pinky:"); Serial.println(Pinky);
Serial.Print ("gekruld:"); Serial.println(curled);
Serial.println("");
delay(15);
}
VOID reset_check (int reset = 0) {}
Als (reset || gekruld! = curled_previous) {}
tilt_waiting = 0;
tilt_inmotion = 0;
curled_previous = gekruld;
}
}
VOID tilt_check (String message, char * filename) {}
reset_check();
int tilt = digitalRead(tilt_port);
Serial.println(Tilt);
Als (! tilt_waiting) {}
tilt_waiting = 1;
tilt_original = tilt;
} else {}
Als (kantelen! = tilt_original) {}
tilt_inmotion = 1;
}
Als (tilt_inmotion & & kantelen == tilt_original) {}
Serial.println(Message);
Serial.println(filename);
playcomplete(filename);
reset_check(1);
}
}
}