Arduino Vocal effekter Box (28 / 36 steg)
Steg 28: Halv frekvens uppspelning
Halva frekvensen uppspelning
av Amanda Ghassaei
Juli 2012
/*
* Detta program är fri programvara; Du kan vidaredistribuera det och/eller ändra
* det enligt villkoren i GNU General Public License som offentliggjorts av
* den Free Software Foundation; antingen version 3 av licensen, eller
* (på ditt alternativ) någon senare version.
*
*/
ljud lagring
byte buffer1 [1000];
byte buffer2 [1000];
byte incomingAudio; //storage variabel
int jag = 0; //index variabel
int iscale = 0; //index variabel
int skala = 2;
booleska växla = 0;
booleska rec = 1;
int limit = 1000;
void setup() {
DDRD = 0xFF; //set port d (digital pin s0-7) som utgångar
DDRC = 0x00; //set alla analoga pins som insatsvaror
(CLI); //diable avbrott
Ställ in kontinuerlig provtagning av analoga pin 0
Rensa ADCSRA och ADCSRB register
ADCSRA = 0;
ADCSRB = 0;
ADMUX | = (1 << REFS0); ange referens spänning
ADMUX | = (1 << ADLAR); Vänsterjustera ADC värde - så vi kan läsa högst 8 bitar från ADCH register endast
ADCSRA | = (1 << ADPS2) | (1 << ADPS0); ställa in ADC klockan med 32 prescaler - 16mHz/32 = 500 kHz
ADCSRA | = (1 << ADATE); enabble automatisk utlösare
ADCSRA | = (1 << Ebba Grön); Aktivera avbrott när mätningen är klar
ADCSRA | = (1 << ADEN); Aktivera ADC
ADCSRA | = (1 << ADSC); Starta ADC mätningar
SEI (); //enable avbrott
}
ISR(ADC_vect) {//when nya ADC värdet redo
incomingAudio = ADCH;
om (rec) {
om (växla) {
buffer1 [i] = incomingAudio; //store inkommande
PORTD = buffer2 [iscale]; //send ut DAC
}
annat {
buffer2 [i] = incomingAudio; //store inkommande
PORTD = buffer1 [iscale]; //send ut DAC
}
}
annat {
om (växla) {
PORTD = buffer2 [iscale]; //send ut DAC
}
annat {
PORTD = buffer1 [iscale]; //send ut DAC
}
}
Jag + = 1;
iscale = jag / skala;
om (jag == gräns) {
REC = 0; //stop inspelning
}
om (jag == (gräns * skala)) {
Jag = 0;
iscale = 0;
Toggle ^ = 1;
REC = 1;
}
}
void loop() {
}