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

时间:2019-03-01 09:52:38

标签: arduino arduino-uno arduino-ide

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

enter image description here

当我运行此项目时,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);
}

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

1 个答案:

答案 0 :(得分:1)

我理解这只是一个练习,因为PWM本身不适合提供AnalogRead。 (如果您真的想将其用于数据传输,则可以更好地测量脉冲持续时间。)

对于400 Hz PWM,您需要RC值例如20 ms可以合理地过滤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);
}