BASIC4MCU | 질문게시판 | 답변 : 아두이노와 아트메가 동시에 사용할떄요
페이지 정보
작성자 master 작성일2018-06-04 00:03 조회9,816회 댓글1건
https://www.basic4mcu.com/bbs/board.php?bo_table=gac&wr_id=1400
본문
// MCU BASIC: https://www.basic4mcu.com// DateTime : 2018-06-03 오후 11:56:15// by Ok-Hyun Park//#include <Servo.h>//#include <SoftwareSerial.h>SoftwareSerial btSerial(4,5); //t,r//#include <Wire.h>#include <LiquidCrystal_I2C.h>LiquidCrystal_I2C lcd(0x3F,16,2);//#include "VoiceRecognitionV3.h"VR myVR(2,3);//byte buffer[1024];uint8_t records[7]; // save recorduint8_t buf[64];int tt=0;int Relay=6; //6번 릴레이//#define zero (0) // 멈춰줘#define one (1) // 전진해#define two (2) // 후진해#define three (3) // 좌회전#define onRecord (14) // 불켜줘#define offRecord (15) // 불꺼줘#define goldRecord (16) // 우회전//void printSignature(uint8_t *buf,int len){int i;for(i=0; i<len; i++){if(buf[i]>0x19&&buf[i]<0x7F){ Serial.write(buf[i]); }else { Serial.print("["); Serial.print(buf[i],HEX); Serial.print("]"); }}}//void printVR(uint8_t *buf){Serial.println("VR Index\tGroup\tRecordNum\tSignature");Serial.print(buf[2],DEC); Serial.print("\t\t");//if (buf[0]==0xFF){ Serial.print("NONE"); }else if(buf[0]& 0x80){ Serial.print("UG "); Serial.print(buf[0]&(~0x80),DEC); }else { Serial.print("SG "); Serial.print(buf[0],DEC); }//Serial.print("\t"); Serial.print(buf[1],DEC); Serial.print("\t\t");//if(buf[3]>0){ printSignature(buf+4,buf[3]); }else { Serial.print("NONE"); }//Serial.println("\r\n");}//void setup(){pinMode(Relay,OUTPUT); //릴레이모듈lcd.init(); lcd.backlight(); lcd.setCursor(3,0); lcd.print("0123456");Serial.begin(115200);btSerial.begin(9600);//myVR.begin(9600);if(myVR.clear()==0){ Serial.println("Recognizer cleared."); }else{Serial.println("Not find VoiceRecognitionModule.");Serial.println("Please check connection and restart Arduino.");while(1);}if(myVR.load((uint8_t)zero )>=0){ Serial.println("멈춰 "); }if(myVR.load((uint8_t)one )>=0){ Serial.println("전진 "); }if(myVR.load((uint8_t)two )>=0){ Serial.println("후진 "); }if(myVR.load((uint8_t)three )>=0){ Serial.println("좌회전"); }if(myVR.load((uint8_t)onRecord )>=0){ Serial.println("불켜 "); }if(myVR.load((uint8_t)offRecord )>=0){ Serial.println("불꺼 "); }if(myVR.load((uint8_t)goldRecord)>=0){ Serial.println("우회전"); }}//void loop(){if(Serial.available()){delay(5);while(Serial.available()){ btSerial.write(Serial.read()); }}int ret;ret=myVR.recognize(buf,50);if(ret>0){switch(buf[1]){case onRecord : lcd.clear(); lcd.setCursor(3,0); lcd.print("on led "); digitalWrite(Relay,HIGH); break;case offRecord : lcd.clear(); lcd.setCursor(3,0); lcd.print("off led"); digitalWrite(Relay,LOW ); break;case zero : lcd.clear(); lcd.setCursor(3,0); lcd.print("stop "); btSerial.write('0'); delay(10); break;case one : lcd.clear(); lcd.setCursor(3,0); lcd.print("go! "); btSerial.write('1'); delay(10); break;case two : lcd.clear(); lcd.setCursor(3,0); lcd.print("back "); btSerial.write('2'); delay(10); break;case three : lcd.clear(); lcd.setCursor(3,0); lcd.print("left "); btSerial.write('3'); delay(10); break;case goldRecord: lcd.clear(); lcd.setCursor(3,0); lcd.print("Right "); btSerial.write('4'); delay(10); break;default : Serial.println("Record function undefined"); break;}/**voice recognized*/printVR(buf);}Serial.println("000000000000");}http://www.makewith.co/page/manual/109
위 사이트 소스를 정리했습니다.
위 코드에서 LCD와 릴레이는 필요 없을테니 제거하고요
블루투스 TX로 출력을 내도록 수정해보죠
// MCU BASIC: https://www.basic4mcu.com// DateTime : 2018-06-04 오전 12:04:37// by Ok-Hyun Park//#include <Servo.h>//#include <SoftwareSerial.h>SoftwareSerial btSerial(4,5); //t,r//#include "VoiceRecognitionV3.h"VR myVR(2,3);//byte buffer[1024];uint8_t records[7]; // save recorduint8_t buf[64];int tt=0;//#define zero (0) // 멈춰줘#define one (1) // 전진해#define two (2) // 후진해#define three (3) // 좌회전#define onRecord (14) // 불켜줘#define offRecord (15) // 불꺼줘#define goldRecord (16) // 우회전//void printSignature(uint8_t *buf,int len){int i;for(i=0; i<len; i++){if(buf[i]>0x19&&buf[i]<0x7F){ Serial.write(buf[i]); }else { Serial.print("["); Serial.print(buf[i],HEX); Serial.print("]"); }}}//void printVR(uint8_t *buf){Serial.println("VR Index\tGroup\tRecordNum\tSignature");Serial.print(buf[2],DEC); Serial.print("\t\t");//if (buf[0]==0xFF){ Serial.print("NONE"); }else if(buf[0]& 0x80){ Serial.print("UG "); Serial.print(buf[0]&(~0x80),DEC); }else { Serial.print("SG "); Serial.print(buf[0],DEC); }//Serial.print("\t"); Serial.print(buf[1],DEC); Serial.print("\t\t");//if(buf[3]>0){ printSignature(buf+4,buf[3]); }else { Serial.print("NONE"); }//Serial.println("\r\n");}//void setup(){Serial.begin(115200);btSerial.begin(9600);//myVR.begin(9600);if(myVR.clear()==0){ Serial.println("Recognizer cleared."); }else{Serial.println("Not find VoiceRecognitionModule.");Serial.println("Please check connection and restart Arduino.");while(1);}if(myVR.load((uint8_t)zero )>=0){ Serial.println("멈춰 "); }if(myVR.load((uint8_t)one )>=0){ Serial.println("전진 "); }if(myVR.load((uint8_t)two )>=0){ Serial.println("후진 "); }if(myVR.load((uint8_t)three )>=0){ Serial.println("좌회전"); }if(myVR.load((uint8_t)onRecord )>=0){ Serial.println("불켜 "); }if(myVR.load((uint8_t)offRecord )>=0){ Serial.println("불꺼 "); }if(myVR.load((uint8_t)goldRecord)>=0){ Serial.println("우회전"); }}//void loop(){if(Serial.available()){while(Serial.available()){ btSerial.write(Serial.read()); }}//int ret;ret=myVR.recognize(buf,50);if(ret>0){switch(buf[1]){case onRecord : btSerial.write('0'); break;case offRecord : btSerial.write('1'); break;case zero : btSerial.write('2'); break;case one : btSerial.write('3'); break;case two : btSerial.write('4'); break;case three : btSerial.write('5'); break;case goldRecord: btSerial.write('6'); break;default : btSerial.write(0x0); break;}/**voice recognized*/printVR(buf);}Serial.println("000000000000");}
SoftwareSerial btSerial(4,5); //t,r아두이노 입장에서는 4번이 RX이고, 5번이 TX이므로
아두이노의 5번(TX)------(RX0)PE0 128
이렇게 연결하면 되겠습니다.
물론 GND도 연결해줘야합니다.
댓글 1
조회수 9,816허니님의 댓글
허니 작성일
와 진짜 이렇게 늦게까지 답변해주셔서 정말 감사합니다.
이제 시간도 얼마 없어서 포기할까 진지하게 생각했는데 정말 감사합니다.
덕분에 팀플 끝까지 포기하지 않겠습니다!