Paso 8: Paso 8: coser el circuito estrellas
Programé las estrellas en mi colcha para tocar las notas a Twinkle Twinkle Little Star para que mi hija puede aprender a jugar con sus amigos. Hay seis notas en la canción, así que solamente seis de las estrellas en la colcha se programan. Los otros son para la decoración.
Usando el hilo conductor:
• Conecte el lado positivo de la alarma de sonido a un número pin en el LilyPad. He utilizado 5.
• Conectar el lado negativo de la alarma sonora a la patilla negativa en el LilyPad.
• Conectar un punto de cada estrella a un número pin de la LilyPad. Usé 6, 9, 10, A2, A3 y A5. Yo simplemente envuelve el hilo alrededor de una esquina de cada estrella para no tener que meter agujeros a través de la lámina. (pic)
• Programa de Arduino.
Aquí está mi código, que fue remezclado de código escrito por Kanjun Qiu: http://hlt.media.mit.edu/?p=1558.
de entrada el número de teclas del piano. ¿Es 5, 6, 7, 8?
const int numberOfKeys = 6;
para que quieres una lista de las claves aquí.
int teclas [numberOfKeys] = {6, 9, 10, A2, A3, A5};
lista de los tonos de las teclas aquí. Recuerde que la lista estará relacionado con el tono
a la clave en el orden que dices (key6 aquí == 1046).
int notas [numberOfKeys] = {392 349.23 293.66, 440, 329.63, 261.63};
int altavoz = 5;
int sensorValue;
void setup() {}
pinMode (altavoz, salida);
int i = 0;
mientras (i < numberOfKeys) //set el piano teclas que entradas
{
pinMode (entrada de teclas [i]);
i = i + 1;
}
Serial.Begin(9600); inicializar la comunicación
}
void loop() {}
int i = 0;
mientras (i < numberOfKeys)
{
checkPianoKey (teclas [i], notes[i]);
i = i + 1;
}
Serial.println();
Delay(100);
}
void checkPianoKey (int clave, int Nota) {}
sensorValue = readCapacitivePin(key); leer valor de sensor táctil
Serial.Print(sensorValue); enviar valor a la computadora
Serial.Print (""); envía a un carácter de espacio en el ordenador
Si se presiona //if (sensorValue > 1) la clave
{
tono (altavoz, nota, 100); juega una nota de 100 ms.
}
}
readCapacitivePin
Entrada: Número de pin Arduino
Salida: Un número de 0 a 17 expresan
Cuánta capacidad está en el pin
Al tocar el pin, o lo que tengas
Unido a él, el número se obtendrá mayor
#include "pins_arduino.h" / / Arduino pre-1.0 necesita esto
uint8_t readCapacitivePin (int pinToMeasure) {}
Variables utilizadas para traducir de Arduino a AVR pin denominación
Puerto de uint8_t volátiles *;
uint8_t volátiles * ddr;
uint8_t volátiles * pin;
Aquí traducimos el número de pin de entrada de
Número de pin del Arduino al puerto de AVR, PIN, DDR,
y que poco de estos registros nos importa.
máscara de bits bytes;
Puerto = portOutputRegister(digitalPinToPort(pinToMeasure));
DDR = portModeRegister(digitalPinToPort(pinToMeasure));
máscara de bits = digitalPinToBitMask(pinToMeasure);
PIN = portInputRegister(digitalPinToPort(pinToMeasure));
Descarga primero el pin poniendo baja y salida
* Puerto & = ~ (máscara);
* ddr | = máscara;
Delay(1);
Hacer el pin una entrada con la tensión interna sobre
* ddr & = ~ (máscara);
* Puerto | = máscara;
Ahora a ver cuánto tiempo el pin Haz tirado para arriba. Este manual desenrollarse del lazo
disminuye el número de ciclos de hardware entre cada lectura del perno,
aumentando la sensibilidad.
ciclos de uint8_t = 17;
Si (* pin & máscara) {ciclos = 0;}
else if (* pin & máscara) {ciclos = 1;}
else if (* pin & máscara) {ciclos = 2;}
else if (* pin & máscara) {ciclos = 3;}
else if (* pin & máscara) {ciclos = 4;}
else if (* pin & máscara) {ciclos = 5;}
else if (* pin & máscara) {ciclos = 6;}
else if (* pin & máscara) {ciclos = 7;}
else if (* pin & máscara) {ciclos = 8;}
else if (* pin & máscara) {ciclos = 9;}
else if (* pin & máscara) {ciclos = 10;}
else if (* pin & máscara) {ciclos = 11;}
else if (* pin & máscara) {ciclos = 12;}
else if (* pin & máscara) {ciclos = 13;}
else if (* pin & máscara) {ciclos = 14;}
else if (* pin & máscara) {ciclos = 15;}
else if (* pin & máscara) {ciclos = 16;}
Descarga el perno otra vez poniendo baja y salida
Es importante dejar los pernos bajos si quiere
ser capaz de tocar más de 1 sensor a la vez-
el sensor quedo tirado alto, cuando te toque
dos sensores, su cuerpo transferirá la carga entre
sensores.
* Puerto & = ~ (máscara);
* ddr | = máscara;
volver a ciclos;
}