Singing Pumpkins / Arduino (6 / 9 steg)
Steg 6: Arduino/Wave sköld inrätta och filer
Jag använde denna våg sköld http://www.ladyada.net/make/waveshield/ det kommer som ett kit Följ monteringsanvisningen på länken.Wave sköld kommer att använda stift 1, 2, 3, 4, 5, 10
Våra projekt använder stift 6, 7, 8, 9, A0, A1, A2, A3, A4, A5
Stift 6, 7, 8, 9, A0, A1, A2, A3 kommer att användas för pumpor blinkande lampor, pin A4 används för att kontrollera flimmer lampa uppsättningen och nåla fast A5 används för att styra ett relä som kommer att koppla bort bakgrundsljud och ansluta våg skölden till en uppsättning högtalare. Det är så att alla kommer att fokusera på de viktigaste händelse av Halloween displayen.
Ladda upp ljudfilen till ett sd-kort och ladda upp skissen till arduino.
SKISS
Skapad av Greg Spiridakos 2011 / /
#include < AF_Wave.h >
#include < avr/pgmspace.h >
#include "util.h"
#include "wave.h"
AF_Wave kort;
Fil f;
Wavefile våg; bara en!
#define redled 9
uint16_t samplerate;
void setup() {
Serial.BEGIN(9600); Ställ in följetong bibliotek på 9600 bps
Serial.println ("Wave test!");
pinMode (2, utgång); används av ljud sköld
pinMode (3, OUTPUT); används av ljud sköld
pinMode (4, OUTPUT); används av ljud sköld
pinMode (5, OUTPUT); används av ljud sköld
pinMode (6, OUTPUT); LED ljus
pinMode (7, OUTPUT); LED ljus
pinMode (8, OUTPUT); LED ljus
pinMode (9, OUTPUT); LED ljus
pinMode (A0, OUTPUT); LED ljus
pinMode (A1, utgång); LED ljus
pinMode (A2, OUTPUT); LED ljus
pinMode (A3, OUTPUT); LED ljus
pinMode (A4, OUTPUT); flimmer lampa set
pinMode (A5, OUTPUT); auido byta relä
pinMode (redled, produktionen);
om (! card.init_card()) {
putstring_nl ("kort init. misslyckades!"); hemkomst.
}
om (! card.open_partition()) {
putstring_nl ("ingen partition!"); hemkomst.
}
om (! card.open_filesys()) {
putstring_nl ("kunde inte öppna filesys"); hemkomst.
}
om (! card.open_rootdir()) {
putstring_nl ("kunde inte öppna dir"); hemkomst.
}
putstring_nl ("filer som hittas:");
LS();
}
void ls() {
char namn [13].
int ret;
Card.reset_dir();
putstring_nl ("filer som hittas:");
samtidigt (1) {
ret = card.get_next_name_in_dir(name);
om (! ret) {
Card.reset_dir();
hemkomst.
}
Serial.println(Name);
}
}
uint8_t tracknum = 0;
void loop() {
uint8_t i, r;
char c, namn [15].
Card.reset_dir();
Bläddra igenom filerna i katalogen
för (jag = 0; jag < tracknum + 1; i ++) {
r = card.get_next_name_in_dir(name);
om (! r) {
sprang ut spår! börja om
tracknum = 0;
hemkomst.
}
}
putstring ("\n\rPlaying"); Serial.Print(Name);
återställa katalogen så att vi kan hitta filen
Card.reset_dir();
playcomplete(Name);
tracknum ++;
}
void playcomplete(char *name) {
uint16_t potval;
uint32_t newsamplerate;
playfile(Name);
samplerate = wave.dwSamplesPerSec;
samtidigt (wave.isplaying) {
Du kan göra sånt här!
Delay(500);
}
Card.close_file(f);
}
void playfile(char *name) {
f = card.open_file(name);
om (! f) {
putstring_nl kunde inte ("öppna filen"); hemkomst.
}
om (! wave.create(f)) {
putstring_nl ("inte en giltig WAV"); hemkomst.
}
OK dags att spela!
Wave.Play();
{/ / denna grupp animerar lysdioderna
digitalWrite(A5,HIGH); Detta blir ljud relä till switch bakgrundsmusik till audio sheild dela högtalare
Delay(14500); Detta kommer att fördröja lysdioderna när ljudet har startat i millisekunder
1000 millisekunder = 1 sekund
14,5 sek fördröjning från början
cykel 1
digitalWrite(6,HIGH); //
digitalWrite(7,HIGH); //
digitalWrite(8,HIGH); //
digitalWrite(9,HIGH); alla på
digitalWrite(A0,HIGH); //
digitalWrite(A1,HIGH); //
digitalWrite(A2,HIGH); //
digitalWrite(A3,HIGH); //
Delay(23000); fördröja 23.0 SEK
cykel 2
digitalWrite(6,LOW); //
digitalWrite(7,LOW); //
digitalWrite(A0,LOW); allt bort
digitalWrite(A1,LOW); //
digitalWrite(A2,LOW); //
digitalWrite(A3,LOW); //
Delay(5100); fördröja 5.1 SEK
cykel 3
digitalWrite(8,LOW); 8 av
Delay(5700); fördröja 5,7 SEK
Cycle 4
digitalWrite (9, låg). 9 av
digitalWrite (7, hög). 7 på
Delay(5000); fördröja 5 sek totalt dröjsmål från början
cykla 5
digitalWrite(6,HIGH); //
digitalWrite(7,HIGH); //
digitalWrite(8,HIGH); alla på
digitalWrite(9,HIGH); //
digitalWrite(A0,HIGH); //
digitalWrite(A1,HIGH); //
digitalWrite(A2,HIGH); //
digitalWrite(A3,HIGH); //
Delay(6300); fördröja 6,3 SEK
cykeln 6
digitalWrite(6,LOW); //
digitalWrite(7,LOW); //
digitalWrite(8,LOW); //
digitalWrite(9,LOW); allt bort
digitalWrite(A0,LOW); //
digitalWrite(A1,LOW); //
digitalWrite(A2,LOW); //
digitalWrite(A3,LOW); //
Delay(1100); fördröja 1.1 SEK
cykel 7
digitalWrite(8,HIGH); 8 på
digitalWrite(9,HIGH); 9 på
Delay(6000); fördröja 6 sek
Cycle 8
digitalWrite(8,LOW); 8 av
digitalWrite(9,LOW); 9 av
digitalWrite(A0,HIGH); A0 på
Delay(5000); fördröja 5 sek
cykla 9
digitalWrite(A0,LOW); A0 off
digitalWrite(7,HIGH); 7 på
Delay(6000); fördröja 6 sek
Cycle 10
digitalWrite(6,HIGH); //
digitalWrite(7,HIGH); //
digitalWrite(8,HIGH); //
digitalWrite(9,HIGH); alla på
digitalWrite(A0,HIGH); //
digitalWrite(A1,HIGH); //
digitalWrite(A2,HIGH); //
digitalWrite(A3,HIGH); //
Delay(1000); 1 SEK fördröjning
Cycle 11
digitalWrite(6,LOW); //
digitalWrite(7,LOW); //
digitalWrite(8,LOW); alla utom A0 off
digitalWrite(9,LOW); //
digitalWrite(A0,HIGH); //
digitalWrite(A1,LOW); //
digitalWrite(A2,LOW); //
digitalWrite(A3,LOW); //
Delay(100); 1 SEK fördröjning
cykel 12
digitalWrite(A0,LOW); A0 off
digitalWrite(A1,HIGH); A1 på
Delay(1000); fördröja 1 SEK
cykeln 13
digitalWrite(A1,LOW); A1 utanför
digitalWrite(7,HIGH); 7 på
Delay(1000); fördröja 1 SEK
cykeln 14
digitalWrite(A1,HIGH); A1 på
Delay(1000); fördröja 1 SEK
cykla 15
digitalWrite(A1,LOW); A1 utanför
digitalWrite(8,HIGH); 8 på
digitalWrite(9,HIGH); 9 på
Delay(8000); fördröja 8 SEK
cykel 16
digitalWrite(7,HIGH); 7 på
Delay(3000); fördröja 3 SEK
cykel 17
digitalWrite(6,HIGH); //
digitalWrite(7,LOW); //
digitalWrite(8,HIGH); alla utom 7 på
digitalWrite(9,HIGH); //
digitalWrite(A0,HIGH); //
digitalWrite(A1,HIGH); //
digitalWrite(A2,HIGH); //
digitalWrite(A3,HIGH); //
Delay(2000); fördröja 2 sek
cykel 18
digitalWrite(6,LOW); //
digitalWrite(7,LOW); //
digitalWrite(8,LOW); alla utom 9 off
digitalWrite(9,HIGH); //
digitalWrite(A0,LOW); //
digitalWrite(A1,LOW); //
digitalWrite(A2,LOW); //
digitalWrite(A3,LOW); //
Delay(2000); fördröja 2 sek
cykeln 19
digitalWrite(6,LOW); //
digitalWrite(7,LOW); //
digitalWrite(8,LOW); alla utom A2 off
digitalWrite(9,LOW); //
digitalWrite(A0,LOW); //
digitalWrite(A1,LOW); //
digitalWrite(A2,HIGH); //
digitalWrite(A3,LOW); //
Delay(1000); dealy 1 SEK
cykel 20
digitalWrite(A2,LOW); A2 off
digitalWrite(A3,HIGH); A3 på
Delay(3000); fördröja 3 SEK
cykel 21
digitalWrite(A3,LOW); A3 off
digitalWrite(A0,HIGH); A0 på
Delay(2500); fördröja 2,5 sek
cykeln 22
digitalWrite(A0,LOW); A0 off
digitalWrite(A3,HIGH); A3 på
Delay(3000); fördröja 3 SEK
cykeln 23
digitalWrite(A3,LOW); A3 off
digitalWrite(7,HIGH); 7 på
Delay(5500); fördröja 5,5 sek
cykel 24
digitalWrite(6,HIGH); //
digitalWrite(7,HIGH); //
digitalWrite(8,HIGH); alla på
digitalWrite(9,HIGH); //
digitalWrite(A0,HIGH); //
digitalWrite(A1,HIGH); //
digitalWrite(A2,HIGH); //
digitalWrite(A3,HIGH); //
Delay(6000); fördröja 6 sek
cykel 25
digitalWrite(8,HIGH); 8 på
Delay(1000); fördröja 1 SEK
cykel 26
digitalWrite(8,LOW); 8 av
digitalWrite(9,HIGH); 9 på
Delay(7500); fördröja 7.5 sek
cykeln 27
digitalWrite(6,HIGH); 6 på
Delay(1000); fördröja 1 SEK
cykel 28
digitalWrite(7,LOW); 7 på
digitalWrite(A1,HIGH); A1 på
Delay(2000); fördröja 2 sek
cykeln 29
digitalWrite(7,HIGH); 7 på
Delay(3500); fördröja 3.5 sek
cykel 30
digitalWrite(A1,LOW); A1 utanför
digitalWrite(7,LOW); 7 av
digitalWrite(A0,HIGH); A0 på
Delay(3000); fördröja 3 SEK
cykeln 31
digitalWrite(A1,HIGH); A1 på
Delay(3000); fördröja 3 SEK
cykeln 32
digitalWrite(A0,LOW); A0 off
Delay(2500); fördröja 2,5 sek
cykeln 33
digitalWrite(8,HIGH); 8 på
digitalWrite(9,HIGH); 9 på
Delay(3500); fördröja 3.5 sek
cykeln 34
digitalWrite(7,HIGH); 7 på
Delay(1000); fördröja 1 SEK
cykeln 35
digitalWrite(A0,HIGH); A0 på
digitalWrite(A1,HIGH); A1 på
digitalWrite(A2,HIGH); A2 på
digitalWrite(A3,HIGH); A3 på
Delay(17500); fördröja 17,5 sek
cykeln 36
digitalWrite(8,HIGH); 8 på
digitalWrite(9,HIGH); 9 på
Delay(6500); fördröja 6,5 sek
cykeln 37
digitalWrite(6,HIGH); //
digitalWrite(7,HIGH); //
digitalWrite(8,HIGH); //
digitalWrite(9,HIGH); //
digitalWrite(A0,HIGH); alla på
digitalWrite(A1,HIGH); //
digitalWrite(A2,HIGH); //
digitalWrite(A3,HIGH); //
Delay(10000); fördröja 10 SEK
cykeln 38
digitalWrite(6,LOW); 6 av
digitalWrite(7,LOW); 7 av
digitalWrite(8,LOW); 8 av
digitalWrite(9,LOW); 9 av
digitalWrite(A0,LOW); A0 off
digitalWrite(A1,LOW); A1 utanför
digitalWrite(A2,LOW); A2 off
digitalWrite(A3,LOW); A3 off
Delay(100); 1 SEK fördröjning
cykeln 39
börjar random blinka
digitalWrite(6,HIGH);
digitalWrite(A0,HIGH);
Delay(150);
digitalWrite(6,LOW);
digitalWrite(9,HIGH);
Delay(150);
digitalWrite(9,LOW);
digitalWrite(A0,LOW);
digitalWrite(7,HIGH);
Delay(150);
digitalWrite(A1,HIGH);
digitalWrite(7,LOW);
Delay(150);
digitalWrite(A1,LOW);
digitalWrite(8,HIGH);
Delay(150);
digitalWrite(8,LOW);
digitalWrite(A2,HIGH);
Delay(150);
digitalWrite(A3,HIGH);
Delay(150);
digitalWrite(A3,LOW);
digitalWrite(A2,LOW);
Delay(150);
digitalWrite(6,HIGH);
digitalWrite(A0,HIGH);
Delay(150);
digitalWrite(6,LOW);
digitalWrite(9,HIGH);
Delay(150);
digitalWrite(9,LOW);
digitalWrite(A0,LOW);
digitalWrite(7,HIGH);
Delay(150);
digitalWrite(A1,HIGH);
digitalWrite(7,LOW);
Delay(150);
digitalWrite(A1,LOW);
digitalWrite(8,HIGH);
Delay(150);
digitalWrite(8,LOW);
digitalWrite(A2,HIGH);
Delay(150);
digitalWrite(A3,HIGH);
Delay(150);
digitalWrite(A3,LOW);
digitalWrite(A2,LOW);
Delay(150);
digitalWrite(6,HIGH);
digitalWrite(A0,HIGH);
Delay(150);
digitalWrite(6,LOW);
digitalWrite(9,HIGH);
Delay(150);
digitalWrite(9,LOW);
digitalWrite(A0,LOW);
digitalWrite(7,HIGH);
Delay(150);
digitalWrite(A1,HIGH);
digitalWrite(7,LOW);
Delay(150);
digitalWrite(A1,LOW);
digitalWrite(8,HIGH);
Delay(150);
digitalWrite(8,LOW);
digitalWrite(A2,HIGH);
Delay(150);
digitalWrite(A3,HIGH);
Delay(150);
digitalWrite(A3,LOW);
digitalWrite(A2,LOW);
Delay(150);
digitalWrite(6,HIGH);
digitalWrite(A0,HIGH);
Delay(150);
digitalWrite(6,LOW);
digitalWrite(8,HIGH);
Delay(150);
digitalWrite(A0,LOW);
digitalWrite(A2,HIGH);
Delay(150);
digitalWrite(8,LOW);
digitalWrite(A2,LOW);
Delay(150);
digitalWrite(7,HIGH);
digitalWrite(A3,HIGH);
Delay(150);
digitalWrite(7,LOW);
digitalWrite(9,HIGH);
Delay(150);
digitalWrite(A3,LOW);
digitalWrite(9,LOW);
Delay(150);
digitalWrite(6,HIGH);
digitalWrite(A1,HIGH);
Delay(150);
digitalWrite(6,LOW);
digitalWrite(8,HIGH);
Delay(150);
digitalWrite(A1,LOW);
digitalWrite(8,LOW);
Delay(8000); fördröjning mellan sång och flimmer lökar försening i ms
stå vid läge som kommer att slå på flimmer lökar
digitalWrite (A4, hög); flimmer lökar på
Delay(200); fördröja tills ljud kopplas om från audio shield till bakgrundsmusik
digitalWrite (A5, låg); kopplar från reläet från audio sköld till bakgrundsmusik
Delay(600000); fördröja tills flimmer lökar stänger av och startar sång och ljus show (600000ms = 10 min fördröjning)
1000ms = 1 SEK, 600000ms = 10 min
digitalWrite (A4, låg); Vänd av flimmer lökar
}}