Étape 5: Emic2
J’ai eu le mien ici https://www.sparkfun.com/products/11711 mais vous pouvez aussi les commander directement à partir de parallaxe ou un tas d’autres endroits. Fondamentalement vous l’envoyer commandes série et il parlera. Voici les parties importantes de l’esquisse :
Définir l’interface série du logiciel que j’ai utilisé :
#define rxPin 51 / / série entrée (se connecte à émique 2 SOUT)
#define txPin 53 / / série sortie (se connecte à émique 2 SIN)
SoftwareSerial emicSerial = SoftwareSerial (rxPin, txPin) ;
Dans setup(), nous nous préparons à parler à la Emic2
emicSerial.begin(9600) ;
emicSerial.print('\n') ; Envoyer un CR dans le cas où le système est déjà écoulé
tandis que (emicSerial.read()! = ':') ; Quand les 2 émique a initialisé et est prêt, il enverra une seule ':' caractère, donc attendre ici jusqu'à ce que nous le recevons
Delay(10) ; Court délai
emicSerial.flush() ; Videz la mémoire tampon de réception
J’ai utilisé la méthode suivante pour prendre un texte, envoyez-le à l’Emic2 et exécutez l’orignal bouche et le corps lorsqu’il parlait :
Sub mooseTalk(String phrase)
{
emicSerial.println("P1") ;
Delay(100) ;
clearEmicSerialRead() ;
emicSerial.println("W75") ;
Delay(100) ;
clearEmicSerialRead() ;
emicSerial.println("V0") ;
Delay(100) ;
clearEmicSerialRead() ;
emicSerial.println("N0") ;
Delay(100) ;
clearEmicSerialRead() ;
emicSerial.print('S') ;
emicSerial.print("\\/\\/") ;
emicSerial.println(phrase) ;
Serial.println(phrase) ;
int i = 0 ;
u int = 0 ;
pour (int j = 0; j < phrase.length(); j ++)
{
Si (expression [j] == ' ')
{
i ++ ;
}
Si (expression [j] == « _ »)
{
u ++ ;
}
}
i = i + u/2 ;
i = i - i *. 25 ;
Delay(300) ;
pour (int j = 0; j < i; j ++)
{
mooseMove(random(250,450)) ;
Delay(Random(150,300)) ;
}
clearEmicSerialRead() ;
while (emicSerial.available() > 0)
//{
Serial.println(emicSerial.Read()) ;
//}
tandis que (emicSerial.read()! = ':') ;
}
J’ai aussi créé cette méthode de la faire chanter après qu’il a donné sa fortune. Les chansons dans le croquis sont « hit me with your best shot », « Edelweiss » et « Daisy Bell »
void singSong() {}
emicSerial.println("V0") ;
Delay(100) ;
emicSerial.println("P0") ;
la chanson int = random(3) ;
Si (chanson == 0)
{
emicSerial.println ("S [: taux de 230] [: n0] [: dv ap 200 sm 100 ri 100] [WEH < 125,12 > LX < 75 > YXOR < 200,14 > AH < 200,17 > AXRIY < 300,21 > LL < 100 > TAH < 300 > F < 100 > KUH < 200,19 > KIY < 200,17 > WIH < 125 > TH < 75 > AX < 200,14 > LLAO < 300,17 > NX < 100 > HXIH < 200 > STOR < 200,14 > IY < 400,19 > _ < 500 > AH < 125,17 > V < 75 > BRREY < 200,19 > K AH < 125,17 > N < 75 > LLIH < 200,19 > DXEL < 200,17 > HXAR < 300,19 > TS < 100 > LLAY < 125 > K < 75 > SÉMAH < 200,17 > WAH < 125,19 > N < 75 > IH < 125 > N < 75 > MIY < 400,21 > _ < 400 > DHAE < 200 > TS < 100 > OW < 200,19 > clé < 400,17 > LLEH < 125,14 > TS < 75 > SIY < 400,17 > HXAW < 200 > YU < 200,14 > DUW < 400,19 > IH < 125,17 > T < 75 > _ < 400 > PUH < 125,19 > T < 75 > AH P < 75 > < 125 > YXOR < 200,17 > DUW < 450,19 > KS < 150 > LLEH < 300,19 > TS < 100 > GEH < 125 > T < 75 > DAW < 300 > N < 100 > TUW < 400,21 > IH < 200,19 > T < 100 > HXIH < 125,21 > T < 75 > MIY < 200,19 > WIH < 125 > e < 75 > YXOR < 200,17 > BEH < 300 > ST < 100 > SHAO < 300,21 > T < 100 > _ < 1100 > chemin < 200,17 > DOW < 125,19 > N < 75 > CHAX < 200,17 > HXIH < 70,21 > T < 30 > MIY < 100,19 > WIH < 125 > e < 75 > YXOR < 200,17 > BEH < 300,19 > ST < 100 > SHAO < 200,14 > AO < 300,12 > T < 100 > _ < 1200 > HXIH < 125,21 > T < 75 > MIY < 200,19 > WIH < 125 > e < 75 > YXOR < 200,17 > BEH < 300 > ST < 100 > SHAO < 300,21 > T < 100 > _ < 800 > FAY < 200 > RR < 200,22 > AX < 200,24 > WEH < 400,19 > EY < 900,17 >] [: n0] ") ;
pour (int i = 0; i < 22; i ++)
{
mooseMove(random(500,1450)) ;
Delay(Random(150,300)) ;
}
clearEmicSerialRead() ;
}
d’autre if(song == 1)
{
emicSerial.println ("S [: parler de téléphone arpa] [: taux de 180] [: n0] [: dv SH 95 br 0 comme 90 ap 90 sm 90 ri 100] [EY < 800,15 > DEL < 400,18 > VAY < 900,25 > S < 300 > EY < 800,23 > DEL < 400,18 > VAY < 900,16 > S < 300 > EH < 800,15 > VRIY < 400 > MOR < 400 > NIH < 250,16 > NX < 150 > YU < 400,18 > GRIY < 1100,20 > T < 100 > MIY < 800,18 > _ < 400 > SMAO < 500,15 > LX < 300 > AE < 250,18 > N < 100 > D < 50 > chemin < 1100,25 > T < 100 > KLLIY < 500,23 > N < 300 > AE < 250,18 > N < 100 > D < 50 > BRAY < 1100,16 > T < 100 > YU < 800,15 > LLUH < 300,18 > K < 100 > HXAE < 400 > PIY < 400,20 > TUW < 400,22 > MIY < 1000,23 > TMIY < 900,23 > _ < 800 > BLLAO < 800,25 > SAH < 125,18 > M < 75 > < > V < 150 > neige < 400,22 > MEY < 400,20 > YU < 400,18 > BLLUW < 500,15 > M < 300 > AE < 250,18 > N < 100 > 250D < 50 > AH se développer < 900,23 > _ < > BLLUW < 500,20 > M < 300 > AE < 250,23 > N < 100 > 300D < 50 > croître < 800,25 > < 400,23 > EH < 1200,22 > VRR < 800,18 > _ < 400 > EY < 800,15 > DEL < 400,18 > VAY < 900,25 > < 300 > EY < 800,23 > DEL < 400,18 > VAY < 900,16 > x < 300 > BLLEH < 600,15 > S < 200 > peut < 400,18 > HXOW < 250 > M < 150 > LLAE < 250,20 > N < 100 > D < 50 > pour < 400,22 > VRR EH < 1200,23 > < 800 >] [: n0] ") ;
pour (int i = 0; i < 40; i ++)
{
mooseMove(random(500,1450)) ;
Delay(Random(150,300)) ;
}
clearEmicSerialRead() ;
}
d’autre //if (chanson == 2)
{
emicSerial.println("D1") ;
pour (int i = 0; i < 22; i ++)
{
mooseMove(random(500,1450)) ;
Delay(Random(150,300)) ;
}
clearEmicSerialRead() ;
}
/ * autre
{
emicSerial.println ("S [: parler de téléphone arpa] [: taux 190] [: n2] [: dv ap 200 sm 100 ri 100] [R EY < 200,17 > N < 100 > OFR < 200,24 > PS < 100 > AO < 200 > N < 100 > ligne < 300,19 > ZIX < 200,17 > Z < 100 > AE < 150 > N < 100 > D < 50 > WIH < 300,12 > SKRR < 200,17 > Z < 100 > AO < 200 > < 100 > KIH < 300,19 > TAH < 150,17 > N < 100 > Z < 50 > _ < 300 > BRAY < 200 > T < 100 > KAO < 300,24 > PRR < 300 > naceur hein < 300,19 > TEL < 200,17 > Z < 100 > AE < 150 > N < 100 > D < 50 > guerre < 200,12 > M < 100 > WUH < 300,17 > LL hein < 200 > N < 100 > MIH < 300,19 > TAH < 150,17 > N < 100 > Z < 50 > _ < 300 > Jaqueline < 200 > N < 100 > PEY < 300,24 > PRR < 300,22 > PAE < 300,17 > KIH < 300,19 > JHIX < 200,15 > Z < 100 > TAY < 200 > D < 100 > AH < 200,22 > P < 100 > WIH < 200,20 > e < 100 > AX STRIH < 300,13 > NX < 200 > Z < 100 > _ < 300 > DHIY < 200,12 > Z < 100 > AR < 300,13 > AH Mumbere < 300,15 > < 300,17 > < 200,18 > V < 100 > peut < 300,20 > FEY < 300,22 > VRR < 300,24 > hein < 200,22 > T < 100 > THIH < 500,16 > NX < 300 > Z < 100 >] [ : n0] ") ;
emicSerial.println ("S [: parler de téléphone arpa] [: taux 190] [: n2] [: dv ap 200 sm 100 ri 100] [KRIY < 200,17 > M < 100 > KAH < 300,24 > LLRR < 200 > D < 100 > POW < 300,19 > NIY < 200,17 > Z < 100 > AE < 150 > N < 100 > D < 50 > KRIH < 200,12 > SP < 100 > AE < 300,17 > PEL < 300 > STRUW < 300,19 > DXEL < 300,17 > _ < 300 > DOR < 300 > BEH < 150,24 > LX < 100 > Z < 50 > AE < 150 > N < 100 > D < 50 > SLLEY < 300,19 > BEH < 150,17 > LX < 100 > Z < 50 > AE < 150 > N < 100 > D < 50 > SHNIH < 200,12 > T < 100 > SEL < 300,17 > WIH < 200 > TH < 100 > NUW < 300,19 > DXEL < 200,17 > Z < 100 > _ < 300 > chemin < 150,17 > LL < 100 > D < 50 > Granger < 200,24 > S < 100 > DHAE < 200,22 > T < 100 > FLLAY < 300,17 > WIH < 200,19 > e < 100 > SÉMAH < 300,15 > MUW < 200 > N < 100 > AO < 200,22 > N < 100 > DHER < 300,20 > AX WIH < 300,13 > NX < 200 > Z < 100 > _ < 300 > DHIY < 200,12 > Z < 100 > AR < 300,13 > AH Mumbere < 300,15 > < 300,17 > < 200,19 > V < 100 > peut < 300,20 > FEY < 300,22 > VRR < 300,24 > hein < 200,22 > T < 100 > THIH < 500,16 > NX < 300 > Z < 100 >] [ : n0] ") ;
emicSerial.println ("S [: parler de téléphone arpa] [: taux 190] [: n2] [: dv ap 200 sm 100 ri 100] [GRR < 150,17 > LL < 100 > Z < 50 > IH < 200,24 > N < 100 > WAY < 200 > T < 100 > DRREH < 300,19 > SIX < 200,17 > Z < 100 > WIH < 200 > TH < 100 > BLLUW < 300,12 > SAE < 300,17 > TAH < 200 > N < 100 > SAE < 300,19 > SHIX < 200,17 > Z < 100 > _ < 300 > neige < 300 > FLLEY < 200,24 > KS < 100 > DHAE < 200 > T < 100 > STEY < 300,19 > AO < 200,17 > N < 100 > peut < 300 > maintenant < 200,12 > Z < 100 > AE < 150,17 > N < 100 > D < 50 > AY < 300 > LLAE < 300,19 > SHIX < 200,17 > Z < 100 > _ < 300 > SIH < 200 > LL < 100 > VRR < 300,24 > chemin < 200,22 > T < 100 > WIH < 200,17 > N < 100 > TRR < 200,19 > Z < 100 > DHAE < 200,15 > T < 100 > MEH < 150 > LL < 100 > T < 50 > IH < 200,22 > N < 100 > TUW < 300,20 > SPRIH < 400,13 > AX NX < 200 > _ < 300 > DHIY < 200,12 > Z < 100 > AR < 300,13 > AH Mumbere < 300,15 > < 300,17 > < 200,19 > V < 100 > peut < 300,20 > FEY < 300,22 > VRR < 300,23 > EH < 200,24 > T < 100 > THIH < 400,25 > NX < 100 > Z < 100 > _ < 200 >] [ : n0] ") ;
emicSerial.println ("S [: parler de téléphone arpa] [: taux 190] [: n2] [: dv ap 200 sm 100 ri 100] [TS WEH < 200,24 > N < 100 > SÉMAH < 300 > DAO < 500 > G < 100 > Baie < 200,17 > < 100 > _ < 300 > WEH < 200,22 > N < 100 > SÉMAH < 300 > BIY < 600 > Sith < 150,16 > NX < 100 > Z < 50 > _ < 300 > WEH < 200,20 > N < 100 > AY < 200 > M < 100 > FIY < 600 > LLIH < 200,12 > NX < 100 > SAE < 1400,17 > D < 100 > AY < 300 > SIH < 200 > M < 100 > PLLIY < 300,19 > RIY < 300,17 > MEH < 200,19 > M < 100 > BRR < 300,17 > peut < 300,19 > FEY < 300,20 > VRR < 300,22 > EH < 200,20 > T < 100 > THIH < 300,22 > NX < 200 > Z < 100 > AE < 150,20 > N < 100 > D < 50 > DHEH < 200,24 > N < 100 > AY < 300,25 > DOW < 150,24 > N < 100 > T < 70 > FIY < 600,25 > LX < 300 > _ < 1000 > truie < 900,24 > BAE < 2000,20 > D < 100 > _ < 40 >] [ : n0] ") ;
clearEmicSerialRead() ;
pour (int i = 0; i < 180; i ++)
{
mooseMove(random(500,1450)) ;
Delay(Random(150,300)) ;
}
}*/
clearEmicSerialRead() ;
emicSerial.println("P1") ;
clearEmicSerialRead() ;
}