将模拟值从 Arduino A 发送到 Arduino B 的模拟引脚

Send a Analog Value from Arduino A to Analog Pin of Arduino B

我正在尝试从 Arduino UNO 上的 LM35 传感器读取值并通过 PWM 引脚和模拟引脚将其发送到另一个 Arduino 板

当我 运行 这个项目时,Arduino A 的串行仿真器显示正确的值,但第二个始终为 0.00。 这是我的第一个 Arduino 代码:

int pin = 2;
int TempPin = A0;
int pinAnalog = 3;

void setup() {
   pinMode(3, OUTPUT);
   Serial.begin(9600);
}
void loop() {
   float tmp = analogRead(TempPin);
   float Result = (tmp/1024.0) * 500;
   Serial.println(Result);
   analogWrite(pinAnalog, Result);
   delay(3000);
}

这是我的第二个 Arduino 代码:

void setup() {
    Serial.begin(9600);
}
void loop() {
    float res = analogRead(A0);
    Serial.println(res);
    delay(3000);
}

我的项目或代码有什么问题?

我知道这只是一个练习,因为 PWM 本身不适合馈送 analogRead。 (更好地测量脉冲持续时间,如果你真的想用它来进行数据传输。)

对于 400 Hz PWM,您需要一个 RC 值,例如20ms合理过滤PWM脉冲

(例如 1µF * 20k)

当您在 3 秒周期内工作时,更大的值也可以。

顺便说一句:发件人可以简化为:

const byte inPin = A0;
const byte outPin = 3;

void setup() {
   Serial.begin(9600);
}
void loop() {
  byte tmp = analogRead(inPin)/4;  // 0 .. 255
  analogWrite(outPin, tmp); 
  Serial.println((int)tmp);
  delay(3000);
}