gpt4 book ai didi

c++ - 电位器与第二个arduino板的通信状态

转载 作者:行者123 更新时间:2023-11-27 23:38:25 29 4
gpt4 key购买 nike

我正在尝试让 arduino 板读取连接到主 arduino 板的电位器的状态,而不用物理电缆将电位器连接到第二 block 板

我试过使用 Wire.write 和 Wire.read 只传输一个值。

arduino 主代码:

#include <Wire.h>
const int dial = A0;
int reading = 0;

void setup() {
pinMode(dial, INPUT);
Wire.begin();
}

void loop() {
reading = analogRead(dial);
Wire.beginTransmission(9);
Wire.write(reading);
Wire.endTransmission();
}

从属arduino代码:

#include <Wire.h>
int reading = 0;

void setup() {
Wire.begin(9);
Serial.begin(9600);
Wire.onReceive(receiveEvent);
}

void receiveEvent(int bytes) {
reading = Wire.read();
}

void loop() {
Serial.println(reading);
}

当我读取串行监视器时,slave arduino 中的电位计或“读数”限制在 255(我不知道为什么)6 个间隔(从 0 到 255,然后下降到 0 并重复 6 次).我希望它能够完成电位计的全部范围,以达到 1023 的上限。

最佳答案

您的 ADC 是 10 位的,一个字节都放不下。 (Wire.write(value) 将值作为单个字节发送)。您需要以 2 个字节发送 reading。下面是如何生成 2 个字节。

byte data1 = highByte(reading);
byte data2 = lowByte(reading);

在接收端,以这种方式重构一个int

byte data1 = Wire.read();
byte data2 = Wire.read();
reading = int(data1) << 8 | data2;

关于c++ - 电位器与第二个arduino板的通信状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57449203/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com