//-------------------------------------- //file :say2_ur.ino //author:Victor Chen //web :www.vic8051.com //參考資料:Arduino實作入門與應用 ----台灣/松崗 //-------------------------------------- int led = 13; //設定LED腳位 int k1 =7; //設定按鍵腳位 int gnd=19; //設定地線控制腳位 int v5=18; //設定5v控制腳位 int ck=14;int sd=15; int rdy=16; int rst=17; //設定語音合成控制腳位 //-------------------------------------- void setup()//初始化設定 { pinMode(v5, OUTPUT); pinMode(gnd, OUTPUT); digitalWrite(v5, HIGH); digitalWrite(gnd, LOW); delay(1000); pinMode(ck, OUTPUT); pinMode(rdy, INPUT); digitalWrite(rdy, HIGH); pinMode(sd, OUTPUT); pinMode(rst, OUTPUT); pinMode(led, OUTPUT); pinMode(k1, INPUT); digitalWrite(k1, HIGH); digitalWrite(rst, HIGH); digitalWrite(ck, HIGH); Serial.begin(9600); } //----------------------------------- void led_bl()//LED 閃動 { int i; for(i=0; i<2; i++) { digitalWrite(led, HIGH); delay(150); digitalWrite(led, LOW); delay(150); } } //----------------------------------- void op(unsigned char c) //輸出語音合成控制碼 { unsigned char i,tb; while(1) // if(RDY==0) break; if( digitalRead(rdy)==0) break; digitalWrite(ck, 0); tb=0x80; for(i=0; i<8; i++) { // send data bit bit 7 first o/p if((c&tb)==tb) digitalWrite(sd, 1); else digitalWrite(sd, 0); tb>>=1; // clk low digitalWrite(ck, 0); delay(10); digitalWrite(ck, 1); } } /*-------------------------------------------------------------------*/ void say(unsigned char *c) //將字串內容輸出到語音合成模組 { unsigned char c1; do{ c1=*c; op(c1); c++; } while(*c!='\0'); } /*-----------------------*/ void reset()//重置語音合成模組 { digitalWrite(rst,0); delay(50); digitalWrite(rst, 1); } // 中文big5 內碼,內容:語音合成 unsigned char m0[]={0xbb, 0x79, 0xad,0xb5, 0xa6, 0x58, 0xa6,0xa8,0}; unsigned char m1[]="ARDUIC"; unsigned char m2[]="0123456789"; void loop()//主程式迴圈 { char k1c,c; reset(); led_bl(); say(m0); say(m1); //語音合成輸出 while(1) //無窮迴圈 { k1c=digitalRead(k1); //偵測按鍵有按鍵則語音合成輸出 if(k1c==0) { say(m1); say(m2); led_bl(); } if (Serial.available() > 0) //偵測串口有信號傳入,則語音合成輸出 { c= Serial.read(); //有信號傳入 if(c=='1') { say(m1); led_bl(); } if(c=='2') { say(m2); led_bl(); } } } }