[Day6] 呼吸灯制作

1.前言

今天要介绍LED,并用LED灯制作出呼吸灯的效果,但是可能会有一些人会想说,那我使用昨天所介绍到的analogWrite()不就可以达到呼吸灯的效果,但是analogWrite()这个函式在Esp32中起不了作用,因为Esp32并不支援像Arduino Uno一样的类比输出,所以analogWrite()可以在Arduino Uno板上可以使用,在Esp32中却得使用其他方法达到此功能,那我们就废话不多说了Let's GOGO~

2.准备工具

作业系统

  • Windows 10

编译器

  • Arduino IDE (version 1.8.5)

开发版

  • ESP32s

3.LED灯(发光二极体)

LED和其他感测器一样有分正负极,且LED的正负极有一句很好记的口诀"长正短负",这句口诀可以让我们清楚的了解LED的正负极。

LED灯常被用来当查看整个系统是否有正常供电的电源灯,或者是做为警示的警示灯,而有些人会用LED做出许多创意的作品,像是呼吸灯、霹雳灯、水滴灯...等等的作品,充满炫炮特效又感觉好玩的灯光效果。

图片取自:网路

4.接线

说到接线,可能现在还不知道我们等等要怎麽接线,所以呢,现在要跟大家讲解要如何接线,就是要用名为"杜邦线"的线材去做连接,而杜邦线有分成公对公、公对母及母对母这三个的种类。

图片取自:网路

这边我们所使用的是两条母对母的杜邦线,并照着下面的脚位进行连接: - 接到 GND; + 接到 P23

图片取自:使用者绘制

5.程序码

const int ledPin = 23;  // Esp32 23脚 

const int freq = 5000;       //频率
const int ledChannel = 0;    //通道
const int resolution = 8;    //每次多少

void setup(){
  ledcSetup(ledChannel, freq, resolution);  //设定哪个通道开始多久依次每次多少
  ledcAttachPin(ledPin, ledChannel);        //设定脚位和通道
}

void loop(){
  for(int dutyCycle = 0; dutyCycle <= 255; dutyCycle++){   
    ledcWrite(ledChannel, dutyCycle);       //由通道控制暗到亮
    delay(15);
  }
  for(int dutyCycle = 255; dutyCycle >= 0; dutyCycle--){
    ledcWrite(ledChannel, dutyCycle);       //由通道控制亮到暗
    delay(15);
  }
}

接下来就可以进行烧入的动作并感受LED带来的光明,如果忘记怎麽烧入的小夥伴可以回去参考我们Day4 Arduino测试烧录的文章温习一下~

温馨小提醒: LED盯太久伤眼,请保持距离喔!(要不就戴墨镜XD)

欢迎交流

好了,今天的小案例相信大家都能够轻松顺利的完成。是不是颇有成就感呢?!但IoT能够玩出的花样可远远不止这一点点(快乐)功能,明天我们将会再为大家带来"函式Part2",让大家能够在後续更精采的系列案例中玩出更多的花样,相信自己就是未来的Maker~ 那我们明天见喽!!


<<:  Day 5 : Git 多人协作

>>:  Day2:非同步执行与 Callback 的问题

Day 4 - 稳若磐石

前言 上次还欠了cin >> 的介绍!我可没忘记唷!只不过说到cin >>这...

【JavaScript】阵列方法之map()

【前言】 本系列为个人前端学习之路的学习笔记,在过往的学习过程中累积了很多笔记,如今想藉着IT邦帮忙...

Day 30 - Make a Whack A Mole Game with Vanilla JS

前言 JS 30 是由加拿大的全端工程师 Wes Bos 免费提供的 JavaScript 简单应用...

AlwaysOn 可用性群组 (AOAG) - 心得分享

DBA Bootcamp 下面这张图说明了 SQL Server AlwaysOn 可用性群组 (A...

Day-14:使用View Helper

Rails程序码整理(起步) 如何使用View Helper把这段逻辑藏起来: 使用View Hel...