极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 19748|回复: 5

关于analogWrite和analogRead的问题

[复制链接]
发表于 2017-3-12 02:52:37 | 显示全部楼层 |阅读模式
本帖最后由 Stormer 于 2017-3-12 03:51 编辑

我做了个简单的测试,想输出不同的模拟信号到A0,然后再从A1读取过来。

结果从串口监视器观察发现,读取A1的值只有0和1023两个值。。晕了。这是什么情况? for里我该怎么写才能从0逐步输出到最大值,同时A1能正常接收?





----------------
刚改了下代码,结果还是一样。


  1. int i=0;

  2. void setup() {

  3.   Serial.begin(9600);
  4.   while (!Serial) {;}

  5. }

  6. void loop() {

  7.     analogWrite(A0, i);
  8.    
  9.     int v = analogRead(A1);

  10.     Serial.println(v);



  11.     if(i<=255)
  12.     {
  13.       i = i+1;
  14.     }
  15.     else
  16.     {
  17.       i = 0;
  18.     }

  19.     delay(20);
  20. }
复制代码




---------------------------------
再次修改代码,这次就输出个固定值,用A1接收全是0.

OK,那只留下从A0输出的代码,用示波器看看A0输出的到底是什么鬼。


  1. void setup() {

  2.   Serial.begin(9600);
  3.   while (!Serial) {;}

  4. }

  5. void loop() {

  6.     analogWrite(0, 255);
  7.    

  8. }
复制代码



果然。。也不是方波。这个模拟输出的函数到底是干嘛的?我的理解就是直接输出指定的电压值啊,是不是理解错了?

只好坐等各位大神回复了。




本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复

使用道具 举报

发表于 2017-3-12 12:32:24 | 显示全部楼层
楼上的都是正解,使用analogWrite()必须要用支持PWM的针脚,板上有标~的针脚才行。
回复 支持 1 反对 0

使用道具 举报

发表于 2017-3-12 07:09:41 | 显示全部楼层
A0上面没有analogWrite()功能,改用板子上有~的
回复 支持 反对

使用道具 举报

发表于 2017-3-12 08:34:10 | 显示全部楼层
analogWrite()是pwm输出的。。要使用有pwm功能引脚的。才能输出。。。
回复 支持 反对

使用道具 举报

发表于 2017-3-12 09:10:36 | 显示全部楼层
发了这么多帖子,看来你是没看基础的教程。看基础的手册去
回复 支持 反对

使用道具 举报

发表于 2017-3-12 22:44:34 | 显示全部楼层
楼长想先输出然后再读回吧,显然概念有错,模拟输入是真模拟信号通过AD后读入值,而模拟输出是脉宽调制输出,不同的占宽比,通过滤波才能得到变化的输出电压,将“模拟输出”直接连接是得不到正确的模拟输入信号的。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|联系我们|极客工坊

GMT+8, 2026-6-8 18:29 , Processed in 0.039389 second(s), 24 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表