Componente: Voice Shield

Autor: Viorel -18/06/2010-


Voice Shield-ul este un montaj electronic special conceput pentru Arduino, capabil sa sintetizeze vocal o fraza pe care o comanda Arduino.


Fraza este descrisa in programul pentru Arduino printr-o secventa de numere, fiecare numar reprezentand o comanda specific sau un grup de sunete. Astfel, pentru a sintetiza “Tehnorama is greeeaaat”, am folosit sirul de numere de mai jos :


6,6,6,6,8,190,8, 131,8,142,8,153,8,132,8,140,8,132, 6, 128, 
168, 6, 8, 179, 8, 148, 148,  8, 130, 130,8, 191



Astfel, 6 semnifica o pauza, 8 impune ca urmatorul grup de sunete sa fie pronuntat rar, 191 este sunetul “t”, 131 este sunetul “eh”, 142 este sunetul “no” si tot asa.




Alte cateva poze mai jos.






Primul pas care trebuie facut este conectarea difuzorului extern. Acesta nu este inclus in kit, dar poate fi utilizat orice difuzor pasiv (eu spre exemplu am scos o casca dintr-o pereche de casti rupta).


Programul




#include 

#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

SoftwareSerial speakjet = SoftwareSerial(0, txPin);

char message[] = {
  6,6,6,6,8,191,8, 131,8,142,8,153,8,132,8,140,8,132, 6, 128, 168, 6, 8, 179, 8, 148, 148,  8, 130, 130,8, 191};

void setup()   {

  pinMode(txPin, OUTPUT);
  pinMode(SPK, INPUT);

  speakjet.begin(9600);    

  pinMode(RDY, INPUT);

  pinMode(RES, OUTPUT);

  for(int i=E0; i<=E7; i++)   {
    pinMode(i, OUTPUT);
    digitalWrite(i, LOW);
  }

  digitalWrite(RES, LOW);
  delay(100);
  digitalWrite(RES, HIGH);

}

void loop() {  

  speakjet.print(message);
  while(1);
}

In viziunea mea, partile interesante sunt :

- “char message[] ” – array de numere care contine mesajul (“Tehnorama is greeaat”). Fiecare numar reprezinta o comanda (de exemplu 6 – pauza, sau 8 – pronunta urmatorul sunet mai lung), sau un sunet – de exemplu 191 – sunetul “T”

- rutina “setup()” trece pinii Arduino utilizati in modul corespunzator, si creaza o interfata seriala software pentru comunicare.

- rutina “loop()” scrie numerele care definesc fraza pe interfata seriala software.

Manual care descrie in mod detaliat sunetele este disponibil aici – Speakjet User Manual .



Ceva neclar in articolul de mai sus ? Ai vrea sa discuti cu cineva despre proiectul tau ? Vino in fiecare marti seara de la ora 19:00 la Intalnirea Tehnorama, sau ne poti contacta direct.
Vezi aici detalii complete.

Despre... Viorel

Acest autor a publicat 128 articole.

Share

FacebookTwitterEmailWindows LiveTechnoratiDeliciousDiggStumbleponMyspaceLikedin

Comentarii


Ro-Bot-X
June 18th, 2010

Trebuie sa stiti ca Magnevation are un software care traduce textul ASCII in acele phoneme (numere). Puteti descarca PhraseaLator gratuit de aici: http://magnevation.com/software/PhraseALator.zip

.


Viorel
June 18th, 2010

Hee, that’s pure gold, man ! :) M-am chinuit ultima data ceva timp ca sa le gasesc prin trial and error. Thanks !

Trimite un comentariu