openmv与Arduino串口通信,openmv发射一位数,Arduino读取数字不一样
时间: 2023-08-13 11:01:29 浏览: 113
当OpenMV与Arduino进行串口通信时,确保两个设备的波特率一致,并且处理接收数据的方式相同。下面是一个示例代码,演示了如何通过串口进行一位数的通信:
在OpenMV端的代码:
```python
import sensor
import image
import time
import pyb
uart = pyb.UART(3, 115200) # 初始化串口对象,波特率为115200
while(True):
uart.write("5") # 发送一位数
time.sleep(100) # 等待接收
```
在Arduino端的代码:
```cpp
#include <SoftwareSerial.h>
SoftwareSerial mySerial(10, 11); // RX, TX
void setup() {
Serial.begin(115200); // 与电脑通信的串口初始化
mySerial.begin(115200); // 与OpenMV通信的串口初始化
}
void loop() {
if (mySerial.available()) {
int data = mySerial.read(); // 读取一位数
Serial.print("Received: ");
Serial.println(data);
}
}
```
在这个示例中,我们假设OpenMV连接到Arduino的引脚10和11上,并且波特率都设置为115200。
在OpenMV端,我们初始化了一个UART对象,并通过`uart.write()`函数发送一位数(这里是5)。然后通过`time.sleep()`函数给Arduino一些时间来接收数据。
在Arduino端,我们使用`SoftwareSerial`库来创建一个软串口对象`mySerial`,它与OpenMV通信。我们在`setup()`函数中初始化两个串口,然后在`loop()`函数中检查`mySerial`是否有数据可用。如果有,我们使用`mySerial.read()`函数读取一位数,并通过`Serial.print()`和`Serial.println()`将接收到的数据打印到串口监视器上。
请确保代码中的引脚和波特率与你的实际连接和设置一致。
阅读全文