电位计与第二个arduino板的通信状态

时间:2019-08-11 10:30:38

标签: c++ arduino arduino-uno

我试图让一个arduino板读取电位计的状态,该电位计连接到一个主arduino板上,而不用物理电缆将电位计连接到第二个板上

我尝试使用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);
}

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

1 个答案:

答案 0 :(得分:3)

您的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;