Paso 2: electrónica
La caja dice "Gracias" - utiliza un Arduino Duemilanove con un escudo de Sparkfun VoiceBox (https://www.sparkfun.com/products/10661O).
Utiliza una simple señal (plantea un pin en el Arduino primario - detecta la señal en el ViceBox Arduino)
tiene 3 tonos al azar antes y después gracias - suena un poco como R2D2
código está por debajo de
/*================================================================
Día de San Valentín gracias
Parte de la caja de voz basado en el código escrito por Ryan Owens, SparkFun Electronics
*/
Biblioteca serie suave utilizada para enviar comandos seriales en el pin 2 en lugar de pin serial regular.
#include < SoftwareSerial.h >
const int UnusedPin = 4; sin usar pin análogo utilizado para obtener la entrada al azar de semilla
const int SignalPin = A0; para obtener señal de Arduino principal
int señal;
Definir los números para la parte de la caja de la voz
#define E0 5
#define E1 6
#define E2 7
#define E3 8
#define E4 9
#define E5 10
#define E6 11
#define E7 12
#define RDY 13
#define RES 3
#define SPK 4
#define txPin 2
Crear un objeto de SoftSerial
Speakjet SoftwareSerial = SoftwareSerial (0, txPin);
char speakjetsetup [] = {20, 96, 21, 114, 22, 88, 23, 5, 0}; por cualquier motivo caja de voz sólo parece
funciona correctamente si las líneas terminan en 0
//thank you very much
Char [Gracias] = {169, 8, 130, 142, 196, 6, 8, 160, 6, 166, 150, 7, 128, 6, 140, 134, 15, 8, 182, 0};
pausa de Char [] = {5, 0}; 5 = 60ms pausa; 0 a final de línea
////////////////////////// SET UP ////////////////////////////////////////////
void setup() {}
pinMode (SignalPin, entrada);
Configurar los pines para el módulo de SpeakJet
pinMode (txPin, salida);
pinMode (SPK, entrada);
Configurar un puerto serie para hablar de Arduino con el módulo de SpeakJet en el pin 3.
speakjet.Begin(9600);
Configurar el pin listo como insumo
pinMode (RDY, entrada);
Configurar la línea de Reset como una salida
pinMode (RES, salida);
Configurar todos los pasadores de eventos como salidas de Arduino y ponlos bajo.
para (int i = E0; i < = E7; i ++)
{
pinMode (i, salida);
digitalWrite (i, LOW);
}
Se configuran todos los pines I/O. RESET del módulo de SpeakJet
digitalWrite (RES, LOW);
Delay(100);
digitalWrite (resolución alta);
enviar comandos de configuración al SpeakJet
speakjet.println(speakjetsetup);
randomSeed(analogRead(UnusedPin));
Delay(5000); permite cosas para instalarse
}
////////////////////////// LOOP ////////////////////////////////////////////
void loop()
{
señal = digitalRead(SignalPin);
Si (señal == HIGH)
{
redLED();
randombeeps(3);
Delay(1000);
speakjet.Print(thankyou);
Delay(800);
randombeeps(3);
Delay(3000);
blueLED();
}
} / / fin del bucle
///////////////////////////// FUNCTIONS ////////////////////////////////
void randombeeps(int beeps)
{
para (int k = 0; k < pitidos; k ++) / / generar la cantidad de tonos de
{
int rndnum = random (220, 230); mapas para sonidos en laringe, 220-229
char rndchar = char(rndnum);
speakjet.Print(rndchar);
speakjet.Print(PAUSE);
}
}
void blueLED() {}
digitalWrite (BluePin, alto);
digitalWrite (RedPin, LOW);
}
void redLED() {}
digitalWrite (BluePin, LOW);
digitalWrite (RedPin, alto);
}