将模拟值从 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);
}
我正在尝试从 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);
}