arduino入门学习实现语音控制LED灯

摘要:
需要的准备的硬件arduino+PC+麦克风实现语音命令控制LED灯的亮灭。pinMode;//设置数字10口为输出接口,Arduino上我们用到的I/O口都要进行类似这样的定义。}voidloop(){val=Serial.read();//读取PC机发送给Arduino的指令或字符,并将该指令或字符赋给valif//判断接收到的指令或字符是否是“R”。{//如果接收到的是“R”字符digitalWrite;//点亮数字10口LED。delay;digitalWrite;//熄灭数字10口LEDdelay;Serial.println;//显示“SLed!”字符串}}上面单片机接受的主要是字符O代表open打开的意思,C代表Close关闭,S代表LED闪烁。

需要的准备的硬件arduino+PC+麦克风实现语音命令控制LED灯的亮灭。

arduino入门学习实现语音控制LED灯第1张

首先需要将写好的arduino程序烧录到arduino uno主板中,下面是代码如下:

int val;//定义变量val
int ledpin=10;//定义数字接口13
void setup()
{
Serial.begin(9600);//设置波特率为9600,这里要跟软件设置相一致。当接入特定设备(如:蓝牙)时,我们也要跟其他设备的波特率达到一致。
pinMode(ledpin,OUTPUT);//设置数字10 口为输出接口,Arduino 上我们用到的I/O 口都要进行类似这样的定义。
}
void loop()
{
val=Serial.read();//读取PC 机发送给Arduino 的指令或字符,并将该指令或字符赋给val

if(val=='O')//判断接收到的指令或字符是否是“R”。
{//如果接收到的是“R”字符
digitalWrite(ledpin,HIGH);//点亮数字10 口LED。
delay(500);
Serial.println("Open Led");//显示“Open Led!”字符串
}
if(val=='C')
{
 digitalWrite(ledpin,LOW);//熄灭数字10 口LED
 delay(500);
 Serial.println("Close Led");//显示“Open Led!”字符串
}
if(val=='S')
{
digitalWrite(ledpin,HIGH);//点亮数字10 口LED。
delay(1000);
 digitalWrite(ledpin,LOW);//熄灭数字10 口LED
 delay(1000);
 Serial.println("S Led");//显示“S Led!”字符串
}
}

上面单片机接受的主要是字符O代表open打开的意思,C代表Close关闭,S代表LED闪烁。把程序烧录到主板后,下面我们就可以通过串口通讯就可以使计算机与单片机进行通讯了。

串口通讯代码如下:

SerialPort _serialPort;
        voidInit()
        {
            _serialPort = newSerialPort();
            _serialPort.PortName = "COM3";
            _serialPort.BaudRate = 9600;
            _serialPort.Open();
         
        }

语音识别模块网上很多大家可以搜索一下这里我用的就是win7自带的语音识别主要用到的

private SpeechLib.ISpeechRecoGrammar isrg;
private SpeechLib.SpSharedRecoContextClass ssrContex = null;

整体思路就是:将声音识别出text,然后根据自己喜欢的话语来当作命令,通过串口将命令发送给单片机,单片机接线也在图片上体现了,如果大家想控制家里的电灯的话还得需要继电器进行电压和电流转换。

免责声明:文章转载自《arduino入门学习实现语音控制LED灯》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇jquery控制Request Payload和Form Data【单片机】【PIC16F1937】之定时器下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

字符串右移

编写一个函数,要求输入一个字符串和要移动的位数n,使得该字符串能向右移动n位,输出移动后的字符串。例如:tomloveslily移动2位得lytomlovesli。 思路:把字符串变成两部分,交换位置,实际操作先把后n个字符保存起来,将strlen-n个字符往后移动n个位置,最后把n个字符放在前面(C语言) void right_move(char* st...

178.vim 可视化模式(visual模式)

为了便于选取文本,VIM 引入了可视(Visual)模式。 可以使用以下三种模式: 用 v 命令进入的字符可视化模式(Characterwise visual mode)。文本选择是以字符为单位的。 用 V 命令进入的行可视化模式(Linewise visual mode)。文本选择是以行为单位的。 用 ctrl-V 进入的块可视化模式(Blockwise...

Shell脚本之sed详解

在编写shell脚本的过程中,我们经常需要使用sed流编辑器和awk对文本文件进行处理。 一、什么是sed?     sed 是一种在线编辑器,它一次处理一行内容。sed是非交互式的编辑器。它不会修改文件,除非使用shell重定向来保存结果。默认情况下,所有的输出行都被打印到屏幕上。   二、sed的处理过程     sed编辑器逐行处理文件(或输入...

QString和string互转中文字符

string -> QString 1 std::string strStd = "可可西";2 QString strQ = QString::fromLocal8Bit(strStd.c_str()); QString -> string 1 QString strQ("可可西");2 std::string strStd= strQ...

Modbus通讯两种传输方式

控制器能设置为两种传输模式(ASCII或RTU)中的任何一种在标准的Modbus网络通信。用户选择想要的模式,包括串口通信参数(波特率、校验方式等),在配置每个控制器的时候,在一个Modbus网络上的所有设备都必须选择相同的传输模式和串口参数。 ASCII模式: : 地址 功能代码 数据数量 数据1 ... 数据n LRC高字节 LRC低字节 回车 换行...

crnn转换数据集

在做crnn实验的时候数据的格式是一张图片对应一个标签,比如说 图片名称 1.jpg 内容是 你好呀 那么你的标签就应该是 1.txt 在网上找了一个数据集 https://github.com/YCG09/chinese_ocr 数据集下载地址 数据集:https://pan.baidu.com/s/1QkI7kjah8SPHwOQ40rS1Pw (密码...