我正在尝试从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);
}
我的项目或代码有什么问题?
答案 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);
}