zoukankan      html  css  js  c++  java
  • 1个LED的亮度自动控制

    控制任务和要求

    通过程序控制LED的亮度按照要求变化

     电路设计

                             

     程序设计

     1 int bright_number = 0;   //此变量用来表示LED的亮度
     2 int bright_gap = 5;      //此变量用来表亮度变化的增减量
     3 int LED_pin = 9;         //LED引脚,须用模拟口
     4 
     5 void setup()  
     6 { 
     7   pinMode(LED_pin, OUTPUT);     // 设置LED引脚为输出模式:
     8 } 
     9 
    10 void loop() 
    11 { 
    12   analogWrite(LED_pin, bright_number);    //亮度写出
    13   delay(1000);    //延时1000毫秒 
    14   bright_number = bright_number + bright_gap;    //改变亮度
    15   if (bright_number == 0 || bright_number == 255) 
    16   {
    17     bright_gap = - bright_gap ;  //逐渐变亮与逐渐变暗之间切换
    18   }     
    19  delay(2000);   //延时2000毫秒 
    20 }

    工作原理

    analogWrite()是通过应用PWM技术输出模拟电压的函数。PWM(脉冲宽度调制)的工作原理是通过调节脉冲(频率为500Hz,周期为2毫秒)高电平宽度的占空比,由直流斩波得到一个平均后的模拟电压。通过设置analogWrite(number)中number的值(0-255),得到输出电压值0 -- 5V,输出电压=5V*占空比,如下图所示。

     

     

     运行效果

    每隔1秒逐渐变亮,最亮时延时2秒,再每隔1秒逐渐变暗,自动循环。

  • 相关阅读:
    async await异步方法的理解
    前端读取excel
    js如何实现上拉加载更多
    浅谈控制反转与依赖注入
    Java实现二叉树和遍历
    Linux生产故障排查
    排序算法之快速排序
    排序算法之堆排序
    树和二叉树知识整理
    常用的数据结构简单整理
  • 原文地址:https://www.cnblogs.com/MyAutomation/p/9282958.html
Copyright © 2011-2022 走看看