关于analogWrite和analogRead的问题
本帖最后由 Stormer 于 2017-3-12 03:51 编辑我做了个简单的测试,想输出不同的模拟信号到A0,然后再从A1读取过来。
结果从串口监视器观察发现,读取A1的值只有0和1023两个值。。晕了。这是什么情况? for里我该怎么写才能从0逐步输出到最大值,同时A1能正常接收?
----------------
刚改了下代码,结果还是一样。
int i=0;
void setup() {
Serial.begin(9600);
while (!Serial) {;}
}
void loop() {
analogWrite(A0, i);
int v = analogRead(A1);
Serial.println(v);
if(i<=255)
{
i = i+1;
}
else
{
i = 0;
}
delay(20);
}
---------------------------------
再次修改代码,这次就输出个固定值,用A1接收全是0.
OK,那只留下从A0输出的代码,用示波器看看A0输出的到底是什么鬼。
void setup() {
Serial.begin(9600);
while (!Serial) {;}
}
void loop() {
analogWrite(0, 255);
}
果然。。也不是方波。这个模拟输出的函数到底是干嘛的?我的理解就是直接输出指定的电压值啊,是不是理解错了?
只好坐等各位大神回复了。
楼上的都是正解,使用analogWrite()必须要用支持PWM的针脚,板上有标~的针脚才行。 A0上面没有analogWrite()功能,改用板子上有~的
analogWrite()是pwm输出的。。要使用有pwm功能引脚的。才能输出。。。 发了这么多帖子,看来你是没看基础的教程。看基础的手册去 楼长想先输出然后再读回吧,显然概念有错,模拟输入是真模拟信号通过AD后读入值,而模拟输出是脉宽调制输出,不同的占宽比,通过滤波才能得到变化的输出电压,将“模拟输出”直接连接是得不到正确的模拟输入信号的。
页:
[1]