Paso 3: Programar el arduino
Copia pega el siguiente código para el arduino IDE, compilar y, a continuación, uplode (si usas el attiny, necesitará cambiar los pasadores que se utilizan en el dibujo)./*
*
* LunaMod para Arduino y Attiny45
* Remix de Rob millas
* Tacoma, WA 08 de agosto de 2011
*
Vi el proyecto original de hacer vol. 26
* por Brian McNamara
* Brian funcionaba en un PicAxe y sólo tienen attiny45s tan...
*
* La sección freqout donde sucede la magia real es desde el código de sintetizador de Paul Badger en el sitio principal de Arduino
*
* Seguí esto bastante sencillo pero con un Arduino esto podría complicarse más si quieres
* Incluso en un attiny45 Si utilizas le agregue un botón al pin led usted puede hacer furtivamente en los efectos más
*
*/
#define frequencyPot 0 //frequency bote atado al pin 15 que es A1
#define tempoPot 1 //tempo bote atado al pin 16 que es A2
#define buttonPin 9 //programming botón atado al pin 17 que es A3
#define ledPin 10 //status conducido atado al pin 18 que es A4
#define speakerPin 11 //speaker o salida pin 19 whish es A5
Si usas un altavoz debe ser al menos un altavoz de 16 ohmios una debe tener un
resistencia, tal vez 200 ohmios 1K ohmios, entre el plomo negativo y tierra.
un potenciómetro sería aún mejor.
int currentStep = 0; Esta es la pista que el tono en la memoria que actualmente estamos jugando
pasos de int [] = {500,500,100,100,100,100,100,100, / / este es nuestro tono almacenamiento areae
100,100,100,100,100,100,100,100, //I utiliza 64 tonos o 8 tonos por tiempo
500,500,100,100,100,100,100,100, //you puede cambiarlos manualmente y si te gusta experimentar
100,100,100,100,100,100,100,100,
500,500,100,100,100,100,100,100,
100,100,100,100,100,100,100,100,
500,500,100,100,100,100,100,100,
100,100,100,100,100,100,100,100};
tempo de int = 0; tempo o velocidad entre los tonos
duración de int = 0; Cuánto juega cada uno de los 64 tonos
frecuencia de int = 0; tono actual
int pitchval = 1;
void setup() //set hasta sus pernos...
{
pinMode (frequencyPot, entrada);
pinMode (tempoPot, entrada);
pinMode (buttonPin, entrada);
digitalWrite (buttonPin, HIGH);
pinMode (ledPin, salida);
pinMode (speakerPin, salida);
}
void loop()
{
para (int i = 0; i < 63; i ++) //64 individual notas
{
currentStep = i; guardar nuestra posición actual en el lazo para más tarde
Si (i == 0 || i == 16 || == 32 || == 48) {//keep pista de ritmo en el led
digitalWrite (ledPin, HIGH);}
Si (i == 7 || == 23 || i == 39 || == 55) {//keep pista de ritmo en el led
digitalWrite (ledPin, LOW);}
Si (digitalRead(buttonPin) == LOW) //is pulsar el botón de programa
{//if así que vamos a escribir un nuevo tono de la ubicación
pasos [currentStep] = (analogRead(frequencyPot)); leer el bote de frecuencia y de fijar el nuevo tono
freqout (pasos [currentStep], duración); definir los parámetros para frequout abajo y el juego
freqout (pasos [currentStep] + 64, duración); jugar otro tono un poco diferente que el original para dar
es un poco más de profundidad. Esto se puede cambiar a tu gusto
freqout (pasos [currentStep] +128, duración); jugar otro tono un poco diferente que el original para dar
es un poco más de profundidad. Esto se puede cambiar a tu gusto
}
Else {//else reproducir el tono
freqout (pasos [currentStep], duración); definir los parámetros para frequout abajo y el juego
freqout (pasos [currentStep] + 64, duración); jugar otro tono un poco diferente que el original para dar
es un poco más de profundidad. Esto se puede cambiar a tu gusto
freqout (pasos [currentStep] +128, duración); jugar otro tono un poco diferente que el original para dar
es un poco más de profundidad. Esto se puede cambiar a tu gusto
}
Tempo = (analogRead(tempoPot)/4); leer el bote de tempo
duración = tempo/8; establecer las duraciones individuales de tono
Delay(tempo); esperar un poco
}
}
void freqout (int freq, int t)
{
int hperiod;
ciclos de tiempo, i;
hperiod = (500000 / ((freq-7) * pitchval));
ciclos = (freq (largo) * t (tiempo)) / 1000;
para (i = 0; i < = ciclos; i ++)
{
digitalWrite (speakerPin, HIGH);
delayMicroseconds(hperiod);
digitalWrite (speakerPin, bajo);
delayMicroseconds (hperiod - 1);
}
}