弘毅 发表于 2014-4-24 19:40:30

OCROBOT入门教程007--电位器控制PWM (控制LED)

本帖最后由 弘毅 于 2018-4-20 11:41 编辑

上节课我们学会了怎样使用ADC,前面我们也学习过怎样通过PWM来驱动一颗LED。这节课我们就把两者结合使用,让电位器控制LED的PWM。

我们所使用的蓝色面包板电位器有三个引脚,通过在1,3号引脚连接GND与5V,在2号引脚就能输出电压,通过转动电位器旋钮改变,输出的电压就会改变。这个和你用两个电阻串联分压是一样的道理,在串联电阻两端连接GND和5V,通过改变两边电阻的阻值,就能调节电阻连接处电压的大小。

我们把电位器的输出引脚接在A0,接一颗LED在D9。





void setup()
{
pinMode(11,OUTPUT);          //数字口要选择带#号的具有pwm功能的输出口
}

void loop()
{
int n = analogRead(A0);   //读取A0模拟口的数值(0-5V 对应 0-1023取值)
analogWrite(11,n/4);         //PWM最大取值255所以将模拟口的取值n除以4
}


http://player.youku.com/player.php/sid/XNzEyNzc0OTcy/v.swf

课后练习:
我们已经学会了用一个电位器控制一颗LED,可以尝试的用两个电位器控制两个LED的PWM。

Friday 发表于 2014-7-25 22:38:00

一边好声音一边学习。。。。{:soso_e113:}

cxmike 发表于 2015-3-22 22:14:04

数字口与实际操作不一致

弘毅 发表于 2015-3-23 18:41:00

cxmike 发表于 2015-3-22 22:14 static/image/common/back.gif
数字口与实际操作不一致

囧,果真是。。。马上去改

prince^_^ 发表于 2018-4-20 09:10:27

感谢楼主分享,发现一个小错误
A0模拟口的数值(0-5V 对应 0-1204取值)
应为0-1024
不过瑕不掩瑜哈哈O(∩_∩)O~

弘毅 发表于 2018-4-20 11:40:49

prince^_^ 发表于 2018-4-20 09:10
感谢楼主分享,发现一个小错误
A0模拟口的数值(0-5V 对应 0-1204取值)
应为0-1024


好滴,谢谢,我去修改。

prince^_^ 发表于 2018-4-20 15:06:22

弘毅 发表于 2018-4-20 11:40
好滴,谢谢,我去修改。

对对对 应该是1023嘿嘿
楼主的PWM调频率程序帮到我许多
之前不知道怎么加载第三方库迷了很久
最后找到是在项目->加载库->加载.zip库
万分感谢 另外我还有个小问题想请教一下
我想输出两路频率占空比独立可调的方波
希望相位差为180°该如何配置?:loveliness:

弘毅 发表于 2018-4-20 18:32:17

prince^_^ 发表于 2018-4-20 15:06
对对对 应该是1023嘿嘿
楼主的PWM调频率程序帮到我许多
之前不知道怎么加载第三方库迷了很久


互补PWM吧,这个推荐使用8F328P核心的开发板,然后使用性能优先模式。使用PWM_MODE_DUO1参数,双路互补PWM。这个语法IDE中8F328P中有例程。。。不过语法手册还没写完,你可以直接看例程。。。那个开发板只要8块。http://www.ocrobot.com/doku.php?id=reference:language:pwmmode

或者。。就是纯手工撸PWM。自己写互补~~

prince^_^ 发表于 2018-4-27 18:36:50

感谢弘大的解答,抱歉没能及时回复。我查看了‘内置示例’和‘所有开发板的示例’ 但是没有找到关于pwmMode()的函数,(就是太笨才找不到:'()请问8F328P的例程具体在哪里呢
页: [1]
查看完整版本: OCROBOT入门教程007--电位器控制PWM (控制LED)