Stap 14: Software
Ik zal zeggen dat ik heb mijn start van deze timing van sommige andere webpagina. Ik kan niet vinden waar mij got op, en moest een heleboel wijzigingen hoe dan ook, dus ik ben laden hier. Zodra u dit hebt het is heel gemakkelijk om een programma voor elk nummer... maar als u als me bent u beter op de technische bedrading en programmering dan u zijn bijpassende dansen lichten naar muziek... dus met een uitgangspunt een grote hulp is.Dus is hier de code. Nogmaals is het de code voor de vreugde aan het bestand van de wereld. De versie die ik heb geüpload is MP3, maar als u de wave shield gebruiken zal het moeten worden omgezet naar WAV.
Ik heb ook moe van omgaan met de zeer lange code voor de lichten in de lus, dus ik het een functie maakte, genaamd "joy()".
Hier is de code van Arduino:
Door: Tre' Landrum
#include
#include
#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 aan het spelen bent
WaveHC Golf; Dit is de enige Golf (audio) object, omdat we zullen slechts één filter tegelijk spelen
#define DEBOUNCE 5 / / button debouncer
Dit is voor de dansende lichten tijdens vreugde aan de wereld
Als u van de Uno in plaats van de Mega gebruikmaakt moet je wijzigen deze pinnen. Als u de WaveShield hebt gebruikt zul je alleen een paar pinnen avaialbe... 6-9 vanaf de bovenkant van mijn hoofd.
int light1 = 22;
int light2 = 24;
int light3 = 26;
int light4 = 28;
int light5 = 30;
int light6 = 32;
int light7 = 34;
int light8 = 36;
int s = 150;
int ds = 225;
int e = 300;
int de = 450;
int q = 600; 600
int dq = 900;
int h = 0; 1200
int dh = 1800;
int begin;
int einde;
int de tijd;
int nu;
Variabelen zal veranderen:
Hier is waar we het definiëren van de knoppen die we zullen gebruiken. knop "1" is de eerste, knop "6" is de 6e, etc
byte knoppen [] = {14, 15, 16, 17, 18 en 19};
Deze handige macro laat ons bepalen hoe groot de array van boven is, door de grootte controleren
#define NUMBUTTONS sizeof(buttons)
Wij zullen volgen als een knop wordt alleen gedrukt, net vrijgegeven, of '' (de stand ingedrukt
vluchtige byte ingedrukt [NUMBUTTONS], justpressed [NUMBUTTONS], justreleased [NUMBUTTONS];
deze handige functie geeft het aantal bytes in het RAM, momenteel gratis groot voor debugging!
int freeRam(void)
{
extern int __bss_end;
extern int * __brkval;
int free_memory;
Als (__brkval (int) == 0) {}
FREE_MEMORY = ((int) & free_memory)-((int) & __bss_end);
}
else {}
FREE_MEMORY = ((int) & free_memory)-((int) __brkval);
}
Return free_memory;
}
VOID sdErrorCheck(void)
{
Als (! card.errorCode()) keren;
putstring ("\n\rSD I/O fout:");
Serial.Print(Card.ErrorCode(), HEX);
putstring (",");
Serial.println(Card.errorData(), HEX);
while(1);
}
VOID Setup {}
byte i;
seriële poort instellen
Serial.begin(9600);
putstring_nl ("WaveHC met");
Serial.Print (NUMBUTTONS, DEC);
putstring_nl("buttons");
putstring ("vrije RAM:"); Dit kan helpen met het opsporen van fouten, uit RAM lopend is slecht
Serial.println(freeRam()); Als dit onder 150 bytes kan het problemen magie!
De pennen voor de DAC-besturingselement instellen Deze pennen zijn gedefinieerd in de bibliotheek
pinMode (2, OUTPUT);
pinMode (3, OUTPUT);
pinMode (4, OUTPUT);
pinMode (5, OUTPUT);
pin13 LED
pinMode (13, OUTPUT);
Maak input & pull-up weerstanden op schakelaar pinnen inschakelen
voor (ik = 0; ik < NUMBUTTONS; i ++) {}
pinMode (knoppen [i], INPUT);
digitalWrite (knoppen [i], hoge);
}
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!
}
inschakelen optimaliseren lees - sommige kaarten kunnen timeout. Uitschakelen als u problemen ondervindt
card.partialBlockRead(true);
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!
}
Laat de gebruiker te vertellen over wat we gevonden
putstring ("Using partitie");
Serial.Print (deel, DEC);
putstring (", type is vet");
Serial.println(vol.fatType(),DEC); FAT16 of FAT32?
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("Ready!");
TCCR2A = 0;
TCCR2B = 1 <
Timer2 Overflow Interrupt Enable
TIMSK2 | = 1 <
pinMode (light1, OUTPUT);
pinMode (light2, OUTPUT);
pinMode (light3, OUTPUT);
pinMode (light4, OUTPUT);
pinMode (light5, OUTPUT);
pinMode (light6, OUTPUT);
pinMode (light7, OUTPUT);
pinMode (light8, OUTPUT);
de SainSmart Relais zijn uitgeschakeld hoge
digitalWrite(light1,HIGH);
digitalWrite(light2,HIGH);
digitalWrite(light3,HIGH);
digitalWrite(light4,HIGH);
digitalWrite(light5,HIGH);
digitalWrite(light6,HIGH);
digitalWrite(light7,HIGH);
digitalWrite(light8,HIGH);
Serial.begin(9600);
} //void setup
Signal(TIMER2_OVF_vect) {}
check_switches();
}
VOID check_switches()
{
statische byte previousstate [NUMBUTTONS];
statische byte currentStatus [NUMBUTTONS];
byte index;
voor (index = 0; index < NUMBUTTONS; index ++) {}
currentStatus [index] = digitalRead(buttons[index]); Lees de knop
/*
Serial.Print (index, DEC);
Serial.Print (": cstate =");
Serial.Print (currentStatus [index], DEC);
Serial.Print (", pstate =");
Serial.Print (previousstate [index], DEC);
Serial.Print (", druk op =");
*/
Als (currentStatus [index] == previousstate[index]) {}
Als ((gedrukt [index] == laag) & & (currentStatus [index] == LOW)) {}
gewoon ingedrukt
justpressed [index] = 1;
}
anders als ((gedrukt [index] == HIGH) & & (currentStatus [index] == HIGH)) {}
net vrijgegeven
justreleased [index] = 1;
}
ingedrukt [index] =! currentStatus [index]; Vergeet niet, digitaal hoge middel niet ingedrukt
}
Serial.println (gedrukt [index], DEC);
previousstate [index] = currentStatus [index]; houden van een lopende telling van de knoppen
}
}
//**********************************************************************************************************
//**********************************************************************************************************
void loop {}
byte i;
Zorg ervoor dat u de naam van het bestand wijzigen bij wat je wilt
playfile ("de vreugde. WAV");
Joy(); Dit is de functie die vreugde aan de wereld speelt
} //void loop {}
//**********************************************************************************************************
//**********************************************************************************************************
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();
}
Functie voor het maken van de verschillende onderdelen licht verschillende
ongeldig joy() {}
putstring_nl ("starten van Joy to the World");
Start = millis();
digitalWrite (light1, laag);
digitalWrite (light8, laag);
delay(q);
digitalWrite (light1, hoge);
digitalWrite (light8, hoge);
digitalWrite (light2, laag);
digitalWrite (light7, laag);
delay(de);
digitalWrite (light2, hoge);
digitalWrite (light7, hoge);
digitalWrite (light3, laag);
digitalWrite (light6, laag);
delay;
digitalWrite (light3, hoge);
digitalWrite (light6, hoge);
digitalWrite (light4, laag);
digitalWrite (light5, laag);
delay(1050);
digitalWrite (light4, hoge);
digitalWrite (light5, hoge);
digitalWrite (light1, laag);
digitalWrite (light8, laag);
delay;
digitalWrite (light1, hoge);
digitalWrite (light8, hoge);
digitalWrite (light2, laag);
digitalWrite (light7, laag);
delay(q);
digitalWrite (light2, hoge);
digitalWrite (light7, hoge);
digitalWrite (light3, laag);
digitalWrite (light6, laag);
delay(q);
digitalWrite (light3, hoge);
digitalWrite (light6, hoge);
digitalWrite (light4, laag);
digitalWrite (light5, laag);
delay(DQ);
digitalWrite (light4, hoge);
digitalWrite (light5, hoge);
digitalWrite (light1, laag);
digitalWrite (light2, laag);
digitalWrite (light7, laag);
digitalWrite (light8, laag);
delay(e);
digitalWrite (light1, hoge);
digitalWrite (light2, hoge);
digitalWrite (light7, hoge);
digitalWrite (light8, hoge);
digitalWrite (light2, laag);
digitalWrite (light3, laag);
digitalWrite (light6, laag);
digitalWrite (light7, laag);
delay(DQ);
digitalWrite (light2, hoge);
digitalWrite (light3, hoge);
digitalWrite (light6, hoge);
digitalWrite (light7, hoge);
digitalWrite (light1, laag);
digitalWrite (light2, laag);
digitalWrite (light7, laag);
digitalWrite (light8, laag);
delay(e);
digitalWrite (light1, hoge);
digitalWrite (light2, hoge);
digitalWrite (light7, hoge);
digitalWrite (light8, hoge);
digitalWrite (light3, laag);
digitalWrite (light4, laag);
digitalWrite (light5, laag);
digitalWrite (light6, laag);
delay(DQ);
digitalWrite (light3, hoge);
digitalWrite (light4, hoge);
digitalWrite (light5, hoge);
digitalWrite (light6, hoge);
digitalWrite (light1, laag);
digitalWrite (light2, laag);
digitalWrite (light7, laag);
digitalWrite (light8, laag);
delay(e);
digitalWrite (light1, hoge);
digitalWrite (light2, hoge);
digitalWrite (light7, hoge);
digitalWrite (light8, hoge);
digitalWrite (light1, laag);
digitalWrite (light2, laag);
digitalWrite (light3, laag);
digitalWrite (light4, laag);
digitalWrite (light5, laag);
digitalWrite (light6, laag);
digitalWrite (light7, laag);
digitalWrite (light8, laag);
delay(DQ);
digitalWrite (light1, hoge);
digitalWrite (light2, hoge);
digitalWrite (light3, hoge);
digitalWrite (light4, hoge);
digitalWrite (light5, hoge);
digitalWrite (light6, hoge);
digitalWrite (light7, hoge);
digitalWrite (light8, hoge);
8100
digitalWrite (light8, laag);
delay(e);
digitalWrite (light8, hoge);
digitalWrite (light1, laag);
delay(e);
digitalWrite (light1, hoge);
digitalWrite (light7, laag);
delay(e);
digitalWrite (light7, hoge);
digitalWrite (light2, laag);
delay(e);
digitalWrite (light2, hoge);
digitalWrite (light6, laag);
delay(e);
digitalWrite (light6, hoge);
digitalWrite (light3, laag);
delay(de);
digitalWrite (light3, hoge);
digitalWrite (light5, laag);
delay;
digitalWrite (light5, hoge);
digitalWrite (light4, laag);
delay(e);
digitalWrite (light4, hoge);
digitalWrite (light8, laag);
delay(e);
digitalWrite (light8, hoge);
digitalWrite (light1, laag);
delay(e);
digitalWrite (light1, hoge);
digitalWrite (light7, laag);
delay(e);
digitalWrite (light7, hoge);
digitalWrite (light2, laag);
delay(e);
digitalWrite (light2, hoge);
digitalWrite (light6, laag);
delay(e);
digitalWrite (light6, hoge);
digitalWrite (light3, laag);
delay(de);
digitalWrite (light3, hoge);
digitalWrite (light5, laag);
delay;
digitalWrite (light5, hoge);
digitalWrite (light4, laag);
delay(e);
digitalWrite (light4, hoge);
digitalWrite (light2, laag);
digitalWrite (light7, laag);
delay(e);
digitalWrite (light2, hoge);
digitalWrite (light7, hoge);
digitalWrite (light1, laag);
digitalWrite (light8, laag);
delay(e);
digitalWrite (light1, hoge);
digitalWrite (light8, hoge);
digitalWrite (light2, laag);
digitalWrite (light7, laag);
delay(e);
digitalWrite (light2, hoge);
digitalWrite (light7, hoge);
13806
digitalWrite (light1, laag);
digitalWrite (light8, laag);
delay(e);
digitalWrite (light1, hoge);
digitalWrite (light8, hoge);
digitalWrite (light2, laag);
digitalWrite (light7, laag);
delay(75);
digitalWrite (light2, hoge);
digitalWrite (light7, hoge);
digitalWrite (light3, laag);
digitalWrite (light6, laag);
delay(75);
digitalWrite (light3, hoge);
digitalWrite (light6, hoge);
digitalWrite (light4, laag);
digitalWrite (light5, laag);
delay(DQ);
digitalWrite (light4, hoge);
digitalWrite (light5, hoge);
digitalWrite (light4, laag);
digitalWrite (light5, laag);
delay(75);
digitalWrite (light4, hoge);
digitalWrite (light5, hoge);
15235
digitalWrite (light3, laag);
digitalWrite (light6, laag);
delay(75);
digitalWrite (light3, hoge);
digitalWrite (light6, hoge);
digitalWrite (light4, laag);
digitalWrite (light5, laag);
delay(e);
digitalWrite (light4, hoge);
digitalWrite (light5, hoge);
digitalWrite (light3, laag);
digitalWrite (light6, laag);
delay(e);
digitalWrite (light3, hoge);
digitalWrite (light6, hoge);
digitalWrite (light4, laag);
digitalWrite (light5, laag);
delay(e);
digitalWrite (light4, hoge);
digitalWrite (light5, hoge);
digitalWrite (light3, laag);
digitalWrite (light6, laag);
delay(75);
digitalWrite (light3, hoge);
digitalWrite (light6, hoge);
digitalWrite (light2, laag);
digitalWrite (light7, laag);
delay(75);
digitalWrite (light2, hoge);
digitalWrite (light7, hoge);
digitalWrite (light1, laag);
digitalWrite (light8, laag);
delay(DQ);
digitalWrite (light1, hoge);
digitalWrite (light8, hoge);
digitalWrite (light1, laag);
digitalWrite (light2, laag);
digitalWrite (light7, laag);
digitalWrite (light8, laag);
delay(75);
digitalWrite (light1, hoge);
digitalWrite (light2, hoge);
digitalWrite (light7, hoge);
digitalWrite (light8, hoge);
17339
digitalWrite (light2, laag);
digitalWrite (light3, laag);
digitalWrite (light6, laag);
digitalWrite (light7, laag);
delay(75);
digitalWrite (light2, hoge);
digitalWrite (light3, hoge);
digitalWrite (light6, hoge);
digitalWrite (light7, hoge);
digitalWrite (light3, laag);
digitalWrite (light4, laag);
digitalWrite (light5, laag);
digitalWrite (light6, laag);
delay(e);
digitalWrite (light3, hoge);
digitalWrite (light4, hoge);
digitalWrite (light5, hoge);
digitalWrite (light6, hoge);
digitalWrite (light1, laag);
digitalWrite (light2, laag);
digitalWrite (light3, laag);
digitalWrite (light4, laag);
digitalWrite (light5, laag);
digitalWrite (light6, laag);
digitalWrite (light7, laag);
digitalWrite (light8, laag);
delay(q);
digitalWrite (light1, hoge);
digitalWrite (light2, hoge);
digitalWrite (light3, hoge);
digitalWrite (light4, hoge);
digitalWrite (light5, hoge);
digitalWrite (light6, hoge);
digitalWrite (light7, hoge);
digitalWrite (light8, hoge);
18315
digitalWrite (light1, laag);
digitalWrite (light8, laag);
delay(e);
digitalWrite (light1, hoge);
digitalWrite (light8, hoge);
digitalWrite (light2, laag);
digitalWrite (light7, laag);
delay(de);
digitalWrite (light2, hoge);
digitalWrite (light7, hoge);
digitalWrite (light3, laag);
digitalWrite (light6, laag);
delay;
digitalWrite (light3, hoge);
digitalWrite (light6, hoge);
digitalWrite (light4, laag);
digitalWrite (light5, laag);
delay(e);
digitalWrite (light4, hoge);
digitalWrite (light5, hoge);
digitalWrite (light3, laag);
digitalWrite (light6, laag);
delay(e);
digitalWrite (light3, hoge);
digitalWrite (light6, hoge);
putstring_nl(""); 19817
digitalWrite (light2, laag);
digitalWrite (light7, laag);
delay(300);//delay(q);
digitalWrite (light2, hoge);
digitalWrite (light7, hoge);
nu = millis();
tijd = nu - beginnen;
Serial.println(time); 20117
digitalWrite (light1, laag);
digitalWrite (light8, laag);
delay(300);//delay(q);
digitalWrite (light1, hoge);
digitalWrite (light8, hoge);
putstring_nl ("laatst bit");
21018
digitalWrite (light1, laag);
digitalWrite (light2, laag);
digitalWrite (light3, laag);
digitalWrite (light4, laag);
digitalWrite (light5, laag);
digitalWrite (light6, laag);
digitalWrite (light7, laag);
digitalWrite (light8, laag);
delay(h);
digitalWrite (light1, hoge);
digitalWrite (light2, hoge);
digitalWrite (light3, hoge);
digitalWrite (light4, hoge);
digitalWrite (light5, hoge);
digitalWrite (light6, hoge);
digitalWrite (light7, hoge);
digitalWrite (light8, hoge);
delay(000);
putstring_nl ("einde van het lied");
einde = millis();
tijd = einde - start;
Serial.println(time);
Serial.println(start);
Serial.println(End);
}