BASIC4MCU | 질문게시판 | 음성인식 아두이노 프로그램 질문
페이지 정보
작성자 master 작성일2018-09-10 09:30 조회10,045회 댓글0건본문
저가 아두이노와 음성인식모듈 voice recognition v3 을 사용하고 있는데 2개의 led를 음성인식으로 좌, 우를 on하는 것은 되는데 여기서 led를 off하는 것과, led 두개가 점멸하는 기능을 추가하고 싶습니다.
어떤 소스를 더 추가해야 하나요? 졸업작품으로 사용하는 거라 급합니다. 내공 1000겁니다.
빠른 답변 부탁드립니다.
/**
******************************************************************************
* @file vr_sample_control_led.ino
* @author JiapengLi
* @brief This file provides a demostration on
how to control led by using VoiceRecognitionModule
******************************************************************************
* @note:
voice control led
******************************************************************************
* @section HISTORY
2013/06/13 Initial version.
*/
#include <SoftwareSerial.h>
#include "VoiceRecognitionV3.h"/**
Connection
Arduino VoiceRecognitionModule
2 -------> TX
3 -------> RX
*/
VR myVR(2,3); // 2:RX 3:TX, you can choose your favourite pins.uint8_t records[7]; // save record
uint8_t buf[64];int led_left = 13;
int led_right = 10;
int flgToggle = 0;
#define LEFT_ON (0)
#define RIGHT_ON (1)
#define OFF (2)
#define TOLLGE_ON (3)
/**
@brief Print signature, if the character is invisible,
print hexible value instead.
@param buf --> command length
len --> number of parameters
*/
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("]");
}
}
}/**
@brief Print signature, if the character is invisible,
print hexible value instead.
@param buf --> VR module return value when voice is recognized.
buf[0] --> Group mode(FF: None Group, 0x8n: User, 0x0n:System
buf[1] --> number of record which is recognized.
buf[2] --> Recognizer index(position) value of the recognized record.
buf[3] --> Signature length
buf[4]~buf[n] --> Signature
*/
void printVR(uint8_t *buf)
{
Serial.println("VR Index\tGroup\tRecordNum\tSignature");Serial.print(buf[3], 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[4]);
}
else{
Serial.print("NONE");
}
Serial.println("\r\n");
}void setup()
{
/** initialize */
myVR.begin(9600);
Serial.begin(115200);
Serial.println("Elechouse Voice Recognition V3 Module\r\nControl LED sample");
pinMode(13, OUTPUT);
pinMode(10, OUTPUT);
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)LEFT_ON) >= 0){
Serial.println("onRecord loaded");
}
if(myVR.load((uint8_t)RIGHT_ON) >= 0){
Serial.println("offRecord loaded");
}
}void loop()
{
int ret;
ret = myVR.recognize(buf, 50);
if(ret>0){
switch(buf[1]){
case LEFT_ON:
/** turn on LED */
digitalWrite(led_left, HIGH);
digitalWrite(led_right, LOW);
break;
case RIGHT_ON:
/** turn off LED*/
digitalWrite(led_left, LOW);
digitalWrite(led_right, HIGH);
break;case OFF:
digitalWrite(led_left, LOW);
digitalWrite(led_right, LOW);
break;case TOLLGE_ON:
if(flgToggle == 1){
digitalWrite(led_left, HIGH);
digitalWrite(led_right, HIGH);
}
else{
digitalWrite(led_left, LOW);
digitalWrite(led_right, LOW);
}
break;
default:
Serial.println("Record function undefined");
break;
}
/** voice recognized */
printVR(buf);
}
}//
// MCU BASIC: https://www.basic4mcu.com// DateTime : 2018-08-29 오전 11:50:29// by Ok-Hyun Park///*********************************************************************************@file vr_sample_control_led.ino*@author JiapengLi*@brief This file provides a demostration onhow to control led by using VoiceRecognitionModule*******************************************************************************@note:voice control led*******************************************************************************@section HISTORY2013/06/13 Initial version.*/#include <SoftwareSerial.h>#include "VoiceRecognitionV3.h"/**ConnectionArduino VoiceRecognitionModule2------->TX3------->RX*/VR myVR(2,3); // 2: RX 3: TX,you can choose your favourite pins.uint8_t records[7]; // save recorduint8_t buf[64];int led_left=13;int led_right=10;int flgToggle=0;#define LEFT_ON (0)#define RIGHT_ON (1)#define OFF (2)#define TOLLGE_ON (3)/**@brief Print signature,if the character is invisible,print hexible value instead.@param buf-->command lengthlen-->number of parameters*/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("]"); }}}/**@brief Print signature,if the character is invisible, print hexible value instead.@param buf-->VR module return value when voice is recognized.buf[0]-->Group mode(FF: None Group,0x8n: User,0x0n: Systembuf[1]-->number of record which is recognized.buf[2]-->Recognizer index(position)value of the recognized record.buf[3]-->Signature lengthbuf[4]~buf[n]-->Signature*///void printVR(uint8_t*buf){Serial.println("VR Index\tGroup\tRecordNum\tSignature");Serial.print(buf[3],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[4]); } else{ Serial.print("NONE"); }Serial.println("\r\n");}//void setup(){myVR.begin(9600);Serial.begin(115200);Serial.println("Elechouse Voice Recognition V3 Module\r\nControl LED sample");pinMode(13,OUTPUT);pinMode(10,OUTPUT);//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)LEFT_ON )>=0){ Serial.println("onRecord loaded" ); }if(myVR.load((uint8_t)RIGHT_ON)>=0){ Serial.println("offRecord loaded"); }}//int mode=OFF,cnt=0;//void loop(){int ret;ret=myVR.recognize(buf,50);if(ret>0){switch(buf[1]){case LEFT_ON : mode=LEFT_ON; break; /**turn on LED*/case RIGHT_ON : mode=RIGHT_ON; break; /**turn off LED*/case OFF : mode=OFF; break;case TOLLGE_ON: mode=TOLLGE_ON; break;default : Serial.println("Record function undefined"); break;}printVR(buf);}//if(mode==LEFT_ON ){ digitalWrite(led_left,HIGH); digitalWrite(led_right,LOW ); } /**turn on LED*/if(mode==RIGHT_ON ){ digitalWrite(led_left,LOW ); digitalWrite(led_right,HIGH); } /**turn off LED*/if(mode==OFF ){ digitalWrite(led_left,LOW ); digitalWrite(led_right,LOW ); }if(mode==TOLLGE_ON){if(++cnt>10){ cnt=0; flgToggle^=1;if(flgToggle){ digitalWrite(led_left,HIGH); digitalWrite(led_right,HIGH); }else { digitalWrite(led_left,LOW ); digitalWrite(led_right,LOW ); }}}}
#define LEFT_ON (0)#define RIGHT_ON (1)#define OFF (2)#define TOLLGE_ON (3)switch(buf[1]){case LEFT_ON : mode=LEFT_ON; break; /**turn on LED*/case RIGHT_ON : mode=RIGHT_ON; break; /**turn off LED*/case OFF : mode=OFF; break;case TOLLGE_ON: mode=TOLLGE_ON; break;default : Serial.println("Record function undefined"); break;}소스에는 이미 다 구현되어 있는데 동작을 하지 않고 있나요?
토글 동작은 문제가 있어서 수정했습니다.
댓글 0
조회수 10,045등록된 댓글이 없습니다.