Stap 1: Draad op de SpeakJet met Arduino
Wanneer u draad van het circuit en upload de onderstaande code (geschreven door de mensen van Sparkfun), de SpeakJet zal zeggen "klaar" dan geef het bericht weer "All your base are belong to ons" in Robot-Speak stem gevolgd door sommige R2D2-achtige piepjes en licht de groene LED gekoppeld aan pin 16. (Natuurlijk, je moet voor het aansluiten van een spreker tussen pin 18 van de SpeakJet, met het label "V_OUT" in het bovenstaande schema, en GND om te horen van dit bericht). Ik gebruikte een kleine, 8 Ohm luidspreker en hoorde alleen de boodschap heel flauw (dit is waarom het is goed om uiteindelijk het versterken van de uitvoer van de SpeakJet voordat u deze verzendt naar luidsprekers). Druk op de resetknop van de Arduino (fig 4) om te horen van de boodschap zo vaak als u nodig hebt.
/* 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); }
Wil je je eigen berichten toevoegen in deze code kunt u het SpeakJet woordenboek als een verwijzing. Ik zal u door een voorbeeld hier lopen. Ik wil graag de SpeakJet wil de zin "Amanda is rad." Het eerste wat dat ik doe is de bouw van elk van de woorden op basis van de voorbeelden in het woordenboek van de SpeakJet. Voor "Amanda" hebben we:
man = \MM \SLOW \AY \SLOW \NE
eend = \DO \SLOW \UX \KE
Deze te krijgen combineren
Amanda = \SLOW \UX \MM \SLOW \AY \SLOW \NE \DO \SLOW \UX
in het woordenboek wordt "is" vermeld:
is = \SLOW \IH \ZZ
voor "rad" het volgende combineren:
konijn = \SLOW \RR \AY \BE \RELAX \IH \TT
rood = \RR \SLOW \EH \ED
om te krijgen:
RAD = \SLOW \RR \AY \ED
Pagina's 15 en 16 van het Handboek van de gebruiker van de SpeakJet geeft alle numerieke codes voor elk van deze geluiden. Hier is mijn voorbeeld herschreven als numerieke vorm:
Amanda = \SLOW \UX \MM \SLOW \AY \SLOW \NE \DO \SLOW \UX is = \SLOW \IH \ZZ RAD = \SLOW \RR \AY \ED
Amanda = 8 134 140 8 132 8 141 175 8 134
is = 8 129 167
RAD = 8 148 132 176
Wij stel het volume, snelheid en andere parameters van de toespraak door te bellen naar de nummers 20-23, ik gekopieerd de volgende waarden van de bovenstaande Sparkfun-code:
20, 96, 21, 114, 22, 88, 23, 5,
Hiermee stelt u Volume (20) tot 96, snelheid (21) tot en met 114, Pitch (22) tot 88 en Bend (23) tot en met 5. Je kun spelen met deze nummers voor meer informatie over hoe ze werken. Als je de tabel op bladzijde 15 van de handleiding SpeakJet leest verneemt u over andere controle-opdrachten, evenals hoe pauzes geïntegreerd in uw toespraak.
Om deze alle samen, ik heb de volgende reeks getallen:
{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}
En hier is de definitieve code, het is meestal rechtstreeks uit de bovenstaande code van Sparkfun gekopieerd (ik maakte de laatste "a" en "d" in "rad" langzaam door de invoering van een extra 8 voor de nummers 132 en 176 om deze onderdelen te klinken een beetje meer duidelijk):
/* "Amanda is rad" by Amanda Ghassaei