美文网首页我爱编程
Arduino 呼吸灯 实现

Arduino 呼吸灯 实现

作者: 做梦枯岛醒 | 来源:发表于2017-09-30 17:12 被阅读94次

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

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

    呼吸灯.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 呼吸灯 实现

        本文链接:https://www.haomeiwen.com/subject/aucnextx.html