• esp32使用光敏传感器实现LED灯的亮暗线性调节


    LED灯接ESP32的18口和GND。

    光敏传感器VCC接3.3,GND接GND,DO不接,AO接35口,注意这里不需要接DO,如果接DO,无法实现线性调光,只返回两个固定值。

    int freq = 5000;    // 频率
    int channel = 0;    // 通道
    int resolution = 8;   // 分辨率
    const int led = 18;
    const int gm = 35; //光敏电阻引脚
    int Filter_Value;
    void setup()
    {
      Serial.begin(115200); 
        
      //设置光敏电阻输入
      pinMode(gm,INPUT); //光敏电阻
      randomSeed(analogRead(gm));
      
      ledcSetup(channel, freq, resolution); // 设置通道
      ledcAttachPin(led, channel);  // 将通道与对应的引脚连接
      
    }
    #define FILTER_N 20
    int Filter() {
      int i;
      int filter_sum = 0;
      int filter_max, filter_min;
      int filter_buf[FILTER_N];
      for(i = 0; i < FILTER_N; i++) {
        filter_buf[i] = analogRead(gm);
        delay(1);
      }
      filter_max = filter_buf[0];
      filter_min = filter_buf[0];
      filter_sum = filter_buf[0];
      for(i = FILTER_N - 1; i > 0; i--) {
        if(filter_buf[i] > filter_max)
          filter_max=filter_buf[i];
        else if(filter_buf[i] < filter_min)
          filter_min=filter_buf[i];
        filter_sum = filter_sum + filter_buf[i];
        filter_buf[i] = filter_buf[i - 1];
      }
      i = FILTER_N - 2;
      filter_sum = filter_sum - filter_max - filter_min + i / 2; // +i/2 的目的是为了四舍五入
      filter_sum = filter_sum / i;
      return filter_sum;
    }
    void loop()
    {
      Filter_Value = Filter();
      ledcWrite(0,map(Filter_Value,0,4095,0,255));
    }
  • 相关阅读:
    C/C++学习笔记1
    好文章
    mosquitto.conf之log配置
    安装mosquitto报缺少dll文件的错误
    mysql分页性能
    mysql慢日志记录
    sql执行计划
    sql之临时表
    mysqldump
    最全的常用正则表达式大全——包括校验数字、字符、一些特殊的需求等等
  • 原文地址:https://www.cnblogs.com/codeit/p/15538490.html
Copyright © 2020-2023  润新知