Dit is een zeer eenvoudig project en dit is ook mijn eerste Instructables...
Beschrijving van het project:
Een klankkast die speelt een bestand van mijn stem en voorziet in de viewer om te lager de toonhoogte van mijn stem als het bestand wordt afgespeeld.
Wat gemotiveerd het maken van het stuk:
Een groeiende interesse in de educatieve platformen dergelijke Instructables en Maker gemeenschappen te delen van de middelen en vaardigheden - bevordering van nieuwsgierigheid. Ik ben geïnteresseerd in de wijze waarop technologie is gebruikt, gedeeld, fictieve en toegepast. Ik koos om te richten op akoestische fictie als een startpunt voor een gesprek op het Bureau: Ik plaatste een diagram boven de "speler" die uitgestippeld in een betrekkelijk nauwkeurige wijze de fysiologische effecten, de mythen en de toepassingen die het gevolg zijn van geluid (worp en loudness) afhankelijk van de verlaging in Hz en loudness in dB; met alles van frequentie zone overeenstemt met het spook waarnemingen, de Brown opmerking, Vladimir Gavreau van sonic wapen en akoestische testen, het geluid van een baby huilen, granaten, een motorfiets, de menselijke stem, enz.
Onderdelen lijst:
1. waveshield van adafruit: http://www.adafruit.com/products/94
2. de arduino uno
3. perf bestuur
4. LED
5. drukknop
6. 10 K ohm weerstand (bruin zwart oranje goud)
7. elke kleine speaker / / gebruikte ik een tech & go oplaadbare speaker: http://www.drugstore.com/tech-and-go-rechargable-portable-speaker-blue/qxp460069
8. vak project
9. vak voor spreker
10. Sugru http://sugru.com
11. audio schuim / / schuim
12. soldeerbout
Eerste stap:
Soldeer Golf schild en formatteer de SD-kaart dienovereenkomstig. Groot tutorials hier geboden:
http://www.robotshop.com/content/PDF/adafruit-Wave-Shield-User-Guide.PDF
Opmerking dat de bibliotheek in deze tutorial gebruikt is nu achterhaald. Verwijzen naar gitHub te downloaden van de nieuwe bibliotheek van WaveHC http://code.google.com/p/sdfatlib/downloads/list
Tweede stap:
Circuit:
Omdat ik mijn kleine speler zo intuïtief mogelijk te maken wilde, heb ik besloten een 'play'-knop die zou alleen het afspelen van het bestand toe te voegen (niet onderbreken), een licht dat inschakelen zou alleen wanneer het bestand wordt afgespeeld en een potentiometer te vertragen de bemonsteringsfrequentie van het bestand terwijl het wordt afgespeeld.
Code:
/*................... Adafruit SampleRateMod.pde voorbeeld gewijzigd voor het gebruik van WaveHC.
Bestand speelt wanneer de knop wordt ingedrukt. Samplefrequentie met pot op analoge 0 vertraagt.
Veel dank aan de WaveHC Library, Adafruit, David Casey, Tom Jennings!!!
Project: Niveau door DB
laatst bewerkt op 30 April 2013... * /
#include
#include
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 informatie voor de hoofdmap van volume
FatReader bestand; Dit object vertegenwoordigt het WAV-bestand
WaveHC Golf; Dit is de enige Golf (audio) object, omdat we zullen slechts één filter tegelijk spelen
/*
* Het definiëren van macro om foutberichten in het flash-geheugen
*/
#define error(msg) error_P(PSTR(msg))
int buttonValue;
Const int ledPin = 15; Dit is echt analoge 1 op arduino
VOID Setup {}
pinMode (ledPin, OUTPUT);
Serial.begin(9600);
Serial.println ("Wave test!");
Probeer card.init(true) als er fouten optreden op V1.0 Wave Shield
Als (! card.init()) {}
fout ("Card init. mislukt!");
}
inschakelen optimaliseren lees - sommige kaarten kunnen timeout
card.partialBlockRead(true);
Als (! vol.init(card)) {}
fout ("geen partitie!");
}
Als (! root.openRoot(vol)) {}
fout kon niet ("open root");
}
putstring_nl ("bestanden gevonden:");
root.ls();
}
voorwaarts declarition
VOID playcomplete (FatReader & bestand);
void loop {}
uint8_t i, r;
char c, naam [15];
dir_t dir;
buttonValue = digitalRead(7);
root.Rewind();
Blader door de bestanden in de directory
terwijl (root.readDir(dir) > 0) {}
alleen spelen. WAV-bestanden
Als (! strncmp_P ((char *) & dir.name[8]. PSTR("wav"))) blijven;
Als (! file.open (vol, dir)) {}
putstring ("kan niet openen");
printEntryName(dir);
Serial.println();
blijven;
}
putstring ("\n\rPlaying");
printEntryName(dir);
Serial.println();
Als (buttonValue == HIGH) {}
playcomplete(File);
}
digitalWrite (ledPin, laag); moet zich buiten de f om te schakelen led uit
}
}
/////////////////////////////////// HELPERS
/*
* afdrukken foutbericht en stoppen
*/
VOID error_P (const char * str) {}
PgmPrint ("fout:");
SerialPrint_P(str);
sdErrorCheck();
while(1);
}
/*
* afdrukken foutbericht en stoppen als SD i/o-fout, zeer geschikt voor het opsporen van fouten!
*/
ongeldig sdErrorCheck(void) {}
Als (! card.errorCode()) keren;
PgmPrint ("\r\nSD I/O fout:");
Serial.Print(Card.ErrorCode(), HEX);
PgmPrint (",");
Serial.println(Card.errorData(), HEX);
while(1);
}
int16_t lastpotval = 0;
#define HYSTERESIS 3
/*
* bestand met Monster tariefwijzigingen afspelen
*/
VOID playcomplete (FatReader & bestand) {}
int16_t potval;
uint32_t newsamplerate;
Als (! wave.create(file)) {}
putstring_nl ("niet een geldig WAV");
terugkeer;
}
Wave.Play();
Als (wave.isplaying) {}
digitalWrite (ledPin, hoge);
}
terwijl (wave.isplaying) {}
potval = analogRead(0);
Als (((potval-lastpotval) > HYSTERESIS) || ((lastpotval-potval) > HYSTERESIS)) {
putstring ("pot =");
Serial.println (potval, DEC);
putstring ("tickspersam =");
Serial.Print (wave.dwSamplesPerSec, DEC);
putstring ("->");
newsamplerate = wave.dwSamplesPerSec;
newsamplerate * = potval;
newsamplerate / = 512; We willen 'split' tussen versneld en vertraagd.
Als (newsamplerate > 24000) {}
newsamplerate = 24000;
}
Als (newsamplerate < 1000) {}
newsamplerate = 1000;
}
wave.setSampleRate(newsamplerate);
Serial.println (newsamplerate, DEC);
lastpotval = potval;
}
delay(10);
}
sdErrorCheck();
File.Close();
}
Derde deel:
Pas het lef om het ontwerp van uw behuizing. Boorgaten dienovereenkomstig. Want ik ben met behulp van een kleine luidspreker, kan ik het hele ding off van een 9V-batterij die het gewoon makkelijker maakt te installeren als energiebron een consistente kwestie is aandrijven.
Hier is een link naar de documentatie van de werken:
https://Vimeo.com/66703542