Paso 6: código de
Excepto estos 3 códigos para escuchar, ver y cantar como arduino (.ino) archivos por separado:
He incluido los archivos IDE pero tienen nombres diferentes.
Escuchar:
int soundSensorPin = A0;
int soundReading = 0; int soundThreshold = 500; intensidad de int [3] = {0,0,0}; int LEDPins [3] = {2,4,5}; int numberOfPins = 3; int currentPin = 0; int fadeCounter = 0; int fadeDelay = 50; Boolean interruptor = true;
void setup() {pinMode(soundSensorPin, INPUT); para (int i = 0; i
void loop() {soundReading=analogRead(soundSensorPin); if(soundReading>soundThreshold) {if(switcher) {aboveThreshold(currentPin); switcher = true;}} else {if(switcher) {belowThreshold(); switcher = true;}}}
void aboveThreshold (int cPin) {switcher = false; if (intensidad [cPin] < 10) {intensidad [cPin] = 255; delay(50); currentPin = currentPin + 1;}
if(currentPin==numberOfPins) {currentPin = 0;}}
void belowThreshold() {switcher = false; fadeCounter ++; if(fadeCounter==fadeDelay) {fadeCounter = 0; para (int i = 0; i
Fuente: https://gist.github.com/michelleboisson/3830481
Seguida de ver:
/*
* Control Servo a través de Sensor de luz (e.g. fotoresistor). ** Copyright (C) 2010 Efstathios Chatzikyriakidis (contacto ** este programa es software libre: usted puede redistribuirlo y/o modificar * bajo los términos de la GNU General Public License publicada por * la Free Software Foundation, ya sea la versión 3 de la licencia, o * (a su opción) cualquier versión posterior. ** este programa es distribuido con la esperanza de que sea útil, * pero sin ninguna garantía, ni siquiera la garantía implícita de * comerciabilidad o aptitud para un propósito PARTICULAR. Ver la * GNU General Public License para más detalles. ** Usted debe han recibido una copia de la Licencia Pública General de GNU * junto con este programa. Si no, a ver. * / / / incluye biblioteca de servo. #include servo myServo; crear el objeto servo para controlar un servo. const int servoPin = 7; el número de pin (PWM) para el servo. const int sensorPin = 3; el número de pin para el sensor de entrada. valores actuales y anteriores para el dispositivo de servo. int valServo = 0; oldValue int = 0; los siguientes valores pueden cambiar según el sensor de luz. realizar una calibración con luz oscura y pura pura al principio. const int lightMin = 170; Establezca el valor apropiado del sensor de luz. const int lightMax = 512; Establezca el valor apropiado del sensor de luz. const int LIGHT_SENSE = 5; valor de la sensibilidad de nivel de diferencia. const delayTime largo = 15; tiempo de retardo de movimiento servo de millis. entrada de punto de inicio (se ejecuta una vez). void setup () {/ / set sensor como entrada. pinMode (sensorPin, entrada); / / colocar el servo en el PIN myServo.attach(servoPin);} / / lazo el bosquejo principal. void loop () {/ / obtener el valor del sensor de luz. int valServo = analogRead(sensorPin); / / mapa el valor min, max de la servo. valServo = mapa (valServo, lightMin, lightMax, 0, 179); / Asegúrese que el valor está entre el min, máximo de la valServo servo. = restringir (valServo, 0, 179); / / mover servo sólo si la luz cambia bastante. Si (abs (valServo - oldValue) > LIGHT_SENSE) {/ / mover el servo. myServo.write(valServo); / / mantener el último valor. oldValue = valServo;} / / esperar algún tiempo el servo a mover. delay(delayTime);}
Fuente:
Seguido por cantar:
/*
Arduino Mario Bros Tunes con zumbador piezoeléctrico y PWM conectan el lado positivo de la alarma al pin 3, entonces el lado negativo a un resistor del ohmio 1 k. Conecte el otro extremo de la resistencia de ohmios 1 k al pin ground(GND) en Arduino. por: Dipto Pratyaksa última actualización: 31/03/13 * / / *** * constantes públicas *** / #define NOTE_B0 31 #define NOTE_C1 33 #define NOTE_CS1 35 #define NOTE_D1 37 #define NOTE_DS1 39 #define NOTE_E1 41 #define NOTE_F1 44 #define NOTE_FS1 46 #define NOTE_G1 49 #define NOTE_GS1 52 #define NOTE_A1 55 #define NOTE_AS1 58 #define NOTE_B1 62 #define NOTE_C2 65 #define NOTE_CS2 69 #define NOTE_D2 73 #define NOTE_DS2 78 #define NOTE_ E2 #define 82 NOTE_F2 #define 87 NOTE_FS2 93 #define NOTE_G2 98 #define NOTE_GS2 104 #define NOTE_A2 #define 110 NOTE_AS2 117 #define NOTE_B2 #define 123 NOTE_C3 #define 131 NOTE_CS3 #define 139 NOTE_D3 #define 147 NOTE_DS3 #define 156 NOTE_E3 #define 165 NOTE_F3 #define 175 NOTE_FS3 #define 185 NOTE_G3 #define 196 NOTE_GS3 #define 208 NOTE_A3 #define 220 NOTE_AS3 233 #define NOTE_B3 #define 247 NOTE_ C4 #define 262 NOTE_CS4 #define 277 NOTE_D4 #define 294 NOTE_DS4 #define 311 NOTE_E4 #define 330 NOTE_F4 #define 349 NOTE_FS4 #define 370 NOTE_G4 #define 392 NOTE_GS4 #define 415 NOTE_A4 #define 440 NOTE_AS4 #define 466 NOTE_B4 #define 494 NOTE_C5 #define 523 NOTE_CS5 #define 554 NOTE_D5 587 #define NOTE_DS5 622 #define NOTE_E5 659 #define NOTE_F5 #define 698 NOTE_FS5 #define 740 NOTE_G5 #define 784 NOTE_ GS5 831 #define NOTE_A5 880 #define NOTE_AS5 932 #define NOTE_B5 988 #define NOTE_C6 1047 #define NOTE_CS6 1109 #define NOTE_D6 1175 #define NOTE_DS6 1245 #define NOTE_E6 1319 #define NOTE_F6 1397 #define NOTE_FS6 1480 #define NOTE_G6 1568 #define NOTE_GS6 1661 #define NOTE_A6 1760 #define NOTE_AS6 1865 #define NOTE_B6 1976 #define NOTE_C7 2093 #define NOTE_CS7 2217 #define NOTE_D7 2349 #define NOTE_DS7 2489 #define NOTE_ E7 2637 #define NOTE_F7 2794 #define NOTE_FS7 2960 #define NOTE_G7 3136 #define NOTE_GS7 3322 #define NOTE_A7 3520 #define NOTE_AS7 3729 #define NOTE_B7 3951 #define NOTE_C8 4186 #define NOTE_CS8 4435 #define NOTE_D8 4699 #define NOTE_DS8 4978 #define melodyPin 3 //Mario tema principal melodía int melodía [] = {NOTE_E7, NOTE_E7, 0, NOTE_E7 , 0, NOTE_C7, NOTE_E7, 0, NOTE_G7, 0, 0, 0, NOTE_G6, 0, 0, 0, NOTE_C7, 0, 0, NOTE_G6, 0, 0, NOTE_E6, 0, 0, NOTE_A6, 0, NOTE_B6, 0, NOTE_AS6, NOTE_A6, 0, NOTE_G6, NOTE_E7, NOTE_G7, NOTE_A7, 0, NOTE_F7, NOTE_G7, 0, NOTE_E7, 0, NOTE_C7, NOTE_D7, NOTE_B6 0, 0, NOTE_C7, 0, 0, NOTE_G6, 0, 0, NOTE_E6, 0, 0, NOTE_A6, 0, NOTE_B6, 0, NOTE_AS6, NOTE_A6, 0, NOTE_G6, NOTE_E7, NOTE_G7, NOTE_A7, 0, NOTE_F7, NOTE_G7, 0, NOTE_E7, 0, NOTE_C7, NOTE_D7, NOTE_B6, 0, 0}; Mario principal ellos tempo int tempo [] = {12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 9, 9, 9, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12 12, 12, 12, 12, 12, 12, 12, 12, 9, 9, 9, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12}; Mundo terrenal melodía int underworld_melody [] = {NOTE_C4, NOTE_C5, NOTE_A3, NOTE_A4, NOTE_AS3, NOTE_AS4, 0, 0, NOTE_C4, NOTE_C5, NOTE_A3, NOTE_A4, NOTE_AS3, NOTE_AS4, 0, 0, NOTE_F3, NOTE_F4, NOTE_D3, NOTE_D4, NOTE_DS3, NOTE_DS4, 0, 0, NOTE_F3, NOTE_F4, NOTE_D3, NOTE_D4, NOTE_DS3, NOTE_DS4, 0, 0 NOTE_DS4, NOTE_CS4, NOTE_D4, NOTE_CS4, NOTE_DS4, NOTE_DS4, NOTE_GS3, NOTE_G3, NOTE_CS4, NOTE_C4, NOTE_FS4, NOTE_F4, NOTE_E3, NOTE_AS4, NOTE_A4, NOTE_GS4, NOTE_DS4, NOTE_B3, NOTE_AS3, NOTE_A3, NOTE_GS3, 0, 0, 0}; Underwolrd tempo int underworld_tempo [] = {12, 12, 12, 12, 12, 12, 6, 3, 12, 12, 12, 12, 12, 12, 6, 3, 12, 12, 12, 12, 12, 12, 6, 3, 12, 12, 12, 12, 12, 12, 6, 6, 18, 18, 18, 6, 6, 6, 6, 6, 6, 18, 18, 18, 18, 18, 18, 10, 10, 10, 10, 10, 10, 3, 3, 3}; void setup(void) {pinMode (3, salida); //buzzer pinMode (salida 13) Indicador //led al cantar una nota} void loop() {//sing el tunes sing(1); sing(1); sing(2);} int canción = 0; void sing (int s) {/ / iterar sobre las notas de la melodía: canción = s; si (canción == 2) {Serial.println ("' tema Underworld'"); int tamaño = sizeof(underworld_melody) / sizeof(int); para (int thisNote = 0; thisNote < tamaño; thisNote ++) {/ / para calcular la duración de la nota, tomar un segundo / / dividido por el tipo de nota. / / por ejemplo negra = 1000 / 4, corchea = 1000/8, etc. int noteDuration = 1000 / underworld_tempo [thisNote]; buzz (melodyPin underworld_melody [thisNote], noteDuration); para distinguir las notas, establecer un tiempo mínimo entre ellos. duración + 30% de la nota parece que funciona bien: int pauseBetweenNotes = noteDuration * 1.30; Delay(pauseBetweenNotes); detener la reproducción de tono: buzz (melodyPin, 0, noteDuration); }} else {Serial.println ("' Mario Theme'"); int tamaño = sizeof(melody) / sizeof(int); para (int thisNote = 0; thisNote < tamaño; thisNote ++) {/ para calcular la duración de la nota, toma un segundo / / dividido por el tipo de nota. / / por ejemplo negra = 1000 / 4, corchea = 1000/8, etc. int noteDuration = 1000 / tempo [thisNote]; buzz (melodyPin, noteDuration y melodía [thisNote]); / / para distinguir las notas, establecer un tiempo mínimo entre ellos. / / duración + 30% de la nota parece que funciona bien : int pauseBetweenNotes = noteDuration * 1.30; Delay(pauseBetweenNotes); detener la reproducción de tono: buzz (melodyPin, 0, noteDuration); }}} void buzz (int targetPin, frecuencia largo, longitud) {digitalWrite (13, HIGH); delayValue largo = 1000000 / frecuencia / 2; / / calcular el valor de retardo entre las transiciones / / 1 segundo de pena de microsegundos, dividido por la frecuencia, luego dividir por la mitad desde / / allí son dos fases cada ciclo largo numCycles = frecuencia * longitud / 1000; / / calcular el número de ciclos por tiempo adecuado / / multiplicar la frecuencia, que es realmente ciclos por segundo , por el número de segundos / / / obtener el número total de ciclos para producir para (tiempo he = 0; i < numCycles; i ++) {/ / de la longitud calculada del tiempo... digitalWrite (targetPin, HIGH); / / escribo el pin del zumbador para empujar el diafragma delayMicroseconds(delayValue); / / espere el retraso calculado valor digitalWrite (targetPin, LOW); / / escribo el pin del zumbador baja a tire hacia atrás del diafragma delayMicroseconds(delayValue); / / esperar otra vez o el valor de demora calculados} digitalWrite (13 BAJA); }