当前位置: 首页 > news >正文

Adruino:人机界面及接口技术

目录

零、按键接口技术

1、按键接口的控制方式*

​编辑

 2、模拟量按键接口*

一、红外遥控技术

0、红外编码*

1、工作原理

2、IRrecv类库函数

二、数码管显示器接口技术

1、工作原理*

2、静态显示控制技术

3、动态显示控制技术

三、LCD接口技术

1、基本介绍

2、LCD1602实物图:

3、LCD1602接口定义:

4、LCD1602类库函数*

四、语言识别技术*

 1、ld3320类库函数


零、按键接口技术

1、按键接口的控制方式*

 按键接口的控制方式有以下三种:

(1)随机方式:当Arduino空闲时执行按键扫描程序。

(2)中断方式:当有按键按下时通过或门产生中断请求,Arduino中断响应后执行按键扫描程序。

(3)定时方式:每隔一定时间执行一次按键扫描程序,定时时间由Arduino定时器完成。

 2、模拟量按键接口*

        模拟量按键是一种连接A/D转换器的方案,优点是只占1个模拟信号输入口,将开关信号转成模拟信号。当不同的按键被按下时,通过电阻分压, A/D转换的电压不同,通过A/D转换值便可以判断出是哪个按键被按下。一个有两种方案,一种是并联式,另一种是串联式。

 并联式:

        电路中的各个电阻值不相同,按下不同按键时,进入A0的模 拟量不同,通过A/D转 换,就可以判断出哪个键被按下。这种方式可以同时识别多个按键, 即只要电阻取得合适, 可以设置组合键。

串联式:

        按下不同按键时,进入A0的模拟量也不同,为方便计算,电阻值可以相等,但是不能有组合按键。因为当按下前面的按键后,后面所有按键都会被短路。

一、红外遥控技术

0、红外编码*

        在同一环境中,通常有多种红外遥控接收设备,这样就要求遥控器要按一定的编码传送,防止相互干扰,而编码则会由专用芯片或电路完成。发送端采用脉冲位置调制方式,将二进制数字信号调制成某一频率的脉冲序列,并驱动红外发射管光脉冲的形式发送出去。接收端对应于编码芯片通常会有相配对的解码芯片或采用软件解码。红外遥控器的编码格式通常由引导码(起始码)用户码数据码数据码反码组成,编码总共占32位。数据反码是数据码反相后的编码,用于对数据的纠错。

1、工作原理

        红外遥控器是一种无线发射装置,是利用波长为0.761.5um的近红外线来传输控制信号的遥控设备,其工作原理是通过现代的数字编码技术,将按键信息进行编码,通过红外线二极管发射光波,红外线接收器将收到的红外信号转变成电信号,处理器对该信号进行解码,解调出相应的指令,控制设备完成所需的动作。

图1 红外接收头结构

        GND接地,VCC接电源,OUT接数字引脚,引脚设置为输入。

2、IRrecv类库函数

        红外解码一般是32位的NEC红外协议。由8位按键值补码 8位按键值 8位地址补码 8位地址码组成。

函数解释
IRrecv irrecv(irRecePin)定义与红外接收头连接的Arduino引脚编号。
irrecv.decode()解码接收的IR消息,返回true or false。
irrecv.enableIRln()启动红外解码。

irrecv.disableIRIn()

关闭红外解码。
irrecv.resume()继续等待接受下一组信号。
irrecv.blink13(1/0)在红外处理中启用/禁用引脚13闪烁。

        关于获取按键编码数据通过IRData类,decode()会将解码结果存储在这个类里。以下是关于如何获取解码结果的函数。

        irrecv.decodedIRData.decodedRawData获取32位原始数据。

        irrecv.decodedIRData.protocol获取协议类型。

        irrecv.decodedIRData.address获取地址值。

        irrecv.decodedIRData.command获取命令值。

        irrecv.decodedIRData.numberOfBits获取接收到的位数。

案例:获取按键值

连接图

代码


#include<IRremote.h>
const int IRremotePin=9;
IRrecv irrecv(IRremotePin);void setup()
{Serial.begin(9600);irrecv.enableIRIn();
}void loop()
{if(irrecv.decode()){Serial.print("value:");Serial.println(irrecv.decodedIRData.decodedRawData,HEX);irrecv.resume();}delay(600);
}

二、数码管显示器接口技术

1、工作原理*

        8个发光二极管封装在一起组成的元件,当数码管中的某个二极管导通时,相应的一个字段便发光,不导通时择不发光。根据接法不同,数码管可以分为共阴极(8个发光二极管阴极并联连接阴极)和共阳极(8个发光二极管正极并联连接正极)。

图2 共阴极和共阳极

2、静态显示控制技术

        静态显示是占用一定数量的8位引脚接口来控制数码管的显示,优点:稳定亮度大,节约CPU资源, 静态显示是每一个数码管的段码都要独占具有锁存功能的输出口,控制器把要显示的字码送到输出口上。缺点:占用引脚接口多。

 

3、动态显示控制技术

        动态显示是将所有数码管对应的段选线并联在一起,由位选线控制是哪一位数码管有效,轮流向各位数码送出字形码和位选信号,使各位数码管按照一定顺序显示,数码管每隔一段时间(定时扫描)点亮一次,只要频率足够高,就能输出稳定的显示。优点:占用引脚接口少。缺点:消耗CPU资源。

图4 共阴极数码管动态态显示原理图 

三、LCD接口技术

1、基本介绍

        LCD液晶显示屏,它按显示技术分为4类,点阵式液晶屏(图像、字符、数字)、段码式液晶屏(字符、数字)、字符式液晶屏(字母、数字、符号)和TFT彩屏(彩色点阵图像)。这里着重介绍一下LCD1602液晶显示屏。

2、LCD1602实物图:

        LCD1602内部封装HD44780驱动控制零件,LCD屏,控制电路及背光调节电路等,主要特性:

        (1)可编程选择显示三种带光标的字形。一行宽5高8、二行宽5高8、一行宽5高10

          (2)   内含字形库CGROM。根据8位显示码DB7~DB0产生192个点阵字形。

        (3)内含128字节的RAM,其中80字节为显示DDRAM,可以存储80个字符显示码。

          (4) 内含64个字节的自定义字形CGRAM,可以暂存自建矩阵。

        (5)具有多种控制命令。

3、LCD1602接口定义:

Microsoft Word - 通用1602LCD使用手册.doc

4、LCD1602类库函数*

函数解释
LiquidCrystal lcd(rs,rw,enable,[d0,d1,d2,d3],d4,d5,d6,d7)类实例化。
lcd.begin(cols,rows)类初始化。1602是16列2行
lcd.clear()清除LCD屏幕内容。
lcd.home()光标定位屏幕左上角。
lcd.SetCursor(cols,rows)设定显示光标位置,从零开始计数。
lcd.write(data)向LCD写一个字符
lcd.print(data,[BASE])文本显示在LCD上,和串口打印类似。

lcd.cursor()

显示光标。
lcd.noCursor()隐藏光标。
lcd.blink()显示光标闪烁。
lcd.noBlink()隐藏光标闪烁。
lcd.display()打开液晶显示。
lcd.noDisplay()关闭液晶显示。
lcd.scrollDisplayLeft()向左边滚动一个字符。
lcd.scrollDisplayRight()向右边滚动一个字符。
lcd.autoscroll()自动滚动功能。
lcd.noAutoscroll()关闭自动滚动功能。
lcd.leftToRight()从左到右写入屏幕。
lcd.rightToLeft()从右到左写入屏幕。
lcd.createChar(num,data)创建用户自定义字符,总共只可创建8个。

详解:

  LiquidCrystal lcd(rs,rw,enable,[d0,d1,d2,d3],d4,d5,d6,d7) 

rs:与RS连接的引脚号

rw:与R/W连接引脚号

enable:与E使能连接引脚号

d0~d7:有四线和八线模式,使用四线默认是d4~d7.

如果rw接GND,则参数可以忽略。

lcd.createChar(num,data)

num:表示序号,如果为0,要写作byte(0)。

data:表示字符的像素数据

例如:苦脸数组

byte smile[8]={B00000,B10001,B10001,B00000,B00000,B01110,B10001,B00000,
}

四、语言识别技术*

        语音识别技术,其目标是将人的语音中的词汇内容转换为计算机可读的输入,让机器通过识别和理解过程把语音信号转变为相应的文本或命令。非特定人语音识别,可以满足不同人的语音识别要求,适合广泛人群应用,如智能家居、互动机器人等。        

        LD3320芯片是一款语音识别专用芯片,可以实现语音识别功能,识别的关键词语列表是可以任意动态编辑的。每次识别最多可以设置50项候选识别句,每个识别句可以是单字、词组或短句,长度为不超过10个汉字或者79个字节的拼音串。

 1、ld3320类库函数

(1)VoiceRecognition 

        功能:构造函数

        语法格式:VoiceRecognition Voice。

        参数说明:无。

        返回值:无。

(2)start()

        功能:开始识别。各参数按默认值设定。

        语法格式:voice.start()。

        参数说明:无。

(3)addCommand()

        功能:添加识别命令和指令编号。

        语法格式:voice.addCommand(char *pass, int num)。

        参数说明:pass:指令内容, num:指令编号。

        返回值:无。

(4)int read()

        功能:读取识别结果。

        语法格式:voice. read()。

        参数说明:无。

        返回值:指令编号。

案例:

#include <ld3320.h>
VoiceRecognition Voice; 		  //声明一个语音识别对象
#define Led 8 			  //定义LED控制引脚
void setup(){pinMode(Led, OUTPUT); 		  //初始化LED引脚为输出模式digitalWrite(Led, LOW); 		  //LED引脚低电平Voice.init(); 				  //初始化模块Voice.addCommand("kai deng", 0); //添加指令,序号Voice.addCommand("guan deng", 1);  Voice.start();	
}		  //开始识别void loop() {switch (Voice.read()) {		  //判断识别case 0: 				  //若是指令“kai deng”digitalWrite(Led, HIGH); break;  //点亮LEDcase 1: 				  //若是指令“guan deng”digitalWrite(Led, LOW);  break;  //熄灭LEDdefault:  break;}   
}

相关文章:

  • 【数据结构与算法】从完全二叉树到堆再到优先队列
  • 【Redis——通用命令】
  • 【Linux应用】交叉编译环境配置,以及最简单粗暴的环境移植(直接从目标板上复制)
  • goweb-signup注册功能实现
  • xVerify:推理模型评估的革新利器,重塑LLM答案验证格局?
  • 《TCP/IP详解 卷1:协议》之第七、八章:Ping Traceroute
  • 【Web应用服务器_Tomcat】二、Tomcat 核心配置与集群搭建
  • 【高频考点精讲】第三方库安全审计:如何避免引入带漏洞的npm包
  • 机器学习之一:机械式学习
  • CentOS 如何使用截图工具截取命令行操作的图片?
  • 计算机网络 | 应用层(1)--应用层协议原理
  • 数据结构和算法(八)--2-3查找树
  • 【学习笔记】Stata
  • hot100—5.盛水最多的容器
  • 一些常见的资源池管理、分布式管理和负载均衡的监控工具
  • 物联网安全运营概览
  • Spring Boot 应用运行指南
  • C++武功秘籍 | 入门知识点
  • day7 python针对心脏病数据集预处理
  • 可靠传输的守护者:揭开计算机网络传输层的奥秘
  • 顺利撤离空间站,神十九乘组踏上回家之旅
  • 新开发银行如何开启第二个“金色十年”?
  • 新经济与法|如何治理网购刷单与控评?数据合规管理是关键
  • 早睡1小时,变化有多惊人?第一个就没想到
  • 吉林省公安厅出入境管理总队政委明志全已任省安保集团总经理
  • 马上评|“AI神医宇宙”欺诈,连演员都不请了