Alla hjärtans Box (2 / 4 steg)
Steg 2: elektronik
Rutan säger "Tack så mycket" - den använder en Arduino Duemilanove en Sparkfun VoiceBox sköld (https://www.sparkfun.com/products/10661O).
Använder en enkel signal (väcker en pin hög på primära Arduino - känner av signalen på ViceBox Arduino)
har 3 slumpmässiga signaler före och efter tack - låter lite som R2D2
koden är under
/*================================================================
Alla hjärtans tack
Struphuvudet del baserad på kod skriven av Ryan Owens, SparkFun elektronik
*/
Mjuk seriell bibliotek används för att skicka seriella kommandon på pin 2 istället för vanlig seriell pin.
#include < SoftwareSerial.h >
CONST int UnusedPin = 4; oanvända analoga pin brukade få slumpmässiga indata för utsäde
CONST int SignalPin = A0; att få signal från huvudsakliga Arduino
int signal;
Definiera Pin-koder för den röst ruta del
#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
Skapa en SoftSerial Objet
SoftwareSerial speakjet = SoftwareSerial (0, txPin);
char speakjetsetup [] = {20, 96, 21, 114, 22, 88, 23, 5, 0}; av någon anledning röst rutan bara tycks
fungera korrekt om linjer slutar på 0
Tack så mycket
char thankyou [] = {169, 8, 130, 142, 196, 6, 8, 160, 6, 166, 150, 7, 128, 6, 140, 134, 15, 8, 182, 0};
char pausa [] = {5, 0}; 5 = 60ms pausa; 0 till slutet linje
////////////////////////// SET UP ////////////////////////////////////////////
void setup() {
pinMode (SignalPin, indata);
Konfigurera stiften för modulen SpeakJet
pinMode (txPin, produktionen);
pinMode (SPK, indata);
Konfigurera en seriell port att prata från Arduino modulen SpeakJet på stift 3.
speakjet.BEGIN(9600);
Konfigurera redo PIN-koden som indata
pinMode (RDY, indata);
Konfigurera Återställ linje som en utgång
pinMode (RES, OUTPUT);
Konfigurera alla Event stift som utgångar från Arduino och ange dem låg.
för (int jag = E0; jag < = E7; i ++)
{
pinMode (i, matas);
digitalWrite (i, låg);
}
Alla I/O stift är konfigurerade. Återställa modulen SpeakJet
digitalWrite (RES, låg);
Delay(100);
digitalWrite (RES, hög);
Skicka setup kommandon till SpeakJet
speakjet.println(speakjetsetup);
randomSeed(analogRead(UnusedPin));
Delay(5000); låta saker och ting att bosätta
}
////////////////////////// LOOP ////////////////////////////////////////////
void loop()
{
signal = digitalRead(SignalPin);
om (signal == hög)
{
redLED();
randombeeps(3);
Delay(1000);
speakjet.Print(thankyou);
Delay(800);
randombeeps(3);
Delay(3000);
blueLED();
}
} / / end av loop
///////////////////////////// FUNCTIONS ////////////////////////////////
void randombeeps(int beeps)
{
för (int k = 0; k < pip; k ++) / / generera antal Piper
{
int rndnum = random (220, 230); kartor för att beep ljud på struphuvudet, 220-229
char rndchar = char(rndnum);
speakjet.Print(rndchar);
speakjet.Print(PAUSE);
}
}
void blueLED() {
digitalWrite (BluePin, hög);
digitalWrite (RedPin, låg);
}
void redLED() {
digitalWrite (BluePin, låg);
digitalWrite (RedPin, hög);
}