ESP32 使用DAC模拟输出完成两路呼吸灯

ESP32的DAC函数可以实现真正的模拟输出。
在 Arduino 环境下经常使用的 analogWrite(PIN, arg) 是1kHZ的PWM 波模拟而成的,并不是真正的DAC模拟输出!
ESP32输出DAC的代码在 esp32-hal-dac.c  和  esp32-hal-dac.h 文件内
注意,在ESP32中, DAC功能仅适用于 IO25 和 IO26 两个引脚

使用示例

#include <Arduino.h>
#include <esp32-hal-dac.h>//DAC功能引用该库
 
//DAC引脚只能是这两个引脚
#define LED1 25
#define LED2 26
 
void setup(){
  pinMode(LED1,OUTPUT);
  pinMode(LED2,OUTPUT);
}
 
void loop()
{
  // 逐渐变亮
  for (int dutyCycle = 0; dutyCycle <= 255; dutyCycle = dutyCycle + 1)
  {
    dacWrite(LED1, dutyCycle);  // 输出DAC
    dacWrite(LED2, 255 - dutyCycle);  // 输出DAC
    delay(20);
  }
 
  // 逐渐变暗
  for (int dutyCycle = 255; dutyCycle >= 0; dutyCycle = dutyCycle - 1)
  {
    dacWrite(LED1, dutyCycle);  // 输出DAC
    dacWrite(LED2, 255 - dutyCycle);  // 输出DAC
    delay(20);
  }
}
执行代码后,应能看到IO25和IO26端口上的LED 交替闪烁。


- 本文内容来自网络,如有侵权,请联系本站处理。

2024-05   阅读(183)   评论(0)
 标签: 创客 ESP32 Arduino

涨知识
面向对象编程

面向对象编程(Object Oriented Programming)是一种编程方法,其本质是以建立模型体现出来的抽象思维过程和面向对象的方法。

评论:
相关文章
在ESP32上实现WEB交互界面

本文主要介绍在未联网(AP热点)情况下实现WEB交互界面的CSS和javascript库。


Arduino ESP32获取芯片、RAM信息

本文介绍如何使用Arduino-ESP32库中的API函数获取ESP32的芯片、RAM信息等,并提供了一个示例程序代码。


ESP32 FreeRTOS 双核使用

ESP32系列(包括ESP32-S3)搭载Xtensa双核处理器,默认情况下Arduino框架仅使用单核运行用户代码,通过多核编程,可以充分利用硬件资源来提升系统响应和性能。


ESP32 GPIO 矩阵和引脚多路复用

ESP32 芯片有34个物理GPIO管脚。每个GPIO管脚都可用作一个通用IO,或连接一个内部的外设信号。IO_MUX ¹、RTC IO MUX 和GPIO交换矩阵用于将信号从外设传输至GPIO管脚。


理解 MSBFIRST(最高有效位)和 LSBFIRST(最低有效位)

在本文中,先解释 MSB(最高有效位)和 LSB(最低有效位)的概念,以及 MSBFIRST 和 LSBFIRST。然后展示了 MSBFIRST 和 LSBFIRST 的使用如何影响移位寄存器的输出。


ESP32Encoder:高效的ESP32旋转编码器库

ESP32Encoder库是一个利用ESP32脉冲计数器硬件外设实现高效旋转编码器读取的软件库。


适合学习物联网的几款盒子

本文对比了几款适合物联网开发的盒子硬件参数,供大家参考。


乐动掌控

乐动掌控采用掌控板作为主控,塑胶一体式外壳,侧面和底面开具多个乐高扩展孔位,兼容乐高积木,可完成多种创意应用。


ESP32 MicroPython存储数据到闪存

在MicroPython的ESP32库中,NVS类用于管理非易失性存储,支持 32 位有符号整数和 二进制blob。


Arduino 和 TB6612FNG 驱动直流电机

TB6612是一款双路H桥型的直流电机驱动芯片,可以驱动两个直流电机并且控制其转速与方向,输入电压在3V~12V,因此在集成化、小型化的电机控制系统中,它可以作为理想的电机驱动器件。

搜索
小鹏STEM教研服务

专属教研服务系统,助您构建STEM课程体系,打造一站式教学环境。