Arduino 呼吸灯 实现

毕竟物联网专业,不能忽略了原本应该有的东西。

终于舍得翻开书看看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.连接图

Arduino 呼吸灯 实现_第1张图片
呼吸灯.jpg

VCC从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里运行就行。

5.效果

效果

你可能感兴趣的:(Arduino 呼吸灯 实现)