Paso 7: Arduino completo Beetbox código
#include < CapacitiveSensor.h >#include < WaveHC.h >
#include < WaveUtil.h >
/*
* Utiliza un resistor de alto valor por ejemplo 10M entre enviar pin y recibir el pin
* Resistencia efectos de sensibilidad, experimento con valores de 50K - 50M. Valores mayores de resistencia producen valores de sensor más grandes.
* Recibir el pin es el pin del sensor.
*/
Tarjeta SdReader; Este objeto contiene la información de la tarjeta char nombre [13];
FatVolume vol; Contiene la información de la partición en la tarjeta
FatReader raíz; Esto contiene la información para el directorio de raíz de volúmenes
Archivo FatReader; Este objeto representa el archivo WAV de un dígito de pi o un período
Ola WaveHC; Este es el único objeto (audio) de la onda, puesto que sólo jugaremos uno a la vez
Descomentar la siguiente línea para habilitar la depuración Serial.print() declaraciones
#define DEBUG
#define error(msg) error_P(PSTR(msg)) CapacitiveSensor cs_9_6 = CapacitiveSensor(9,6); 10 M resistencia entre los pines 9 y 6, pin 6 pin sensor, añadir un alambre y papel de aluminio si se desea Float calVal1 = 0.0; void setup() PgmPrintln ("archivos encontrados:"); pinMode (14, salida); void loop()
CapacitiveSensor cs_9_7 = CapacitiveSensor(9,7);
CapacitiveSensor cs_9_8 = CapacitiveSensor(9,8);
Float calVal2 = 0.0;
Float calVal3 = 0.0;
flotador total1 = 0.0;
flotador total2 = 0.0;
flotador total3 = 0.0;
int i = 0;
{
Serial.Begin(9600);
Si (! {card.init())}
error ("tarjeta init. no se pudo!");
}
Si (! {vol.init(card))}
error ("no hay partición!");
}
Si (! {root.openRoot(vol))}
error ("no pudo abrir dir");
}
root.LS();
cs_9_6.reset_CS_AutoCal(); canal de autocalibrate 1
cs_9_7.reset_CS_AutoCal(); autocalibrate canal 2
cs_9_8.reset_CS_AutoCal(); autocalibrate canal 3
cs_9_6.set_CS_AutocaL_Millis(0x00001000); intervalo autocalibrate en el canal 1
cs_9_7.set_CS_AutocaL_Millis(0x00001000); intervalo autocalibrate en el canal 2
cs_9_8.set_CS_AutocaL_Millis(0x00001000); intervalo de autocalibrate en canal 3
}
{
total1 = cs_9_6.capacitiveSensor(30);
total2 = cs_9_7.capacitiveSensor(30);
total3 = cs_9_8.capacitiveSensor(30);
Si (i < 60) {/ / base de calibrar el Sensor
digitalWrite (14, alto);
calVal1 = 0.1*float(total1) + 0.9 * calVal1;
i ++;
}
else if (< 120) { / / base de calibrar el Sensor
digitalWrite (14, LOW);
calVal2 = 0.1*float(total2) + 0.9 * calVal2;
i ++;
}
else if (< 180) { / / base de calibrar el Sensor
digitalWrite (14, alto);
calVal3 = 0.1*float(total3) + 0.9 * calVal3;
i ++;
}
Else {}
digitalWrite(14,LOW);
}
#ifdef DEBUG
Serial.Print(total1);
Serial.print("\t") de ;
Serial.Print(total2); / / imprimir salida de sensor 2
Serial.print("\t") de ;
Serial.println(total3); / / imprimir salida de sensor 3
Serial.Print ("CAL: \t");
Serial.Print(calVal1); / / imprimir salida sensor 1
Serial.print("\t") de ;
Serial.Print(calVal2); / / imprimir salida de sensor 2
Serial.print("\t") de ;
Serial.println(calVal3); / / imprimir salida de sensor 3
#endif
Si (total1 > 0.8 * calVal1 & & total2 > 0.8 * calVal2) {}
strcpy_P (nombre de archivo, PSTR ("BUFF1. WAV"));
Serial.println(FileName);
playfile(FileName);
}
else if (total2 > 0.8 * calVal2 & & total3 > 0.8 * calVal3) {}
strcpy_P (nombre de archivo, PSTR ("sombrero. WAV"));
Serial.println(FileName);
playfile(FileName);
}
else if (total1 > 0.8 * calVal1) {}
strcpy_P (nombre de archivo, PSTR ("CLICK1. WAV"));
Serial.println(FileName);
playfile(FileName);
}
else if (total2 > 0.8 * calVal2) {}
strcpy_P (nombre de archivo, PSTR "(BOOM1. WAV"));
Serial.println(FileName);
playfile(FileName);
}
else if (total3 > 0.8 * calVal3) {}
strcpy_P (nombre de archivo, PSTR ("BOOMHAA1. WAV"));
Serial.println(FileName);
playfile(FileName);
}
Delay(10); retardo arbitrario limitar datos al puerto serie
}
/////////////////////////////////// HELPERS
/*
* imprimir mensaje de error y detener la
*/
error_P void (const char * str) {}
PgmPrint ("Error:");
SerialPrint_P(str);
sdErrorCheck();
while(1);
}
/*
* imprimir mensaje de error y detener si error E/S SD
*/
void sdErrorCheck(void) {}
Si (! card.errorCode()) retorno;
PgmPrint ("\r\nSD I/O error:");
Serial.Print(Card.ErrorCode(), hexagonal);
PgmPrint (",");
Serial.println(Card.errorData(), hexagonal);
while(1);
}
/*
* Reproducir un archivo y esperar a que termine
*/
void playcomplete(char *name) {}
playfile(Name);
mientras (wave.isplaying);
ver si el error al jugar
sdErrorCheck() de ;
}
/*
* Abrir y empezar a reproducir un archivo WAV
*/
void playfile(char *name) {}
Si (wave.isplaying) {/ / así que ya está reproduciendo algo, stop!
Wave.STOP(); Basta
}
Si (! file.open (raíz, nombre)) {}
PgmPrint ("no puede abrir archivo");
Serial.Print(Name);
retorno;
}
Si (! {wave.create(file))}
PgmPrintln ("no un válido WAV");
retorno;
}
OK el tiempo para jugar!
Wave.Play();
}