Arduino与Matlab的串口通讯:通过光敏电阻进行人数统计,以及改进:人物方向的判断并进行加减。

MATLAB和Arduino实现串口通信【无需安装支持包】 MATLAB和Arduino实现串口通信 阅读详情
实验内容:
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);  				    %打开串口对象s
 
interval = 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);  				    %打开串口对象s
 
interval = 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 控制 Arduino 上的数字输入?这是hello world~ MATLAB 和 Arduino 之间的通信。该通信将用于切换 Arduino UNO 中数字输出的状态。这是一种非常通用的方法,适用于同一系列的其他微控制器。Arduino UNO 只有一个用于串行通信的端口。 阅读详情

相关推荐

MATLAB与RDuino异步数据处理项目实战

本文还有配套的精品资源,点击获取 简介:本文将介绍如何利用MATLAB开发工具包与Arduino硬件交互,特别是针对定制的RDuino平台。涵盖MATLAB与Arduino的集成、并行计算优化和异步数据处理等关键概念。我们将详细探讨如何设置MATLAB与Arduino的通信,以及如何运用MATLAB并行计算能力来处理来自多个传感器(例如Sharp红外传感器)的数据。此外,将...

weixin_36296444的博客 1047

Matlab与Arduino连接(一):MATLAB与Arduino的串口通信

1、arduino自身的串口测试典例 用arduino自身带的串口串口来进行测试,以及LED灯(pin13)来做测试,代码如下所示: int led = 13; char string; float angle_1; float angle_2; void setup() { Serial.begin(9600); Serial.println("Led blink-blink"); // 打印名字 pinMode(led,OUTPUT); } void loop() { if(Seria

qq_40969179的博客 7072

matlab开发-使用光敏电阻和DMATLAB创建运动检测器

matlab开发-使用光敏电阻和DMATLAB创建运动检测器。获取光敏电阻测量值并探索运动检测算法

Matlab和Arduino相互连接

转载于https://www.arduino.cn/thread-21677-1-1.html 一个是什么都能算的数学软件。一个是很火的开源硬件平台。两者连起来玩也是很爽的。 特别是现在Matlab出了Arduino支援套件以后,玩起来比以往的串口通信简单多了。 Matlab和Arduino的“联姻”方式总共有下面四种。 第一种 Matlab Arduino Support package(Arduino作为执行机) 第二种 Simulink Arduino Support package(用simuli

lihe的博客 1万+

音视频从入门到精通——指数哥伦布码原理

在计算机中,一般数字的编码都为二进制,但是由于以相等长度来记录不同数字,因此会出现很多的。

mirana的专栏 1381

自适应粒子群优化(Adaptive Particle Swarm Optimization,APSO

下面是一个关于自适应粒子群优化(Adaptive Particle Swarm Optimization,APSO)的博客,希望可以帮助您。提示:以下是本篇文章正文内容,下面案例可供参考在上面的代码中,表示粒子的数量,表示解空间的维度,表示迭代次数,表示优化的目标函数。在__init__方法中,我们初始化了粒子群的位置和速度,并将每个粒子的位置作为其最优解,将其适应度值初始化为正无穷。我们还初始化了学习因子和惯性权重的参数。在run方法中,我们迭代了次,计算每个粒子的适应度值和最优解。

weixin_52026057的博客 9916

【Arduino步进电机】【101】matlab读取arduino端口数据并绘图

无需安装支持包,代码可直接使用。

RickyWasYoung的博客 870

STM32驱动电磁阀电路设计:从光耦选型到MOSFET驱动的实战解析

本文深入解析了STM32驱动24V电磁阀的完整电路设计,重点探讨了光耦选型与MOSFET驱动两大核心环节。针对电平转换与电气隔离需求,详细对比了EL357N与TLP2310等光耦在CTR、速度及耐压等关键参数上的差异与应用场景。同时,文章提供了MOSFET关键参数解读、驱动电路优化方案(如推挽驱动)以及完整的PCB布局、电源处理与调试避坑指南,旨在帮助工程师构建稳定可靠的工业控制电路。

weixin_29184371的博客 234

Matlab和Arduino的连接(四):在matlab中串口通信发送相关信息至arduino(记录用)

利用matlab的串口将信息发送到arduino端,并根据信息内容执行相应的程序。例如,matlab发送字符‘ssP’,arduino收到P时开始执行(相当于截止字符),提取字符串“ssP”的第一位,如果kk=第一位==‘s’,则开始闪烁灯。 matlab代码 clear;clc; delete(instrfind({'Port'},{'COM6'}));%断开,释放串口对象占用空间 global s;%建立全局变量s s = serial('COM6','BaudRate',9600,'DataBits'

qq_40969179的博客 3799

SAP中错记虚拟利润中心的调整,冲销处理实例

我非CO专业顾问。工作中遇到的问题,也会找资料,分析,测试。有时这个过程会拿到结果,解决问题。遂将过程记录下来备查。读者请谨慎参考!EC-PCA: 利润中心记账流程_9ke0-优快云博客。

专注SAP应用技术文章写作,致力于拉近用户与系统间的距离; 1796

图论:Dijkstra算法——最详细的分析,图文并茂,一次看懂!

Dijstra算法

普罗米修斯的博客 18万+

arduino读取matlab数据,matlab 怎样读取 arduino 数据?

//ledint ledPin = 13;int button = 8;int Num = 0;//Timeint sec = 0;int minuti = 0;int hour = 0;//GRSfloat Res_people = 0;float Voltage_adc = 0;int grsSensor = A0;int gsrVal = 0;int gsr_1=0;float Vcc=5;...

weixin_29247219的博客 1057

OpenCV学习笔记(25)基于MFC和OpenCV的摄像机定标与立体匹配测试程序(20140505更新)

最近整理了一下这两年一直在用的摄像机定标与立体匹配测试程序,将代码进行了重构,界面也做了调整,分享出来方便有需要的朋友使用。当然我的编程能力有限,程序可能还有各种bug,请大家多多包涵。相关问题欢迎留言或email联系讨论,谢谢! ==================================================================================源码

晨宇思远 5万+

MATLAB拨号识别arduino,使用Matlab串口命令与Arduino进行交互

Interacting with an Arduino Using the Matlab Serial CommandsUsing information from Matlab central, Robot Grrl, and the Arduino forums, four files (two .m and two sketches) demonstrate two way communic...

weixin_39930252的博客 245

am62x A53与R5F通信

AM62x是Ti的一款异构多核芯片。remoteproc驱动,硬编码(写死)了R5F/M4F固件的名字,这样驱动启动时,就会找硬件编码的固件,下面是其对应关系。值得注意的是,linux内核中的M4F remoteproc驱动启动M4F,而linux内核中的R5F remoreteproc驱动不启动R5F,相反,它attach到已经在boot阶段启动的R5F固件上。在/lib/firmware的真实固件名:,而我们生成的固件名如下所示,没有直接对应的,经确认,.out文件就是我们需要的,重命名后即可。

鹰之翔 1361

【RT-DETR有效改进】计算训练好权重文件对应的FPS、推理每张图片的平均时间(科研必备)

本文给大家带来的改进机制是利用我们训练好的权重文件计算FPS,同时打印每张图片所利用的平均时间,模型大小(以MB为单位),同时支持batch_size功能的选择,对于轻量化模型的读者来说,本文的内容对你一定有帮助,可以清晰帮你展示出模型速度性能的提升以及轻量化的效果(模型大小),对于以提高精度为目的的读者本文也能够帮助大家展示出现阶段的模型速度指标。所以本文的内容是十分有用的机制,对于大家发表论文来说,下面的图片为运行后的效果可以看到,该有的指标均已打印(本文内容为我独家创新,全网无第二份)下面是效果图和文

Snu77的博客 3629

arduino读取matlab串口,Arduino 与matlab串口通讯

有的时候我们自己给Arduino编好了程序,又希望在Matlab中调用串口,读取数据。此时 Matlab Support Package for Arduino显然不合适了。这里我们要用到Matlab里的串口对象serial。比如当我们需要利用Matlab处理摄像头画面,结合摄像头标定、摄像头识别、3D扫描后建模等等。还是以part1里面的简易示波器为例。Arduino代码如下:int analo...

weixin_30639241的博客 957

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

Arduino与MATLAB实现串口通信来画图

自己编好Arduino的程序,需要在MATLAB中调用串口,读取数据,我们就需要用到MATLAB中的串口对象serial。 比如读取传感器的值来绘图、处理摄像头等等。   简单的读取传感器的电压值 Arduino程序 int analogPin = 5; int val = 0; void setup(...

qq_37512669的博客 1万+

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

Arduino 电机测速

电机测速

qq_42731062的博客 7844

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

Arduino 让小车走直线的秘密 增量式PID 直流减速编码电机

直流减速电机增量式PID 通俗易懂版 对于我一个双非学校没上过自控的电子专业本科生而言,这个东西真的是太难了,之前研究了一个A4950驱动,价格便宜,驱动能力高,安全性高,便捷性高,一句话就是比L298N好用,我写完之后发了出去,我的一位老师看完之后,说没看出来好在哪,应该弄一个PID控制的,好吧我弄.为啥是通俗易懂版,这个,因为我理解的也不是很深入,要是有错误希望大佬指点海涵,相信对大部分同学来说应该是够用的,这篇文章写一个电机 1.直流电机增量式PID闭环控制原理简述 PID我们一般分为两种,一种叫位置

一个学长的博客 3万+

Arduino小车PID调速前期准备——码盘测速精度的提高

要对一个控制系统进行pid调节,一个必要条件即有可靠的输入量。对于进行PID调速的Arduino小车而言,采取一种可靠的方式进行测速,是后续实现较好PID调速效果的先决条件。 硬件结构 测速模块:光码盘 轮子直径:80mm 码盘齿数:100齿/圈 控制器:Arduino nano ATmega328P 由此可知,码盘每经过一个齿,小车的距离将变化 80∗π/100≈2.5133mm80*\pi /

Laputa的博客 2万+

一种结合白平衡统计信息和曝光信息的软光敏算法专利学习(专利一)

如下图所示,当光波波长在400nm-760nm区域时,即在可见光谱区域时,R、G、B三基色分量的光谱响应几乎无任何规律,当光波波长逐渐增大靠近760nm的时候,R、G、B三基色分量的光谱响应基本趋同,当光波波长在800nm-1000nm,也即红外光谱区域,R、G、B三基色分量的光谱响应几乎一致。都需要能够全天候的监控。但当设备切换到夜模式后,开启红外灯,反射回来的红外灯亮度很高,图像传感器感知到的亮度很高,导致增益低于夜模式切换日模式的阈值,又会切到日模式,这样就会出现日夜模式反复切换的问题。

大熊 2131

测量:上升/下降沿计数

我们都知道PicoScope Automotive 7 软件里有个‘测量’菜单,里面有多种类型的测量。那么在我们实际的波形诊断中,是怎么应用的呢?

虹科Pico汽车示波器的博客 1740

led的伏安特性曲线 matlab实现_光敏电阻基本特性有哪些?要如何挑选?详细规格参数表了解一下...

前言:光敏电阻是一种随着外界光线强弱变化而变化的电阻,即入射光强,电阻减小,入射光弱,电阻增大。光敏电阻要如何正确选择,那要先看看都有哪些特性和规格吧!一、光敏电阻的基本参数1.光电流、亮电阻。光敏电阻器在一定的外加电压下,当有光照射时,流过的电流称为光电流,外加电压与光电流之比称为亮电阻,常用“100LX”表示。2.暗电流、暗电阻。光敏电阻在一定的外加电压下,当没有光照射的时候,流过的电流称为暗...

weixin_36242784的博客 1582

STM32使用光敏传感器计算光照度Lux,而不是仅仅打印个电压值或者电阻值

使用STM32的HAL库,配置多通道ADC,用DMA采集,算数平均值滤波,把GL5528光敏电阻得到的数据,转为光照度Lux,其中有Matlab计算公式与函数拟合,数据处理。

geekYatao 4万+

arduino读取matlab串口,Matlab和Arduino通信

本文所有附件下载地址:http://www.51hei.com/f/Arduino and Matlab.zipMatlab是运用极广的数学软件。Arduino又是现在很火的开源硬件平台。两者连起来玩也是很爽的。特别是现在Matlab出了Arduino支援套件以后,玩起来比以往的串口通信简单多了。第一部分 Matlab Arduino Support package第二部分 Simulink Ar...

weixin_29796905的博客 1994
下一篇: 基于Arduino红外控制机械臂+流水线操作
Lelin_8013
博客等级 码龄6年 423粉丝 18原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值