arduino怎么读取模块ttl的数据

arduino怎么读取模块ttl的数据,第1张

连接部分:

arduino的rx(一般是0号引脚)连模块的tx,tx(一般是一号引脚)连模块的rx,vcc接正5v,gnd接地(直接连arduino上对应的)

代码部分:

在setup里初始化串口

Serialbegin(9600); 

在loop里读数据

if(Serialavailable() > 0) 

data = Serialread();

根据Arduino的原理图我们不难看出,ATmega的RX和TX引脚一方面直接接到了数字I/O端口的0号和1号管脚,另一方面又通过电平转换电路接到了串口的母头上。因此,当我们需要用Arduino与PC机通信时,可以用串口线将两者连接起来;当我们需要用 Arduino与微控制器(如另一块Arduino)通信时,则可以用数字I/O端口的0号和1号管脚。

串行通信的难点在于参数的设置,如波特率、数据位、停止位等,在Arduino语言可以使用Serialbegin()函数来简化这一任务。为了实现数据的发送,Arduino则提供了Serialprint()和Serialprintln()两个函数,它们的区别在于后者会在请求发送的数 据后面加上换行符,以提高输出结果的可读性

用matlab读了串口数据然后plot图,但我只会读一种数据。比如只读ADC value,或者只读 Time。但想用matlab把Arduino得到的时间和ADC值都读过去然后做出波形图。时间为横轴,ADC为纵轴。Arduino和matlab代码写在下面了,用那个代码做出来的图横坐标的时间都是不对的,所以必须把Arduino读出的时间也读过去。

Arduino:

#include <MsTimer2h>

const int INTERVAL = 3;

unsigned long n = 0;

void ggyy() {

n = millis();

int m = analogRead(A0);

Serialprint(n);

Serialprint(" ");

Serialprint(m);

}

void setup(){

Serialbegin(115200);

MsTimer2::set(INTERVAL,ggyy);

MsTimer2::start();

}

void loop() {

delay(800000);

}

Matlab:

s=serial('COM3');

set(s,'BaudRate',115200);

fopen(s);

interval=5000;

passo=1;

t=1;

x=0;

while(t<interval)

b=str2num(fgetl(s));

x=[x,b];

plot(x);

grid

t=t+passo;

drawnow;

end

fclose(s);

以上就是关于arduino怎么读取模块ttl的数据全部的内容,包括:arduino怎么读取模块ttl的数据、arduino里面怎么串口输出、如何使用matlab读取Arduino串口不同的数据并作图等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9336512.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-27
下一篇 2023-04-27

发表评论

登录后才能评论

评论列表(0条)

保存