openmv与arduino串口通信

该文描述了一个使用ArduinoUno和OpenMVCam通过UART接口进行通信的程序示例。在Arduino端,利用SoftwareSerial库建立串行通信,当接收到特定指令时,向OpenMV发送数据。OpenMV接收到数据后,经过处理并发送回确认信号。整个过程涉及到延迟、数据交换和状态切换。
摘要由CSDN通过智能技术生成

arduino程序

// OpenMV Cam UART3_TX(P4) ----> Arduino Uno UART_RX(5)
// OpenMV Cam UART3_RX(P5) ----> Arduino Uno UART_TX(6)
// OpenMV Cam gnd----> Arduino Uno gnd

#include <SoftwareSerial.h>
SoftwareSerial BTserial(5,6); // 建立SoftwareSerial对象,RX引脚5, TX引脚6
int b=0;
void setup() {
    Serial.begin(9600);
    BTserial.begin(9600); // HC-06 默认波特率 9600  
  
}

void loop() {
  int a = 1;
  if (a = 1) //a区,收到A板发出的消息,左采摘
  { switch (b) {
      case 0:
        delay(3000);
        BTserial.write("8"); b = 30; //给openmv发一次消息
        Serial.println("transmit");
        delay(1000);
    }
    if (BTserial.available())  //读取open mv的消息
    { char c = BTserial.read();
      Serial.println(c);
      delay(1000);
      if (c == 'n')         
      { 
        delay(1000);
        Serial.println("end");
        b = 0; //b恢复
      }
      }
    }
 
  
}

openmv程序

# OpenMV Cam UART3_TX(P4) ----> Arduino Uno UART_RX(5)
# OpenMV Cam UART3_RX(P5) ----> Arduino Uno UART_TX(6)
import time
from pyb import UART

uart = UART(3, 9600,timeout=10000000,read_buf_len=1)

while True :
     receive = uart.read(1)  #读到一个数据,把一个数据赋值给receive
     print(receive)  #读到8会变成b'8'
     time.sleep_ms(200)
     if receive == b'8' :#与arduino通讯A区8=b'\x08' 左边光电
        print("receive")
        time.sleep_ms(2000)
        uart.write('n')#发送完成信号
        print("transmit")
        break

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值