Paso 1: Alambre hasta el SpeakJet con Arduino
Cuando usted conectar el circuito y cargar el código de abajo (escrito por la gente de Sparkfun), dirá el SpeakJet "listo" después de la salida el mensaje «todas su base son nos pertenecen» voz de Robot-hablar seguido por algunos pitidos de R2D2-esque y luz verde LED conectado al pin 16. (Por supuesto, usted necesitará conectar un altavoz entre pin 18 de SpeakJet, denominado "V_OUT" en el esquema anterior y GND para escuchar este mensaje). Que utiliza un altavoz de 8 Ohm pequeño y sólo oí el mensaje muy débilmente (por esta razón es buena para finalmente amplificar la salida del SpeakJet antes de enviarlo a los altavoces). Pulsa el botón de reset de Arduino (Fig. 4) para escuchar el mensaje tantas veces como quieras.
/* Voice Box Demo Sketch Written by Ryan Owens SparkFun Electronics Uses the Voice Box Shield from SparkFun to send the message "All your base are belong to us" and a series of robot sounds to the SpeakJet chip on the shield. A speaker can be plugged directly into the SPK+ and - pins on the shield. */ //Soft serial library used to send serial commands on pin 2 instead of regular serial pin. #include <SoftwareSerial.h> //Define the Pin Numbers for the sketch. #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 //Create a SoftSerial Objet SoftwareSerial speakjet = SoftwareSerial(0, txPin); //The message array contains the command for sounds to be sent in order to inunciate the words "All your base belong to us." Check the SpeakJet Manual for more information //on producing words //All Your Base Are Belong to us char message[] = {20, 96, 21, 114, 22, 88, 23, 5, 8, 135, 8, 146, 5, 128, 153, 5, 170, 154, 8, 188, 5, 152, 5, 170, 8,128,146,8,135,8,144,5,8,191,162,5,8,134,187}; //The sounds array contains the commands to send robot sounds to the SpeakJet chip. char sounds[] = {200, 201, 202, 203, 220, 221, 222}; void setup() { //Configure the pins for the SpeakJet module pinMode(txPin, OUTPUT); pinMode(SPK, INPUT); //Set up a serial port to talk from Arduino to the SpeakJet module on pin 3. speakjet.begin(9600); //Configure the Ready pin as an input pinMode(RDY, INPUT); //Configure Reset line as an output pinMode(RES, OUTPUT); //Configure all of the Event pins as outputs from Arduino, and set them Low. for(int i=E0; i<=E7; i++) { pinMode(i, OUTPUT); digitalWrite(i, LOW); } //All I/O pins are configured. Reset the SpeakJet module digitalWrite(RES, LOW); delay(100); digitalWrite(RES, HIGH); } void loop() { //Send "All Your Base are Belong to Us" to the SpeakJet module speakjet.print(message); //Wait before sending the next string. delay(3000); //Send the robotic sounds to the module. speakjet.print(sounds); while(1); }
Si quieres añadir tus propios mensajes en este código puede utilizar el SpeakJet Diccionario como referencia. Te guiará a través de un ejemplo aquí. Quiero conseguir el SpeakJet para decir la frase "Amanda es rad. Lo primero que hago es construir cada una de las palabras basadas en los ejemplos en el Diccionario de SpeakJet. Para "Amanda" tenemos:
hombre = \MM \SLOW \AY \SLOW \NE
pato = \DO \SLOW \UX \KE
Combinar éstos para obtener
Amanda = \SLOW \UX \MM \SLOW \AY \SLOW \NE \DO \SLOW \UX
«es» aparece en el diccionario:
es = \SLOW \IH \ZZ
para "rad" lo siguiente:
conejo = \SLOW \RR \AY \BE \RELAX \IH \TT
rojo = \RR \SLOW \EH \ED
para obtener:
RAD = \SLOW \RR \AY \ED
Páginas 15 y 16 del Manual de usuario de SpeakJet da todos los códigos numéricos para cada uno de estos sonidos. Aquí está mi ejemplo transcrito en forma numérica:
Amanda = \SLOW \UX \MM \SLOW \AY \SLOW \NE \DO \SLOW \UX es = \SLOW \IH \ZZ RAD = \SLOW \RR \AY \ED
Amanda = 8 134 140 8 132 8 141 175 8 134
es = 8 129 167
RAD = 8 148 132 176
Podemos establecer el volumen, velocidad y otros parámetros del discurso llamando a los números 20-23, copié los siguientes valores desde el código de Sparkfun anterior:
20, 96, 21, 114, 22, 88, 23, 5,
Esto fija volumen 20 a 96, velocidad 21 a 114, campo 22 a 88 y curva 23 a 5. Usted puede jugar con estos números para aprender más sobre cómo funcionan. Si lees la tabla en la página 15 del SpeakJet Manual puede averiguar acerca de otros comandos de control, así como incorporar pausas en su discurso.
Poniendo esto todos juntos, tengo la siguiente serie de números:
{20, 96, 21, 114, 22, 88, 23, 5, 8, 134, 140, 8, 132, 8, 141, 175, 8, 134, 8, 129, 167, 8, 148, 132, 176}
Y aquí está el código final, sobre todo se copia directamente desde el código de Sparkfun anterior (hice la última "a" y "d" en "rad" lento al poner un 8 adicional frente a los números 132 y 176 para conseguir estas piezas de sonido un poco más claro):
/* "Amanda is rad" by Amanda Ghassaei