2018年10月4日星期四:
今天国庆节,按理说该放假的。忙一天,这会已经晚上11点半了才开始写这篇总结。重点是把自己学习过程中遇到的问题记录下来,期待解答哈。
主题:《制作一个arduino的亮度可调节led灯》
预备知识点:
1、arduino数字接口和模拟接口的区别和关联 首先要区别数字接口和模拟接口,就要先区分那些是数字接口,那些是模拟接口。下图很清晰,下面的图是arduino UNO型号的板子,也是很常用的板子。 总结一下arduino型号的板子模拟和数字口的区别: 模拟输入口: A0、A1、A2、A3、A4、A5、也可以实现数字输入输出。数字输入(输出)接口 :1~13。既能数字输入输出,又能模拟输出的引脚有: 3、5、6、9、10、11 使用的是10位2进制位进行数模转换:(1111111111(二进制)=1023(10进制))
注意普通的digitalwrite(端口,0或者1);因为数字输入(输出)只能有两种状态(高电平或者低电平),所以用于表示的只有0或者1即可。analogwrite(端口,模拟量)注意模拟量必须要属于合适的范围之内!
数字接口调制模拟信号,用的是8位2进制:(11111111 = 255)。
2、理解一下“调制模拟信号”:
调制模拟信号就是一段时间内来回切换高低电平,从而控制这段时间内高低电平出现的时间比例,高电平出现时间的比例越高那么输出电压越接近额定电压(这里是5v),反之低电平出现的时间比例越多,输出电压就越接近0v低电压。这就牵扯到占空比的问题了,0%的占空比输出就是0v电压,100%的占空比输出就是额定电压(5v),50%的占空比输出电压计算方式和交直流电“等效值”的计算方式类似,都是乘一个固定的值,进行转化,从而得到输出电压。关于为什么在理论上可以实现任何电压值的输出,而现实不行呢?首先在“数模口”,不论你将0~5v(额定电压)分为了几份,每一份都得有一个计数值,但是“数模口”调制模拟信号用的是8位2进制。所以只能有0000001、00000002、····共255个计数值,所以0~5v的电压只能分为255份。
3、映射函数:
map(value,fromLow,fromHigh,tolow,tohigh): 将一个“值”从一个之前所在的范围(fromLow~fromHigh),等比例的转换到新的范围(tolow~tohigh),这个值变为了一个“新的值”,但其划分新范围和旧范围的比例是一样的。一般会用于赋值:y = map(value,fromLow,fromHigh,tolow,tohigh);
附上程序:
4、电子元器件:
Led,旋钮开关,arduino开发板
5、 接线方式:
Led:普通数字引脚
旋钮开关:A0~A5
6.问题:
13个数字接口当中,可以作为模拟输出的端口也可以设置为模拟读取端口吗?