Paso 3: Cambiar notas y jugar
Actualización de la matriz [] de notas con los valores PWM asociados a su circuito VCO.copiar/pegar el siguiente código:
/*
Este bosquejo controla un VCO que desempeñará María tenía un corderito,
Conectar la clavija media (limpiaparabrisas) de un potenciómetro en el pin analógico 0)
Conectar la clavija digital 3 (PWM) en un filtro de paso bajo.
Conectar la salida del filtro de paso bajo al pin 5 en el 7555
Consulte la página de instructables para esquemas de detalles más
Programa de tecnología de música de Universidad de Nueva York 2012
.LCC
*/
Delcarations
int myOutPin = 3;
int myOutValue = 0;
int mysteps = 0;
Utilizar el fabricante de la melodía ajuste bosquejo para determinar estos valores
int notas [] = {0,255,227,216,211,203};
Estas son las clases de la echada en el orden de la melodía, los ceros son restos
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};
realiza un seguimiento de cuánto PitchClass, pone que el valor aquí:
int LengthOfPitchClass = 32;
Este código se ejecuta una vez
void setup() {}
Serial.Begin(9600);
pinMode (myOutPin, salida);
}
Este código se repite hasta que la unidad esté desenchufada.
void loop() {}
incremento cada paso a través del lazo.
mysteps ++;
restablecer el lazo cuando se alcanza el número de pasos en la matriz de [] de PitchClass
if(mysteps > LengthOfPitchClass) {}
mysteps = 0;}
este bucle pone un muy breve descanso entre notas a distintos los eventos.
comentar el código entre aquí y //end para extraer estas nota y utilizar una línea de código a continuación
para (int i = 0; i < 5; i ++) {}
if(i < 3) {}
enviar voltaje PWM al 7555 pin 5 para hacer notas
analogWrite(myOutPin,notes[PitchClass[mysteps]]);
} //end si
Else {}
cero debe hacer un descanso
analogWrite (myOutPin, 0);
} //end más
este tiempo de retardo establece la longitud de la r
Delay(25);
} //end para
Utilice esta línea de código en lugar de lo anterior para el lazo de notas legato
analogWrite(myOutPin,notes[PitchClass[mysteps]]);
demora cada paso a través del bucle, esto es el control de tempo
Delay(analogRead(0));
imprimir la salida de PWM en el serial monitor para la depuración.
Serial.println(Notes[PitchClass[mysteps]]);
} //end bucle principal