Étape 2: Electronics
La boîte indique « Merci beaucoup »: elle utilise un Arduino Duemilanove avec un bouclier de Sparkfun VoiceBox (https://www.sparkfun.com/products/10661O).
Utilise un simple signal (déclenche une broche haute sur l’Arduino primaire - capte le signal sur le ViceBox Arduino)
a 3 bips au hasard avant et après je vous remercie - sonne un peu comme R2D2
code est ci-dessous
/*================================================================
Saint-Valentin Merci
Partie de la boîte vocale basée sur le code écrit par Ryan Owens, SparkFun Electronics
*/
Bibliothèque série douce utilisée pour envoyer des commandes de série sur la broche 2 au lieu de la broche série régulière.
#include < SoftwareSerial.h >
const int UnusedPin = 4 ; broches analogiques inutilisées permet d’obtenir une entrée aléatoire pour les semences
const int SignalPin = A0 ; pour obtenir le signal de principal Arduino
int signal ;
Définir le nombre de broches pour la partie de la boîte vocale
#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
Créer un SoftSerial Objet
SoftwareSerial speakjet = SoftwareSerial (0, txPin) ;
Char [] speakjetsetup = {20, 96, 21, 22, 114, 88, 23, 5, 0} ; pour une raison quelconque la boîte vocale ne semble
fonctionner correctement si les lignes se terminent par 0
//thank you very much
Char [Merci] = {169, 8, 130, 142, 196, 6, 8, 160, 6, 166, 150, 7, 128, 6, 140, 134, 15, 8, 182, 0} ;
pause de char [] = {5, 0} ; 5 = 60ms pause ; 0 à la fin de ligne
////////////////////////// SET UP ////////////////////////////////////////////
void setup() {}
pinMode (entrée, SignalPin) ;
Configurer les broches pour le module SpeakJet
pinMode (txPin, sortie) ;
pinMode (SPK, entrée) ;
Mettre en place un port série pour parler de Arduino au module SpeakJet sur la broche 3.
SpeakJet.Begin(9600) ;
Configurer la broche prête comme intrant
pinMode (entrée, RDY) ;
Configurer la ligne Reset comme sortie
pinMode (RES, sortie) ;
Configurer toutes les broches de l’événement comme sorties de Arduino et les bas.
pour (int i = E0; i < = E7; i ++)
{
pinMode (i, sortie) ;
digitalWrite (i, faible) ;
}
Toutes les broches e/s sont configurés. Réinitialiser le module SpeakJet
digitalWrite (RES, faible) ;
Delay(100) ;
digitalWrite (RES, élevé) ;
Envoyer des commandes d’installation pour SpeakJet
SpeakJet.println(speakjetsetup) ;
randomSeed(analogRead(UnusedPin)) ;
Delay(5000) ; laisser les choses se calment
}
////////////////////////// LOOP ////////////////////////////////////////////
void loop()
{
signal = digitalRead(SignalPin) ;
Si (signal == HIGH)
{
redLED() ;
randombeeps(3) ;
Delay(1000) ;
SpeakJet.Print(thankyou) ;
Delay(800) ;
randombeeps(3) ;
Delay(3000) ;
blueLED() ;
}
} / / fin de boucle
///////////////////////////// FUNCTIONS ////////////////////////////////
Sub randombeeps(int beeps)
{
pour (int k = 0; k < bips; k ++) / / générer nombre de bips
{
int rndnum = random (220, 230) ; des cartes des bip sur la boîte vocale, 220-229
char rndchar = char(rndnum) ;
SpeakJet.Print(rndchar) ;
SpeakJet.Print(pause) ;
}
}
void blueLED() {}
digitalWrite (BluePin, élevé) ;
digitalWrite (RedPin, basse) ;
}
void redLED() {}
digitalWrite (BluePin, faible) ;
digitalWrite (RedPin, élevé) ;
}