Étape 3: Modifier notes et jouer
Mise à jour le tableau de notes [] avec les valeurs PWM associés à votre circuit VCO.Copiez/collez le code ci-dessous :
/*
Cette esquisse contrôle un VCO tel qu’il va jouer Mary Had a Little Lamb,
Branchez la fiche centrale (essuie-glace) d’un potentiomètre sur broche analogique 0)
Connecter la broche numérique 3 (PWM) à un filtre passe-bas.
Raccorder la sortie du filtre passe-bas à la broche 5 sur la 7555
Voir page instructables pour plus de détails/schematics
Programme de technologie musique 2012 NYU
.LCC
*/
DELCARATIONS
int myOutPin = 3 ;
int myOutValue = 0 ;
int mysteps = 0 ;
Le melody maker le tuning esquisse permet de déterminer ces valeurs
note d’int [] = {0,255,227,216,211,203} ;
Ce sont les classes de hauteur dans l’ordre de la mélodie, les zéros sont restes
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} ;
garder trace de combien de temps PitchClass est, mettez cette valeur ici :
int LengthOfPitchClass = 32 ;
Ce code s’exécute une fois
void setup() {}
Serial.Begin(9600) ;
pinMode (myOutPin, sortie) ;
}
Ce code se répète jusqu'à ce que l’appareil est débranché.
void loop() {}
incrémenter à chaque passage dans la boucle.
mysteps ++ ;
réinitialiser la boucle lorsqu’il atteint le nombre d’étapes dans le tableau [] PitchClass
if(mysteps > LengthOfPitchClass) {}
mysteps = 0;}
Cette boucle for met un repos très court entre les notes pour aider séparé les événements.
commentez le code entre ici et //end pour supprimer ces Remarque et utiliser une seule ligne de code ci-dessous
pour (int i = 0; i < 5; i ++) {}
if(i < 3) {}
Envoyer des tensions PWM à 7555 broche 5 de prendre des notes
analogWrite(myOutPin,notes[PitchClass[mysteps]]) ;
} //end si
else {}
zéro devrait prendre un repos
analogWrite (myOutPin, 0) ;
} else //end
ce délai définit la longueur de la r
Delay(25) ;
} //end pour
utiliser cette ligne de code à la place de ce qui précède pour la boucle pour notes legato
analogWrite(myOutPin,notes[PitchClass[mysteps]]) ;
retarder chaque passage dans la boucle, c’est le contrôle du tempo
Delay(analogRead(0)) ;
imprimer la sortie de la PWM à la série monitor pour le débogage.
Serial.println(Notes[PitchClass[mysteps]]) ;
} //end boucle principale