首页 > 解决方案 > USART 通过 Arduino Leonardo 将十六进制代码传输到设备

问题描述

我正在尝试向带有 Arduino Leonardo 的设备发送十六进制命令,该设备也通过蓝牙接口接受命令。

基本上,我试图通过 Arduino Leonardo 上传输的十六进制命令打开和关闭激光,但我没有运气。如果我通过蓝牙 USB 接口发送十六进制代码,它可以在当前配置接线配置中工作,但当我尝试将其推过 TX 引脚时却不行(我必须使用具有 5k6 和 12k 欧姆的分压器来提供电压从 5V 降至 3.3V) 。

我正在尝试的代码如下所示:

byte laserON[] = {0xAA,0x00, 0x01, 0xBE, 0x00, 0x01, 0x00, 0x01, 0xC1};
byte laserOFF[] = {0xAA,0x00, 0x01, 0xBE, 0x00, 0x01, 0x00, 0x00, 0xC0};

void setup() {
 Serial1.begin(19200);
}

void loop() {
for(byte i =0;isizeof(laserON);i++)(Serial1.write(laserON[i]));

delay(1000);
Serial1.write(laserON, sizeof(laserON));


for(byte i =0;isizeof(laserOFF);i++)(Serial1.write(laserOFF[i]));
delay(1000);
Serial1.write(laserOFF, sizeof(laserOFF));
}

标签: arduinohexusart

解决方案


该问题的解决方案如下:

与其使用上述代码行,Tarick 的建议效果最好:Serial.write(&laserON[0], sizeof(laserON))

问题是分压器没有按预期工作。一个 5v 到 3.3v 的逻辑电平转换器起到了作用。


推荐阅读