Stap 3: Notities wijzigen en spelen
Update de notities [] array met de waarden van de PWM gekoppeld aan uw VCO-circuit.Kopieer/plak onderstaande code:
/*
Deze sketch regelt een VCO dusdanig dat het Mary Had een beetje lam spelen zal,
De middelste pin (wisser) van een potentiometer verbinden met analoge pin 0)
De digitale pen 3 (PWM) verbinden met een low-pass filter.
Sluit de uitgang van het low-pass filter tot en met pin 5 op de 7555
Zie instructables pagina voor meer details/schema 's
Programma van de technologie van de muziek van 2012 NYU
.LCC
*/
Delcarations
int myOutPin = 3;
int myOutValue = 0;
int mysteps = 0;
De maker van de melodie tuning schets gebruiken om te bepalen deze waarden
int merkt [] = {0,255,227,216,211,203};
Dit zijn de toonhoogte klassen in de volgorde van de melodie, nullen zijn rust
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};
bijhouden hoe lang PitchClass is, zet dat waarde hier:
int LengthOfPitchClass = 32;
Deze code eenmaal wordt uitgevoerd
VOID Setup {}
Serial.begin(9600);
pinMode (myOutPin, OUTPUT);
}
Deze code wordt herhaald totdat de eenheid losgekoppeld wordt.
void loop {}
_ / / verhogen elke doorheen de lus.
mysteps ++;
Reset de lus wanneer het bereikt het aantal stappen in de matrix PitchClass]
if(mysteps > LengthOfPitchClass) {}
mysteps = 0;}
Dit for-lus brengt een zeer korte rust tussen de noten te helpen aparte de gebeurtenissen.
Opmerking de code tussen hier en //end voor bij deze notitie verwijderen en gebruik één coderegel hieronder
for (int i = 0; ik < 5; i ++) {}
if(i < 3) {}
PWM spanningen verzenden 7555 pin 5 om aantekeningen te maken
analogWrite(myOutPin,notes[PitchClass[mysteps]]);
} //end als
else {}
nul moet een rust
analogWrite (myOutPin, 0);
} //end anders
Deze vertragingstijd wordt ingesteld op de lengte van de r
delay(25);
} //end voor
Deze coderegel in plaats van het bovenstaande voor loop for legato notities gebruiken
analogWrite(myOutPin,notes[PitchClass[mysteps]]);
vertraging van elke keer door de lus, dit is het tempo-besturingselement
delay(analogRead(0));
de afdrukopties van de PWM naar de seriële monitor voor foutopsporing.
Serial.println(Notes[PitchClass[mysteps]]);
} //end hoofdlus