Arduino与Matlab的串口通讯:通过光敏电阻进行人数统计,以及改进:人物方向的判断并进行加减。
实验内容:
Arduino
int sensorReading = 0;
int data = 0;
int s = 0;
int a = 0;
int b = 0;
void setup() {Serial.begin(9600);
}
void loop() {int sensorReading = analogRead(A0); %从A0读取光敏电阻的数值if(sensorReading>950){data = HIGH; %当数值大于950,将data置1}else{data = LOW; %否则将data置0}if(data==1){ %当data置1时(即产生上升沿),用a来记录delay(500); %消抖动if(data==1){a = 1;}}%当data置0时,a为1时(即产生下降沿),代表经过一个人if(a==1&&data==0){ delay(500);if(a==1&&data==0){ s++;a=0;}}Serial.println(s); %输出从程序开始时到当前经过的人数
}
Matlab
clc
clear
s = serial('COM5'); %定义串口对象
set(s,'BaudRate',9600); %设置波特率s
fopen(s); %打开串口对象sinterval = 10000;
passo = 1;
t = 1;
y = 0;
while(t<interval)b = str2num(fgetl(s)); %用函数fget(s)从缓冲区读取串口数据。y = [y,b];
t = t+passo;
pause(1); %每1s进行一次数据读取,因为周期太长实验中没有这一行
end
fclose(s); %打开串口对象s
x=0.02:0.01:100; %关闭串口对象s
plot(x,y,'*'); %输出图像
实验改进:
Arduino
int L1 = 0;
int L2 = 0;
int data = 0;
int mata = 0;
int s = 0;
int a = 0;
int b = 0;
void setup() {Serial.begin(9600);
}
void loop() {int L1 = analogRead(A0); %从A0读取光敏电阻的数值int L2 = analogRead(A5); %从A5读取光敏电阻的数值if(L1>950&&L2<950){ %当A0被遮住且A5没有被遮住记为进入data = HIGH;}else{data = LOW;}if(data==1){ %当data置1时(即产生上升沿),用a来记录delay(500);if(data==1){a = 1;}}%当data置0时,a为1时(即产生下降沿),代表有一个人进入if(a==1&&data==0){delay(500);if(a==1&&data==0){ s++;a=0;}}if(L2>950&&L1<950){ %当A5被遮住且A0没有被遮住记为进入mata = HIGH;}else{mata = LOW;}if(mata==1){ %当mata置1时(即产生上升沿),用b来记录delay(500);if(mata==1){b = 1;}}%当mata置0时,b为1时(即产生下降沿),代表有一个人离开if(b==1&&mata==0){delay(500);if(b==1&&mata==0){ s--;b=0;}}Serial.println(s);
}Matlab
clc
clear
s = serial('COM5'); %定义串口对象
set(s,'BaudRate',9600); %设置波特率s
fopen(s); %打开串口对象sinterval = 10000;
passo = 1;
t = 1;
y = 0;
while(t<interval)b = str2num(fgetl(s)); %用函数fget(s)从缓冲区读取串口数据。y = [y,b];
t = t+passo;
pause(1); %每1s进行一次数据读取,因为周期太长实验中没有这一行
end
fclose(s); %关闭串口对象s
x=0.02:0.01:100;
plot(x,y,'*'); %输出图像
Arduino与Matlab的串口通讯:通过光敏电阻进行人数统计,以及改进:人物方向的判断并进行加减。相关推荐
- MATLAB实现串口通讯的详细步骤
由于MATLAB中提供了仪表仪器通信的功能,所以MATLAB可以用来实现串口通信. 1.要实现串口通信,第一步必须要创建一个串口对象,MATLAB中提供了serial函数来创建一个串口对象.具体用法为 ...
- Matlab使用串口通讯
(1)Matlab 串口通讯官网资料,里面很详尽的介绍了MATLAB中串口相关函数 https://cn.mathworks.com/help/instrument/serial-port-inter ...
- LYL程序员小白的理解之简单易懂的Arduino的串口通讯
简单易懂的Arduino的串口通讯 自白 启动串口通讯 判断串口接收数据的语句 实践 一个三位数整数 三个三位数整数 自白 我是一名大四应届生,第一次写这个博客,可能很多地方写的不是那么好,也有可能有 ...
- Matlab通过串口与下位机通讯
最近用Matlab通过串口与STM32单片机通讯.Matlab在2019b版本以后,要用serialport串口函数集替换掉原有的serial串口函数集.Matlab的serialport串口工具说明 ...
- (3)arduino完成两个HC-05蓝牙模块间的配对,实现简单的无线串口通讯
(3)arduino完成两个HC-05蓝牙模块间的配对,实现简单的无线串口通讯 一.准备工作 二.蓝牙配置 1.从模块配置 (1)接线 (2)进入AT模式 (3)打开串口进行配置 2.主模块配置 (1 ...
- Arduino 串口通讯参考笔记 - Serial 类库及相关函数介绍
@TOArduino 串口通讯参考笔记 - Serial 类库及相关函数介绍 C 声明: 本ID发布的所有文章及随笔均为原创,可随意转载,单转载文章必须注明作者 saner686 及包含原文出处地址 ...
- Arduino UNO + Proteus串口通讯仿真实验
Arduino UNO + Proteus串口通讯仿真实验 准备工作 需要借助虚拟串口软件(Virtual Serial Port Driver),创建2个虚拟串口 具体软件下载和教程:http:// ...
- Arduino:串口通讯
一.硬件串口 在PC机上最常见的串行通讯协议是RS-232串行协议,而各种微控制器(单片机)上采用的是TTL串行协议,两者电平不同,需要经过相应电平转换才能进行相互通讯. Arduino Uno R3 ...
- mpu6050 arduino串口 通讯在ros下的可视化实验
瞎忙好几天,草草做个总结,贴上混乱代码一堆 涉及内容如下 dmp iic mpu6050的通讯 获取加速度 角速度 二者结合求出角姿势 四元数,发送到计算机. 串口协议编写解析 ros发布位姿里程数 ...
最新文章
- spring获取上下文的方式
- java项目的逻辑结构
- C语言指针(个人的认识)
- (十)装饰器模式详解(与IO不解的情缘)
- 了解这些设计原则,助你打造最佳用户体验
- 日志插件 log4net 的使用
- Semantic-UI的React实现(二):CSS类构造模块
- PL/SQL之JOB用法 (定时跑数据)
- 你真的了解JAVA的形参和实参吗?
- 使用Div自动换行一事
- 弦图(Chordal Graph)学习小记
- Idea 破解版下载指南
- Linux常用命令精讲
- error:R3InjectorError(AppModule)[HttpClient -> HttpClient -> HttpClient]:
- OpenJDK源码赏析之四(jli_util中的工具函数)
- 百度离线地图APIV2.0
- 男人哭了,是因为他真的爱了
- unity GetComponent使用
- 1.1到底什么是云计算
- 正态分布的前世今生 (上)
热门文章
- InDesign 教程如何制作明信片?
- 求助-强化学习基础-K-摇臂老虎机Python
- C++:从入门到放弃[3]计算
- 谁痛苦谁改变 落到谷底时,唯一的出口就是向上
- 信息发布类网站后台界面设计一点思考(整体布局)
- php 解析mpp 格式文件
- 单细胞测序流程(九)单细胞的GO圈图
- java递归获取树结构的指定层级、指定层级之上(向上递归(包含父集所有、爷爷集所有...)(父集单独、爷爷集单独...))、指定层级之下所有的(子集、孙子集...)和list集合转Tree树结构
- 房贷等额本金和等额本息有什么区别,为何很多人傻傻分不清?
- COVID-19席卷全球,看看GIS建模可视化能做些什么