毕竟物联网专业,不能忽略了原本应该有的东西。
终于舍得翻开书看看Arduino的东西,做个小记录。
呼吸灯最常见在智能手机上,主要是使用PWM实现。这是一种做到模拟输出的方法。
1.模拟输入
生活中的大多数信号都是模拟信号,周围的环境变化产生的物理量变化在Arduino中是采用0~5V电压来表示的。
在Arduino上编号带有A的引脚都是模拟输入引脚,他们都具有ADC(这个不是MOBA的ADC,(lll¬ω¬) Analog-to-Digital Converter 数模转换)功能,Arduino的模拟输入功能可以将0~5V 电压转换为 0~1023范围内的整形
那么他主要是使用analogread(pin)函数来实现,read pin端口的模拟量来使用。
2.模拟输出
显而易见模拟输出就是analogWrite()函数,但这个函数并不能输出真正的模拟值,而是通过PWM(脉冲宽度调制)来实现一个模拟的效果,也就是说在PWM端口输出的电压值可以经过处理达到一定得起伏波形,实现近似模拟。
主要写法是analogWrite(pin,value); pin是支持PWM的引脚,value是PWM脉冲宽度范围为0~255。
一般的UNO的PWM引脚是3,5,6,9,10,11,这些都会在板子上做标注的。
3.连接图
呼吸灯.jpgVCC从9引脚发出到限流电阻,然后到发光二极管,最终流入GND
4.程序源代码
这个是在Arduino IDE实例里有的(Analog->Fading)
int ledPin = 9; // 使用引脚号
void setup() {
// nothing happens in setup
}
void loop() {
// fade in from min to max in increments of 5 points:
for (int fadeValue = 0 ; fadeValue <= 255; fadeValue += 5) {
// sets the value (range from 0 to 255):
analogWrite(ledPin, fadeValue);
// wait for 30 milliseconds to see the dimming effect
delay(30);
}
// fade out from max to min in increments of 5 points:
for (int fadeValue = 255 ; fadeValue >= 0; fadeValue -= 5) {
// sets the value (range from 0 to 255):
analogWrite(ledPin, fadeValue);
// wait for 30 milliseconds to see the dimming effect
delay(30);
}
}
很简单的使用analogWrite(ledPin, fadeValue)来控制引脚电压,来实现渐变效果。
用delay来缓解肉眼的反应速度,另外analogWrite内部已经实现了引脚初始化,因此直接在loop里运行就行。
网友评论