【arduino】 arduino与openmv的简单串口通信

.

.

openmv代码:

from pyb import UART


uart = UART(3,9600)   #定义串口3变量(openmv上的串口P4 TX、 P5  RX对应串口3)
uart.init(9600, bits=8, parity=None, stop=1) # init with given parameters

while(True):
    if uart.any(): #如果有信息
        B = uart.read()#读取二进制码
        print(B)
        if B==b'1':#如果二进制码是字符‘1’的二进制码
            print("1")
            uart.write("12")

arduino端代码:使用的是mega2560

void setup() {
  //Serial.begin(9600);//UART0:对应引脚RX(0),TX(1)
  //Serial1.begin(9600);//UART1:对应引脚RX(19),TX(18)
  //Serial2.begin(9600);//UART2:对应引脚RX(17),TX(16)
  Serial3.begin(9600);//连接openmv,对应引脚UART3:RX(15),TX(14)
  //这里与openmv连接的是UART3,尽量不要用UART0.因为烧录程序的时候用的
  //也是uart0,如果你占用了的话就会烧录不了程序,得将连接openmv的线断开
  //才可以上传程序。
  //openmv的TX连接arduino的RX,openmv的RX连接arduino的TX
}

void loop() {
  int inData1,inData2,inData3;
  
  while(Serial3.read()>=0);//清除缓存
  
  Serial3.write(0x31);//发送开启指令(二进制的字符1,ASCII码为49)
  
  while(Serial3.available()==0);//等待信号传输
  //返回缓冲区可读取的字节数
  if(Serial3.available())//接收到openmv发来的字符串
  {
    
    
    inData1=Serial3.read();//inData1=49(字符1)
    inData2=Serial3.read();//inData2=50(字符2)
    inData3=Serial3.read();//inData3=-1(无数据)
    //Serial3.read();每次只读取一个字符,没有数据时返回-1

    while(Serial3.read()>=0);//清除缓存区数据
  }
}

注意:连接openmv和arduino的时候要共地才能正常收发信息。

  • 11
    点赞
  • 86
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

@枭白

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值