• Arduino 环境下经常使用的 analogWrite(PIN, arg) 语法并不是真正的DAC模拟输出,也只是1kHZ的PWM 波模拟而成!
  • 支持DAC功能的引脚请查看:引脚定义
  • 本次ESP32输出DAC使用的是:esp32-hal-dac.c  和  esp32-hal-dac.h  这两个文件!
  • 想使用ESP32的PWM功能请查看:《ESP32 学习笔记》 之Arduino环境下 如何优雅的输出频率可变的PWM波  这篇
  • 查看 esp32-hal-dac.c 文件,我们很容易看出  DAC功能  仅适用于 IO25 和 IO26 两个引脚,并在dacWrite函数中进行了判断,其他的引脚一律跳出函数,这点非常重要哦~
void IRAM_ATTR __dacWrite(uint8_t pin, uint8_t value)
{if(pin < 25 || pin > 26){return;//not dac pin}pinMode(pin, ANALOG);uint8_t channel = pin - 25;//Disable ToneCLEAR_PERI_REG_MASK(SENS_SAR_DAC_CTRL1_REG, SENS_SW_TONE_EN);if (channel) {//Disable Channel ToneCLEAR_PERI_REG_MASK(SENS_SAR_DAC_CTRL2_REG, SENS_DAC_CW_EN2_M);//Set the Dac valueSET_PERI_REG_BITS(RTC_IO_PAD_DAC2_REG, RTC_IO_PDAC2_DAC, value, RTC_IO_PDAC2_DAC_S);   //dac_output//Channel output enableSET_PERI_REG_MASK(RTC_IO_PAD_DAC2_REG, RTC_IO_PDAC2_XPD_DAC | RTC_IO_PDAC2_DAC_XPD_FORCE);} else {//Disable Channel ToneCLEAR_PERI_REG_MASK(SENS_SAR_DAC_CTRL2_REG, SENS_DAC_CW_EN1_M);//Set the Dac valueSET_PERI_REG_BITS(RTC_IO_PAD_DAC1_REG, RTC_IO_PDAC1_DAC, value, RTC_IO_PDAC1_DAC_S);   //dac_output//Channel output enableSET_PERI_REG_MASK(RTC_IO_PAD_DAC1_REG, RTC_IO_PDAC1_XPD_DAC | RTC_IO_PDAC1_DAC_XPD_FORCE);}
}extern void dacWrite(uint8_t pin, uint8_t value) __attribute__ ((weak, alias("__dacWrite")));
  • 接下来看下我写的例子吧!
/*
@功能:输出两路DAC,可用来输出音频
@时间:2020/3/5
@作者:刘泽文
@QQ:2822604962
*/
#include <Arduino.h>
#include <esp32-hal-dac.h>//DAC功能引用该库,可以不进行#include<>引用//查看源码后得到,DAC引脚只能是这两个引脚
#define LED1 25
#define LED2 26void setup(){//长时候发现,DAC的IO口也可以不进行初始化pinMode(LED1,OUTPUT);pinMode(LED2,OUTPUT);
}void loop()
{// 逐渐变亮for (int dutyCycle = 0; dutyCycle <= 255; dutyCycle = dutyCycle + 1){dacWrite(LED1, dutyCycle);  // 输出DACdacWrite(LED2, 255 - dutyCycle);  // 输出DACdelay(5);}// 逐渐变暗for (int dutyCycle = 255; dutyCycle >= 0; dutyCycle = dutyCycle - 1){dacWrite(LED1, dutyCycle);  // 输出DACdacWrite(LED2, 255 - dutyCycle);  // 输出DACdelay(5);}
}
  • 实验结果:

IO25和IO26端口上的LED为呼吸灯闪烁,并且亮度互补。

《ESP32 学习笔记》 之Arduino环境下 使用DAC模拟输出(是真的DAC哦!)完成两路呼吸灯相关推荐

  1. ESP32学习笔记( VSCode + ESP-IDF环境) 3 ——GPIO相关的简单外设驱动

    1.如何在VSCode和ESP-IDF的环境下创建工程 说实话,这是我用ESP-IDF在VSCode环境下最不喜欢的事情,在一顿CSDN和百度之后,很多大佬博主都推荐使用VSCode,通过官方示例来进 ...

  2. HaaS学习笔记 | HaaS框架环境下基于MicroPython的LED跑马灯实现及比较

    [1]题目要求 [案例]:在HaaS框架下用原生MicroPython实现LED跑马灯.       蓝蜻蜓ESP32开发板的LED灯电路连接如下:          D3灯----GPIO14,高电 ...

  3. oracle plsql update两个字段_Oracle 学习笔记(Windows 环境下安装 + PL/SQL)

    Oracle 安装.PL/SQL 配置使用 前言:因更换机械硬盘为 SSD 固态硬盘装了新 Windows 7 系统,需要重新搭建开发环境,把 Oracle 安装过程和 PL/SQL 配置使用做下笔记 ...

  4. 【DSP学习笔记】win10环境下安装CCS5.5

    学习DSP,需要安装ccs5,自己装了好几次,目前已经试过如下版本. 6.0以上的只有C55xx系列,并没有C54xx系列.支持C54xx系列的最高版本是CCS5.5.支持win10的版本是从CCS6 ...

  5. ESP32学习笔记(七) 复位和时钟

    ESP32学习笔记(七) 复位和时钟 目录: ESP32学习笔记(一) 芯片型号介绍 ESP32学习笔记(二) 开发环境搭建 VSCode+platformio ESP32学习笔记(三) 硬件资源介绍 ...

  6. ESP32学习笔记(一) 芯片型号介绍

    ESP32学习笔记(一) 芯片型号介绍 目录: ESP32学习笔记(一) 芯片型号介绍 ESP32学习笔记(二) 开发环境搭建 VSCode+platformio ESP32学习笔记(三) 硬件资源介 ...

  7. ESP32学习笔记(1)——搭建环境、编译烧写(Windows+VS Code)

    Espressif-IDE 环境搭建参看 ESP32学习笔记(50)--搭建环境.编译烧写(Windows+Espressif-IDE) 一.搭建环境 1.1 官方资料 ESP-IDF 编程指南 1. ...

  8. ESP32学习笔记(51)——搭建环境、编译烧写(Windows+Espressif-IDE)

    VS Code 环境搭建参看 ESP32学习笔记(1)--搭建环境.编译烧写(Windows+VS Code) 一.搭建环境 1.1 官方资料 ESP-IDF 编程指南 1.2 下载Espressif ...

  9. ESP32_WIFI Mesh学习笔记1---Ardino IDE 环境配置

    ESP_WIFI MESH学习笔记1-Ardino IDE 环境配置 文章目录 ESP_WIFI MESH学习笔记1---Ardino IDE 环境配置 前言 一.Arduino IDE配置问题 二. ...

最新文章

  1. 你需要启用steam社区界面功能以进行购买_绝地求生购买衣服方法
  2. 谷歌又孵化出黑科技项目!押注工业机器人方向,上海交大校友参与
  3. pymysql.err.OperationalError: (1045, “Access denied for user ‘system‘@‘::1‘ (using password: YES)“)
  4. js返回上一页并刷新代码整理 转
  5. 操作系统进程调度算法(先来先服务,短作业优先算法(SJF))linux下(附源码)
  6. 5G有多恐怖?几秒钟可下载整部电影
  7. sdn体系的三个平面_十张图看懂SDN与NFV的区别与联系?
  8. bzoj2729: [HNOI2012]排队
  9. log4j.properties 使用
  10. java 输入流关闭顺序_Java IO流中先关闭输出流还是先关闭输入流?为什么?
  11. linux vmware 安装后无法桥接到物理网卡的解决办法
  12. Java中数组的初始化
  13. backup1:开始数据库备份
  14. horizon服务主要模块_Openstack入门篇(十四)之horizon服务的部署与测试
  15. Mysql数据表一直显示使用中
  16. java 插件大全_Java 常用插件
  17. c语言散转指令,按键C语言.doc
  18. 云南省软考报名时间成绩查询云南省教育考试院云南省人事考试网报名入口
  19. 魅族魅蓝note手机便签数据怎么备份?在哪里啊
  20. 云ERP和本地ERP的区别是什么

热门文章

  1. 算法1.3.插入排序
  2. vue 播放视频,默认有视频封面
  3. 【Java高级语法】(十一)枚举类:还在因为使用了魔法数而被老大怼吗,一起来看看枚举器的作用吧!~
  4. 儿童机器人编程入门课程适合几岁孩子学习?
  5. 前端面试题总结(js部分)|下
  6. 华为P30暗光+夜景拍摄体验:实力担当夜拍小王子
  7. 怎样才能画好动漫人物的脸?画好动漫人物的脸有哪些技巧?
  8. 计算机组成原理|第二章(笔记)
  9. linux tar 文件归档命令
  10. Java实现 LeetCode 699 掉落的方块(线段树?)