我试图让一个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。
答案 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;