Arduino och VCO melody maker (3 / 4 steg)
Steg 3: Ändra anteckningar och spela
Uppdatera anteckningar [] matrisen med PWM värden förbundet med din VCO krets.klistra in koden nedan:
/*
Denna skiss styr en VCO så att det kommer att spela Maria hade en liten lamm,
Anslut den mellersta pin (torkar) av en potentiometer till analoga stift 0)
Anslut det digitala stiftet 3 (PWM) till ett lågpassfilter.
Anslut lågpassfilter utgången till stift 5 på 7555
Se instructables sida för mer detaljer/scheman
2012 NYU musik Teknikprogrammet
.LCC
*/
Delcarations
int myOutPin = 3;
int myOutValue = 0;
int mysteps = 0;
Använd melody maker tuning skiss för att bestämma dessa värden
int noterar [] = {0,255,227,216,211,203}.
dessa är klasserna pitch i ordning av melodin, nollor är vilar
int PitchClass [] = {3,2,1,2,3,3,3,0,2,2,2,0,3,5,5,0,3,2,1,2,3,3,3,3,2,2,3,2,1,0,0,0,0}.
Håll koll på hur lång PitchClass, sätts värdet här:
int LengthOfPitchClass = 32.
denna kod körs en gång
void setup() {
Serial.BEGIN(9600);
pinMode (myOutPin, produktionen);
}
här koden upprepas tills enheten är ansluten.
void loop() {
Increment varje passera genom öglan.
mysteps ++;
återställa slingan när det når antalet steg i matrisen PitchClass]
IF(mysteps > LengthOfPitchClass) {
mysteps = 0;}
Detta for-loop sätter en mycket kort vila mellan anteckningar att hjälpa separata händelser.
kommentera ut koden mellan här och //end för att ta bort dessa Obs och använda en rad kod nedan
för (int jag = 0; jag < 5; i ++) {
IF(i < 3) {
Skicka PWM spänning till 7555 stift 5 att göra anteckningar
analogWrite(myOutPin,notes[PitchClass[mysteps]]);
} //end om
annat {
noll bör göra en vila
analogWrite (myOutPin, 0);
} //end annat
denna fördröjningstid Anger längden på r
Delay(25);
} //end för
använda denna kodrad i stället för ovanstående för loop för legato anteckningar
analogWrite(myOutPin,notes[PitchClass[mysteps]]);
fördröja varje pass genom öglan, är detta tempo kontroll
Delay(analogRead(0));
skriva ut för PWM till seriell bildskärmen för felsökning.
Serial.println(Notes[PitchClass[mysteps]]);
} //end huvudloop