Adruino:传感器及步进电机

一、传感器*

1、温湿度传感器

        DHT11它采用专用的数字采集技术和温湿度传感器技术,包括一个电阻式感湿元件NTC测温元件,并与一个高性能的8位单片机连接。DATA端采用串行接口(单线双向)与微控制器进行同步和通信。

         DHT11的供电电压为3~5.5V。传感器上电后,要等待1s以越过不稳定状态,在此期间无需发送任何指令。电源引脚(VDD,GND)之间可增加一个100nF的电容,用于去耦滤波。

温湿度传感器模块接口:

        • VCC —电源引脚

        • GND —电源引脚

        • DATA  —数字引脚 

dht11类库函数

函数解释
DHT11.read(pin)

获取返回状态码

pin:与DATA端连接的引脚。

返回:0:OK  -1:Error -2:Timeout

DHT11.humidity湿度值
DHT11.temperature温度值

2、空间运动传感器

3、温度传感器

        DS18B20是常用的数字温度传感器,其输出的是数字信号,具有体积小,硬件开销低,抗干扰能力强,精度高的特点。测温范围 -55℃~+125℃,固有测温误差1℃。

        DS18B20采用单总线接口方式,在与微处理器连接时仅需要一条口线即可实现微处理器与DS18B20的双向通讯。

           单总线(One-Wire)采用单根信号线,实现数据的双向传输,具有节省I/O资源、结构简单、便于扩展和维护等特点。

二、电机

1、步进电机

步进电机是将电脉冲转化为角位移的执行元件。当步进电机驱动器接收到一个脉冲信号时,它就驱动步进电机按设定的方向转动一个固定的角度(即步距角。可以通过控制脉冲个数来控制角位移量,从而达到准确定位的目的,同时也可以通过控制脉冲频率来控制电机转动的速度和加速度,从而达到调速的目的。

 工作模式

 它的工作模式分为单四拍双四拍四相八拍三种工作模式。

 单四拍

正转绕组的通电顺序: A→B→C→D→A→… 。

反转绕组的通电顺序: D→C→B→A→D→… 。

双四拍

正转绕组的通电顺序: AB→BC →CD→DA→AB。

反转绕组的通电顺序: DA→CD →BC→AB→DA。

 四相八拍

正转绕组的通电顺序: A→AB→B→BC→C→CD→D→DA→A。

反转绕组的通电顺序: A→DA→D→CD→C→BC→B→AB→A。

2、直流电机

        直流电机将直流电能转换成机械能(直流电动机)的旋转电机。

        直流电机的调速方式:(1)改变电机两端的电压  (2)改变磁通量  (3)串联调节电阻。电压越大,转速越快,改变电压是调速常用办法,使用脉冲宽度调制PWM方法,输入不同占空量的方波,改变直流电机电枢两端的电压,即可改变直流电机转速,实现调速功能,可以实现无级调速。

        直流电机的换向方法:通过改变输入电压极性实现,即反转电源输入端的正负极连接方向。

 

3、舵机

三、超声波测距*

        HC-SR04是一种应用广泛的超声波测距模块,通过I/O接口给Trig端发测试信号,最少10us的高电平信号,模块会自动发送8个40kHz声波,并自动检测是否有声波返回。若有信号返回则通过Echo端输出高电平。(两次高电平的间隔时间*声音的速度)/2=距离。

HC-SR04类库函数

函数解释
SR04 sr04(echo,trig)类实例化。
sr04.Distance()读取测量距离,单位cm。

案例:

#include "SR04.h"		//添加库函数
#define TRIG_PIN 6		//定义引脚
#define ECHO_PIN 7		//定义引脚
SR04 sr04 = SR04(ECHO_PIN,TRIG_PIN);	//构造函数
long a;
void setup() {Serial.begin(9600);		//定义串口波特率Serial.println("Example written by Coloz From Arduin.CN");delay(1000);
}
void loop() {a=sr04.Distance(); 		//读取障碍物和SR04的距离Serial.print(a);      		//送串口监视器显示Serial.println("cm");delay(1000);
}

四、蜂鸣器

        蜂鸣器是一种一体化结构的电子讯响器,采用直流电压供电,广泛应用于计算机、打印机、复印机、报警器、电子玩具、汽车电子设备、电话机、定时器等电子产品中作 发声器件。

        有源蜂鸣器内部有振荡电路,能将恒定的直流电转化成一定频率的脉冲信号,一旦供电,蜂鸣器就会发出声音。    

        无源蜂鸣器内部不带震荡源,需要加方波信号PWM能够发声。频率不同,震荡出来的音调也不同。

int buzzer = 8;			//设置控制蜂鸣器的数字引脚 
void setup() { pinMode(buzzer,OUTPUT); 	//设置数字引脚为输出模式
} 
void loop() { unsigned char i, j;    		//定义变量 for(i=0; i<80; i++)  {    		//输出一个频率的声音 digitalWrite(buzzer,HIGH);  	//发声 delay(1);                       	//延时1ms digitalWrite(buzzer,LOW);  	//不发声 delay(1);      }                 	//延时1 ms for(j=0; j<100; j++) {         	//输出另一个频率的声音 digitalWrite(buzzer,HIGH);  	//发声 delay(2);                     		//延时2ms digitalWrite(buzzer,LOW); 	//不发声 delay(2); }                  		//延时2ms 
} 

五、SD卡读写模块

        SD卡支持两种总线方式:SD方式SPI方式。其中SD方式采用6线制,使用CLK、CMD、DAT0~DAT3进行数据通信(PC等设备使用)。而SPI方式采用4线制,使用CS、CLK、DataIn和DataOut进行数据通信。SD方式的数据传输速度比SPI方式要快,但采用单片机对SD卡进行读写时一般都采用SPI模式。

         Arduino的I/O接口输出5V高电平,SD卡的工作电压是3.3V故需要通过电平转换才可与Arduino连接,可以使用SD读写模块与Arduino连接。

 

引脚编号

SPI模式

名称

类型

描述

1

CS

I

片选

2

DI

I

数据输入

3

VSS1

S

电源地

4

VDD

S

电源

5

SCLK

I

时钟

6

VSS2

S

电源地

7

DO

O或PP

数据输出

8

X

9

X

SD卡类库函数

(1)name()

        功能:返回文件名。

        语法格式:file.name()。

        参数说明:file:File类的一个实例 ( SD.open()的返回值)。

        返回值:文件名。

(2)available()

        功能:检查文件的字节数,available()继承了流实用类。

        语法格式: file.available()。

        参数说明:file:File类的一个实例 ( SD.open()的返回值)。

        返回值:文件的字节数,int类型。 

(3)close()

        功能:关闭文件。

        语法格式:file.close()。

        参数说明:file:File类的一个实例 ( SD.open()的返回值)。

        返回值:无。

(4)flush()

        功能:确保写到文件里的字节存储到SD卡上。当文件关闭时,自动完成。

        语法格式:file.flush()。

        参数说明:file:File类的一个实例 ( SD.open()的返回值)。

        返回值:无。

(5)peek()

        功能:从文件中读取下一个字节,连续调用该函数将返回同一个值。peek()继承了流实用类。

        语法格式:file.peek()。

        参数说明:file:File类的一个实例 ( SD.open()的返回值)。

        返回值:下一个字节或字符,若无则返回-1。

(6)position()

        功能:获取文件的当前位置(将要读写的下一个字节的位置)。

        语法格式:file.position()。

        参数说明:file:File类的一个实例 ( SD.open()的返回值)。

        返回值:文件位置,unsigned long类型。

(7)print()

        功能:输出数据到以写方式打开的文件。按ASCII形式输出数字(例如:123按'1', '2', '3'输出)。

        语法格式:file.print(data) 和file.print(data, BASE)。

        参数说明:file:File类的一个实例 ( SD.open()的返回值)。 data:输出数据,char、 byte、 int、 long、或 string类型。 BASE (可选参数):输出数据的进制:BIN是二进制;DEC是十进制;OCT 是八进制;HEX是十六进制。

        返回值:byte:输出的字节数,读取该数据是可选操作

六、无线射频识别RFID模块

        射频识别技术通过无线电信号识别特定的目标并读写相关数据,常用的有低频30kHz~300kHz,高频3MHz~30MHz,超高频3GHz~30GHz等微波技术。RFID读写器有移动式和固定式两种。

        一套完整的RFID系统由阅读器(Reader)电子标签(TAG)也就是所谓的应答器(Transponder)及应用软件三个部分组成。

RFID的类库函数

函数解释
RFID rfid(SS,RST)类实例化对象。
rfid.isCard()寻卡。
rfid.readCardSerial()读取卡的串口信息,返回卡的4个字节和一个字节校验码序列号到字符数组serNum。
rfid.Init()初始化。
rfid.auth(authMode,BlockAddr,SectorKay,serNum)

验证卡片密码。

unsigned char auth:密钥验证模式

unsigned char* SectorKey:扇区密码

rfid.read(blockAddr,recvData)

读数据块。

unsigned char blockAddr:块地址

unsigned char* recvData:读出的数据块

rfid.write(blockAddr,writeData)

写数据快。

unsigned char blockAddr:块地址

unsigned char* writeData:写入16字节数据到块

rfid.selectTag(serNum)

选择卡片并读取卡的存储器容量。

unsigned char* serNum:卡的序列号。

rfid.Halt()命令卡片进入休眠状态。

七、继电器

         继电器(英文名称:relay)是电控制器件,是一种能把小信号(输入信号)转换成高电压大功率控制信号(输出信号)的一种“自动开关”。继电器能控制多个对象和回路,能控制远距离对象,故继电器在自动控制及远程控制领域有较广泛的应用。例如控制电灯、电冰箱、洗衣机、车库门等。按继电器的工作原理或结构特征分类,继电器可分为:电磁继电器固体继电器舌簧继电器和时间继电器等。按继电器的外形尺寸可分为:微型继电器超小型微型继电器小型继电器等。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/77299.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

高中数学联赛模拟试题精选第18套几何题

在 △ A B C \triangle ABC △ABC 中, A B < A C AB< AC AB<AC, 点 K K K, L L L, M M M 分别是边 B C BC BC, C A C A CA, A B AB AB 的中点. △ A B C \triangle ABC △ABC 的内切圆圆心为 I I I, 且与边 B C BC BC 相切于点 D D D. 直线 l l l 经过线段…

ubantu18.04(Hadoop3.1.3)之Spark安装和编程实践

说明&#xff1a;本文图片较多&#xff0c;耐心等待加载。&#xff08;建议用电脑&#xff09; 注意所有打开的文件都要记得保存。 第一步&#xff1a;准备工作 本文是在之前Hadoop搭建完集群环境后继续进行的&#xff0c;因此需要读者完成我之前教程的所有操作。 以下所有操…

DCDC芯片,boost升压电路设计,MT3608 芯片深度解析:从架构到设计的全维度技术手册

一、硬件架构解析:电流模式升压 converter 的核心设计 (一)电路拓扑与核心组件 MT3608 采用恒定频率峰值电流模式升压(Boost)转换器架构,核心由以下模块构成: 集成功率 MOSFET 内置 80mΩ 导通电阻的 N 沟道 MOSFET,漏极(Drain)对应引脚 SW,源极(Source)内部接…

Java 日志:掌握本地与网络日志技术

日志记录是软件开发中不可或缺的一部分&#xff0c;它为开发者提供了洞察应用程序行为、诊断问题和监控性能的手段。在 Java 生态系统中&#xff0c;日志框架如 Java Util Logging (JUL)、Log4j 和 Simple Logging Facade for Java (SLF4J) 提供了丰富的功能。然而&#xff0c;…

上位机知识篇---时钟分频

文章目录 前言 前言 本文简单介绍了一下时钟分频。时钟分频&#xff08;Clock Division&#xff09;是数字电路设计中常见的技术&#xff0c;用于将高频时钟信号转换为较低频率的时钟信号&#xff0c;以满足不同模块的时序需求。它在处理器、FPGA、SoC&#xff08;片上系统&am…

推荐几个免费提取音视频文案的工具(SRT格式、通义千问、飞书妙记、VideoCaptioner、AsrTools)

文章目录 1. 前言2. SRT格式2.1 SRT 格式的特点2.2 SRT 文件的组成2.3 SRT 文件示例 3. 通义千问3.1 官网3.2 上传音视频文件3.3 导出文案 4. 飞书妙记4.1 官网4.2 上传音视频文件4.3 导出文案4.4 缺点 5. VideoCaptioner5.1 GitHub地址5.2 下载5.2.1 通过GitHub下载5.2.2 通过…

Linux深度探索:进程管理与系统架构

1.冯诺依曼体系结构 我们常见的计算机&#xff0c;如笔记本。我们不常见的计算机&#xff0c;如服务器&#xff0c;大部分都遵守冯诺依曼体系。 截至目前&#xff0c;我们所认识的计算机&#xff0c;都是由⼀个个的硬件组件组成。 输入设备&#xff1a;键盘&#xff0c;鼠标…

观察者模式 (Observer Pattern)

观察者模式(Observer Pattern)是一种行为型设计模式。它定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。当主题对象的状态发生变化时,会自动通知所有观察者对象,使它们能够自动更新自己的状态。 一、基础 1. 意图 核心目的:定义对象间的一种一对…

Network.framework 的引入,不是为了取代 URLSession

Network.framework 的引入&#xff0c;不是为了取代 URLSession 如果你感觉 Network.framework 的引入, 可能是为了取代 URLSession, 那你就大错特错了&#xff01;这里需要非常准确地区分一下&#xff1a; &#x1f535; Network.framework 不是为了取代 URLSession。 &…

Redis 数据分片三大方案深度解析与 Java 实战

Redis 数据分片是将数据分散存储在多个 Redis 实例上的技术&#xff0c;以解决单个 Redis 实例在存储容量、性能和可用性上的限制。常见的 Redis 数据分片方案包括客户端分片、代理分片和Redis Cluster&#xff08;集群分片&#xff09;&#xff0c;以下为你详细介绍&#xff1…

FreeBSD可以不经过windows服务器访问windows机器上的共享文件吗?

答案是&#xff1a;当然可以&#xff01; 使用sharity-light 软件 可以使用sharity-light 软件&#xff0c;直接不用安装samba等软件&#xff0c;直接访问windows机器上的共享文件。 但是可惜的是&#xff0c;sharity-light在FreeBSD的ports里弃用了。看来是从FreeBSD 8 就开…

主流 LLM 部署框架

主流 LLM 部署框架 框架主要特点适用场景vLLM- 超快推理&#xff08;高吞吐&#xff09; - 动态批处理 - 支持 HuggingFace Transformer - 支持 PagedAttention高并发、低延迟在线推理TGI (Text Generation Inference)- Huggingface官方出品 - 多模型管理 - 支持动态量化 - 支持…

在 Vue 3 setup() 函数中使用 TypeScript 处理 null 和 undefined 的最佳实践

在 Vue 3 中使用 setup() 函数和 TypeScript 时&#xff0c;null 和 undefined 是两个需要特别关注的类型。虽然它们看起来都表示“没有值”&#xff0c;但它们在 JavaScript 和 TypeScript 中有着不同的含义和使用场景。如果不小心处理它们&#xff0c;可能会导致潜在的 bug 或…

在 UniApp 中获取当前页面地址

在 UniApp 中获取当前页面地址&#xff0c;可以通过以下步骤实现&#xff1a; 方法说明&#xff1a; 获取当前页面实例&#xff1a;使用 getCurrentPages() 获取页面栈数组&#xff0c;最后一个元素即为当前页面实例。 提取页面路径和参数&#xff1a;从页面实例的 route 属性…

【华为】防火墙双击热备-之-主备模式-单外网线路-分享

FW1和FW2的业务接口都工作在三层&#xff0c;上行连接二层交换机。上行交换机连接运营商的接入点&#xff0c;运营商为企业分配的IP地址为100.100.100.2。现在希望FW1和FW2以主备备份方式工作。正常情况下&#xff0c;流量通过FW1转发&#xff1b;当FW1出现故障时&#xff0c;流…

crossOriginLoading使用说明

1. 说明 此配置用于控制 Webpack 动态加载的代码块&#xff08;chunk&#xff09;&#xff08;例如代码分割或懒加载的模块&#xff09;在跨域&#xff08;不同域名&#xff09;加载时的行为。它通过为动态生成的 <script>标签添加 crossorigin 属性&#xff0c;确保符合…

windows中安装VMware Workstation Pro虚拟机和ubuntu

目录 一、安装 VMware Workstation Pro 虚拟机 1、官网下载VMware Workstation Pro 1.1 选中 "VMware Workstation Pro for PC" 的 "DOWNLOAD NOW" 1.2 跳转到broadcom登录页面 1.3 注册账号 1.4 输入给邮箱收到的验证码信息&#xff0c;然后点击”Verify…

如何快速轻松地恢复未保存的 Word 文档:简短指南

文字处理器已经存在了几十年&#xff0c;其中许多已经变得非常擅长防止问题。丢失未保存的数据是一个常见问题&#xff0c;因此办公软件通常带有恢复文件的方法。在本文中&#xff0c;我们将介绍如何恢复 Word 文档&#xff0c;即使您尚未保存它。 确保数据安全的最佳方法是保…

JavaScript原生实现简单虚拟列表(列表不定高)

本文首发在我的个人博客上&#xff1a;JavaScript原生实现简单虚拟列表(列表不定高)https://www.brandhuang.com/article/1745637125513 前言 之前实现了一个定高版本的虚拟列表&#xff0c;今天在定高版本的基础上稍作调整&#xff0c;来实现不定高版本&#xff0c;之前的版本…

redis数据类型-位域bitfield

redis数据类型-位域bitfield 文档 redis单机安装redis常用的五种数据类型redis数据类型-位图bitmapredis数据类型-基数统计HyperLogLogredis数据类型-地理空间GEOredis数据类型-流Stream 官方文档 官网操作命令指南页面&#xff1a;https://redis.io/docs/latest/commands/…