基于Micro:bit与TTP229的互动宝盒:从电容触摸到机械动作的创客实践

Micro:bitTTP229电容触摸传感器
于 2026-05-30 13:12:17 修改
·本内容遵循CC 4.0 BY-SA版权协议

1. 项目概述与核心思路

这个“Treasure Hunt – Touchbox”互动宝盒项目,本质上是一个融合了硬件交互、编程逻辑与创意设计的综合性创客作品。它的核心目标,是创造一个能带来“探索”与“成就”感的物理交互装置,尤其适合用于儿童教育或互动展览。我之所以对这个项目感兴趣,是因为它完美地将抽象的传感器技术和编程概念,封装在一个具象的、可触摸的“宝盒”之中,让技术变得直观而有趣。

整个项目的运作逻辑非常清晰:用户通过触摸宝盒表面特定的金属图案(即“线索”),触发电容式触摸传感器。传感器将“触摸”这一物理动作转换为电信号,传递给作为大脑的Micro:bit主控板。Micro:bit运行我们预先编写好的程序,根据触摸的顺序或组合,控制Neopixels灯带展示绚丽的灯光效果,驱动小型扬声器播放提示音效,并在所有条件满足后,命令伺服电机转动,从而打开宝盒的“外壳”,揭示内部的“宝藏”或惊喜。这个过程模拟了一次完整的探险解密,从输入(触摸)到处理(Micro:bit程序)再到输出(声、光、动作),形成了一个闭环的互动体验。

从技术选型上看,这个组合非常经典且高效。Micro:bit以其极低的上手门槛和丰富的扩展能力,成为教育领域和快速原型开发的首选。TTP229是一款非常常见的电容触摸芯片,支持多通道(常见有8键或16键),灵敏度可调,价格低廉,非常适合这种需要多个独立触摸点的项目。Neopixels(即WS2812B等可寻址RGB LED)只需一根信号线就能控制成百上千个LED,编程简单,效果炫酷。9克微型伺服电机则是实现小型机械动作的性价比之选。将这些模块通过Sensor:bit扩展板(或类似的IO扩展板)连接起来,能极大地简化接线,提高项目的可靠性和整洁度。

注意:在开始制作前,请务必准备好所有物料并测试其好坏。特别是TTP229模块,不同厂家生产的引脚定义和灵敏度调节方式可能有细微差别,建议先单独测试。

2. 硬件清单与核心模块解析

动手之前,一份清晰的物料清单和对其功能的深入理解至关重要。这不仅能帮你一次性采购齐全,更能让你在后续组装和调试时心中有数。

2.1 物料清单详表

以下是我根据项目描述和实际经验整理的完整清单,并补充了一些原文未提及但必不可少的辅助材料:

类别 名称 规格/型号建议 数量 关键作用与选购要点
主控与核心 Micro:bit V2 开发板 推荐V2版,内置麦克风与扬声器 1 项目大脑,处理逻辑,控制所有外设。V2版音效播放更便捷。
Sensor:bit 扩展板 适配Micro:bit的专用扩展板 1 极大简化接线,提供稳定的3.3V/5V电源和清晰的引脚接口。
TTP229 电容触摸传感器 16键或8键型号 1 检测手指触摸,本项目需使用多个通道。
输出与执行 Neopixels LED灯带 WS2812B, 5V供电,30灯/米 1米 提供动态灯光反馈。长度根据宝盒内部空间决定。
微型伺服电机 SG90 (9克) 1 驱动宝盒外壳开启的机械动作。
有源蜂鸣器或小喇叭 3.3V或5V有源蜂鸣器 1 提供声音提示。若用Sensor:bit,通常自带蜂鸣器。
结构材料 激光切割板材 椴木板或亚克力,厚度3mm 若干 构成宝盒主体。设计文件需预留走线孔和安装位。
金属装饰片/图案 铜片、铝片,易切割成型 多个 作为触摸“电极”,形状可自定义(如星星、动物)。
连接与供电 杜邦线 公对公、公对母 20根 连接各模块。多备无患。
鳄鱼夹测试线 若干 临时连接金属片与传感器,调试神器。
5V USB电源 输出电流≥2A 1 为整个系统供电,特别是Neopixels和伺服电机耗电较大。
Micro USB 数据线 1 为Micro:bit供电及下载程序。
工具与其他 电烙铁及焊锡 1套 焊接Neopixels灯带导线。
热熔胶枪/胶棒 1套 固定内部元件,非常方便。
螺丝刀套装 1套 安装伺服电机舵盘、固定扩展板等。
万用表 1 检查线路通断,调试必备。

2.2 核心模块深度解析

1. TTP229电容触摸传感器: 这是项目的“感知器官”。其原理是检测手指接近或触摸时引起的电极电容微小变化。模块上通常有一个灵敏度调节电位器。对于连接金属片这种较大面积电极的情况,灵敏度不宜调得过高,否则容易误触发。模块的通信接口一般是I2C或标准数字输出。本项目大概率使用的是I2C版本,因为它只需占用Micro:bit的两个IO口(SDA, SCL)就能读取多达16个按键的状态,布线简洁。你需要查阅模块手册,确认其I2C设备地址(通常为0x57或0x5A)。

2. Sensor:bit扩展板: 这是项目的“中枢神经”。它直接插在Micro:bit上,将Micro:bit边缘那些细小的金手指引脚,转换成了排列整齐、带有丝印标识的3Pin插座(GND, VCC, Signal)。更重要的是,它为舵机、Neopixels等外设提供了独立的5V供电接口,避免了大电流设备干扰Micro:bit核心板的稳定运行。在连接时,务必看清插座旁的标识,将信号线(S)接对。

3. Neopixels灯带: 这是项目的“氛围营造者”。WS2812B每个LED灯珠都集成了驱动芯片,只需一根数据线(Din)进行级联控制。编程时,你可以精确控制每一个灯珠的颜色和亮度。需要注意的是,灯带工作电压为5V,而数据信号高电平最好也是5V。虽然Micro:bit的3.3V信号有时也能驱动,但为了稳定,建议在数据线上加一个简单的电平转换电路(如用一个NPN三极管),或者选择那些标明兼容3.3V信号的灯带变种。

4. 伺服电机(舵机): 这是项目的“执行终端”。SG90这类舵机内部包含电机、减速齿轮组和反馈电位器,接收PWM(脉冲宽度调制)信号来控制输出轴的角度。当Micro:bit发出一个特定宽度的脉冲(例如1.5ms对应90度),舵机就会转动并保持在该位置。在宝盒设计中,你需要巧妙地将舵机臂与盒盖的开启机构(如连杆、滑槽)连接起来。

实操心得:在焊接Neopixels灯带时,动作要快,避免长时间高温烫坏灯珠内部的芯片。上电测试前,务必再三检查电源正负极是否接反,接反瞬间就会烧毁整条灯带,这是我用几个烧坏的灯珠换来的教训。

3. 结构设计与制作详解

一个稳固且美观的物理结构,是互动体验的基石。宝盒不仅是电路的容器,更是交互界面本身。

3.1 激光切割图纸设计要点

原文给出的尺寸(大盒:340x110;顶板:220x40)是一个很好的起点,但你需要根据自己实际拥有的板材厚度和最终想要的宝盒比例进行调整。使用Fusion 360、LaserMaker或甚至Inkscape这类软件进行设计。

核心设计原则:

  1. 插接结构:利用榫卯或卡扣设计,避免使用胶水,使组装更牢固、专业。计算板材厚度,预留准确的卡槽宽度(通常比板厚小0.1-0.2mm以实现紧配合)。
  2. 内部空间规划:在侧板或底板上,设计专门的“设备舱”区域,用于集中放置Micro:bit、扩展板和电池。预留扎带孔,方便线材管理。
  3. 走线通道:在隔板或支撑柱上设计圆孔或方槽,让连接金属片和触摸传感器的导线可以隐蔽地穿过,保持内部整洁。
  4. 触摸电极安装位:在顶板或装饰面板上,精确切割出金属图案的形状凹槽,使其能嵌入并略低于表面,既美观又防止误碰。
  5. 舵机安装座:设计一个带固定耳的结构,将舵机牢牢锁在盒体内部靠近转轴的位置。同时,在盒盖连接处设计舵机臂的联动机构(例如,在盒盖上固定一个连杆,与舵机臂用螺丝或销轴连接)。

3.2 金属触摸电极的制作与连接

金属图案是用户直接交互的对象,其制作质量影响触摸灵敏度。

  1. 材料选择:薄铜片(0.3-0.5mm)是理想选择,易于切割、弯曲,且导电性好。铝片也可用,但焊接困难,更适合用导电胶或螺丝压接。
  2. 成型方法
    • 手工剪裁:用剪刀或珠宝锯按设计图纸剪出形状。边缘可用锉刀打磨光滑。
    • 激光切割:如果条件允许,用激光切割机切割金属薄片能得到最精确的效果。但需注意激光功率和速度设置,避免切不透或烧灼过度。
  3. 连接导线:在每个金属片背面焊接一根细导线(如AWG30的硅胶线)。焊接前,先用砂纸打磨一下焊接点,并配合助焊剂,确保焊点牢固。焊好后,用一小块热熔胶或绝缘胶带固定焊点,防止拉扯脱落。
  4. 绝缘处理:金属片的正面是触摸面,背面和边缘必须与宝盒的木制/亚克力主体绝缘,否则可能造成通道间串扰或始终触发。确保金属片嵌入凹槽后,背面与底板不接触,必要时可在背面贴一层美纹纸胶带。

3.3 内部布局与组装流程

组装顺序很重要,能避免后期难以操作。

  1. 先内后外:首先将舵机、Neopixels灯带固定在盒体内部设计好的位置。灯带可以用双面胶或热熔胶沿着内壁轮廓粘贴,营造环绕光效。
  2. 集中布线:将金属片引出的导线、舵机线、灯带线都预先拉到“设备舱”区域。用不同颜色的导线区分不同触摸键,并做好标签,后续调试会轻松百倍。
  3. 安装顶板与电极:将焊接好导线的金属电极嵌入顶板凹槽,并从顶板预留的孔洞中将导线穿到盒体内部。
  4. 最后安装核心电路:将Micro:bit插到Sensor:bit上,再将所有外设连接到Sensor:bit的对应接口。最后将整个电路板模块放入设备舱固定。这样做的好处是,在程序调试阶段,你可以方便地拔插连接线或更换模块。

注意事项:伺服电机在转动时会有一定的震动和噪音,固定一定要牢固。可以在电机与安装座之间垫一小块海绵或橡胶片,能有效减震降噪。另外,确保舵机臂的运动路径畅通无阻,不会刮碰到内部线材。

4. 电路连接与接线图

清晰的接线是项目成功的一半。下面我将基于Sensor:bit扩展板,给出详细的连接方案。这是最推荐的方式,能最大程度减少错误。

4.1 接线定义与原理

我们需要明确每个设备连接到Sensor:bit的哪个引脚,以及为什么这么连。

  • TTP229 (I2C版本)

    • VCC -> Sensor:bit上的 3.3V5V 输出口。通常接3.3V即可,与Micro:bit逻辑电平匹配。
    • GND -> Sensor:bit上的任意 GND
    • SDA -> Sensor:bit上标注的 P20 (SDA) 接口。
    • SCL -> Sensor:bit上标注的 P19 (SCL) 接口。
    • I2C地址:通过模块上的焊点选择(如果有)。默认地址常为0x57。
    • 原理:I2C是一种两线制串行总线,SDA传输数据,SCL提供时钟。Micro:bit作为主机,通过这两个引脚按地址询问TTP229模块各个通道的触摸状态。
  • Neopixels灯带

    • 5V -> Sensor:bit上专为外部设备提供的 5V 大电流输出口(务必确认该口能提供足够电流)。
    • GND -> Sensor:bit上的 GND
    • Din (数据输入) -> Sensor:bit上任一数字IO口,例如 P0重要:如果该IO口输出是3.3V,而灯带要求5V信号,需如前所述进行电平转换。
    • 原理:数据信号是一串特定的时序脉冲,每个脉冲对应一个灯珠的RGB值。第一个灯珠读取自己的数据后,将后续数据传递给下一个,实现级联。
  • 伺服电机 (SG90)

    • 棕色线 (GND) -> Sensor:bit上的 GND
    • 红色线 (VCC, 通常+5V) -> Sensor:bit上的 5V 输出口。
    • 橙色线 (信号线) -> Sensor:bit上任一支持PWM输出的数字IO口,例如 P1
    • 原理:Micro:bit在该引脚上生成周期约20ms,高电平宽度在0.5ms到2.5ms之间的PWM波,舵机内部的电路根据脉冲宽度解读为对应的角度。
  • 有源蜂鸣器

    • 如果使用独立模块,VCC3.3V/5VGNDGNDI/O 接任一数字口如 P2
    • 如果使用Micro:bit V2板载扬声器或Sensor:bit自带的蜂鸣器,则无需额外接线,直接通过编程控制。
  • 电源

    • 使用一个5V/2A的USB电源适配器,通过Micro USB线为整个Sensor:bit(连同Micro:bit)供电。切勿在通过USB供电的同时,再从其他端口反向供电,以免损坏设备。

4.2 接线实操与检测

  1. 分模块测试:在将所有设备装进宝盒前,强烈建议先在桌面上进行“裸板测试”。用杜邦线将各个模块单独连接到Sensor:bit,并编写最简单的测试程序(如触摸按键点亮板载LED、舵机来回转动、灯带显示单一颜色),确保每个模块都能正常工作。
  2. 线材整理:使用尼龙扎带、线卡或热熔胶将线束分组固定,避免杂乱。过长的导线可以盘绕起来,但不要形成尖锐的折角。
  3. 万用表检查:完成所有接线后,在上电前,用万用表的通断档,快速检查一下所有电源(VCC)和地(GND)之间是否短路。这是防止“烟花”的最后一道防线。

5. Micro:bit编程逻辑与代码实现

编程是赋予宝盒灵魂的一步。我们将使用MakeCode图形化编程环境,它直观易懂,非常适合初学者和快速开发。

5.1 程序整体逻辑设计

我们的程序需要实现一个“状态机”,根据触摸输入序列来改变系统状态,并触发相应的输出。

基本逻辑流:

  1. 初始化:设置I2C引脚、Neopixels灯带引脚和数量、舵机引脚并归位(盒盖关闭状态)、播放启动音效、灯带显示待机颜色(如缓慢呼吸的蓝色)。
  2. 循环检测:持续读取TTP229传感器的16个通道状态(我们可能只用到其中几个)。
  3. 逻辑判断
    • 方案A(顺序解锁):设定一个固定的触摸顺序(如先触摸星星,再触摸月亮,最后触摸太阳)。程序内部维护一个“步骤计数器”。只有当用户按正确顺序触摸时,计数器才增加,并触发该步骤的反馈(如对应图案亮起、播放特定音调)。一旦顺序错误,计数器归零,所有反馈重置。
    • 方案B(组合解锁):需要同时触摸某几个图案(或在一定时间内依次触摸),才能触发最终动作。这需要程序记录触摸状态的时间戳并进行逻辑“与”或“或”运算。
  4. 反馈与执行
    • 中间反馈:每完成一个步骤,Neopixels灯带可以显示进度(如点亮更多灯珠),蜂鸣器播放上升音阶。
    • 最终成功:当所有解锁条件满足,灯带呈现庆祝效果的彩虹跑马灯,播放一段胜利旋律,然后控制舵机旋转到指定角度(如90度或180度),打开盒盖。
    • 复位机制:盒盖打开后,可以设置一个延时(如10秒),然后自动关闭盒盖(舵机归位),并将所有状态重置,等待下一次游戏。

5.2 MakeCode代码块详解

由于无法直接展示图形化代码块,我将描述关键积木的使用和配置:

  1. 扩展添加:在MakeCode中,首先需要添加“Neopixels”和“TTP229 Touch Sensor”的扩展库(如果官方库没有TTP229,可能需要手动添加Github上的第三方库,或使用通用的“I2C”积木来读写)。
  2. 初始化设置
    • 在开机时 积木内:
      • 设置灯带引脚为 P0 灯珠数量为 30 (根据实际数量修改)。
      • 设置舵机引脚 P1 角度为 0 (关闭状态)。
      • 播放音调 Middle C 持续 1/4拍 作为启动提示。
      • 将变量“解锁步骤”设为 0
  3. 读取触摸传感器
    • 使用 I2C读取地址 0x57 长度 2 字节 积木(假设地址0x57)。TTP229的16个按键状态通常以2个字节(16位)返回,每一位代表一个通道(0为未触摸,1为触摸)。
    • 需要编写一个函数 读取触摸状态,将读取到的2字节数据解析成一个16位的二进制数或数组,方便判断哪个键被按下。
  4. 逻辑判断实现(以顺序解锁为例)
    • 无限循环 中,调用 读取触摸状态 函数。
    • 使用 如果...那么...否则 积木进行判断。
    • 例如:如果 解锁步骤 = 0 且 触摸状态[0] = 1 (星星被触摸) 那么 -> 将解锁步骤设为 1灯带显示颜色 红色播放音调
    • 否则如果 解锁步骤 = 1 且 触摸状态[1] = 1 (月亮被触摸) 且 触摸状态[0] = 0 (星星已松开) 那么 -> 进入下一步。
    • 如果触摸了错误的图案,则 将解锁步骤设为 0灯带显示闪烁的红色播放错误音效
  5. 最终动作触发
    • 解锁步骤 达到最大值(如3)时:
      • 设置舵机引脚 P1 角度为 90
      • 灯带显示彩虹动画
      • 播放旋律
      • 等待 10000 毫秒
      • 设置舵机引脚 P1 角度为 0 (复位)。
      • 将解锁步骤设为 0
      • 清除灯带

编程心得:在调试触摸逻辑时,建议在每次触摸判断后加入一个短暂的延时(如等待100毫秒)并进行“消抖”处理。因为手指触摸的瞬间可能会有电气噪声,导致程序误判为多次快速触发。一个简单的消抖方法是:连续两次(间隔50ms)读取都检测到触摸,才认为是有效触发。

5.3 进阶功能与优化

  • 超时重置:增加一个“超时”变量,在每次正确触摸后重置。如果超过一定时间(如30秒)未进行下一步操作,则自动重置所有状态,防止游戏卡在半途。
  • 灯光效果库:为不同的状态(等待、正确、错误、成功)设计丰富的灯光模式,如呼吸、流星、色彩渐变等,可以大大增强体验。
  • 声音多样化:利用Micro:bit V2的板载扬声器或连接更高级的音频模块,播放更复杂的音乐或录制的提示音,而不仅仅是单音调。
  • 多关卡设计:可以设计多组触摸密码,解锁后进入下一关,灯光和音效也随之变化,增加可玩性。

6. 系统集成、调试与问题排查

将所有部分组装在一起并上电,才是真正的挑战开始。系统性的调试方法能帮你快速定位问题。

6.1 集成与上电测试流程

  1. 分步上电:先只连接Micro:bit和Sensor:bit,通过USB供电,观察Micro:bit是否正常启动(显示LED点阵)。然后逐一接入其他模块:先接触摸传感器,测试读取是否正常;再接灯带(注意电流),测试单色显示;最后接舵机。
  2. 功能联调:上传完整的程序。用手触摸连接好的金属片,观察Micro:bit的LED点阵是否显示对应的按键编号(可以在程序中临时加入显示编号的功能用于调试),同时听是否有蜂鸣器反馈。确保输入检测无误。
  3. 输出联动调试:确认输入正确后,测试输出联动。模拟正确的触摸顺序,观察灯带变化、声音播放是否按设计进行,最后舵机是否动作。
  4. 整体装配测试:将整个电路系统放入宝盒,固定好,合上盖子(或装饰面板)。进行完整的端到端测试,模拟真实使用场景。

6.2 常见问题与排查技巧实录

以下是我在制作类似项目中遇到过的典型问题及解决方法,整理成速查表:

问题现象 可能原因 排查步骤与解决方案
触摸完全无反应 1. 电源未接通或电压不对。
2. I2C线路接错(SDA/SCL反接)。
3. 传感器模块损坏。
4. 程序未正确初始化I2C或地址错误。
5. 金属电极导线未接好或绝缘不良导致短路。
1. 用万用表测量TTP229模块VCC与GND间电压是否为3.3V/5V。
2. 检查SDA、SCL是否与Micro:bit的P20、P19对应。
3. 更换模块测试。
4. 检查MakeCode中I2C地址设置,尝试扫描I2C设备地址。
5. 断开金属片导线,直接用导线触碰模块输入点测试。
触摸反应迟钝或误触发 1. 触摸灵敏度不合适。
2. 电极面积太小或与手指接触不良。
3. 附近有电磁干扰。
4. 程序中没有消抖处理。
1. 调节TTP229模块上的电位器(如有)。
2. 增大金属片面积,确保表面清洁无氧化。
3. 让传感器远离电机、电源等干扰源,或为I2C线路加上拉电阻。
4. 在程序中加入延时消抖逻辑。
Neopixels灯带不亮或颜色错乱 1. 电源功率不足(特别是灯珠较多时)。
2. 数据线(Din)接触不良或接错引脚。
3. 信号电平不匹配(3.3V驱动5V灯带)。
4. 程序中没有正确设置灯珠数量或引脚。
1. 使用独立5V/2A以上电源为灯带供电,并与Micro:bit共地。
2. 检查Din线是否连接牢固,是否接在了指定的信号引脚上。
3. 在数据线上串联一个100-470欧姆的电阻,或增加电平转换电路。
4. 核对程序初始化代码,灯珠数量必须与实际完全一致。
舵机不转动或抖动 1. 供电不足(舵机启动电流大)。
2. 信号线接触不良。
3. 机械结构卡死,负载过重。
4. PWM信号问题。
1. 确保使用5V/2A电源,且导线足够粗。可尝试单独为舵机供电。
2. 重新插拔舵机信号线。
3. 脱离机械负载,空载测试舵机是否正常转动。
4. 检查程序输出的PWM角度范围是否在舵机有效范围内(通常0-180度)。
系统运行不稳定,偶尔复位 1. 总功耗超过USB电源或扩展板供电能力。
2. 接线松动,特别是GND线。
3. 电机等感性负载未加续流二极管,反电动势干扰。
1. 计算总电流(灯带全白最耗电,舵机堵转电流大),升级电源。
2. 检查所有GND连接点是否都可靠接地。
3. 在舵机电源线两端并联一个100uF电解电容,并靠近舵机安装。
解锁逻辑混乱 1. 程序逻辑判断条件有误(如未检测按键释放)。
2. 多个触摸通道间存在干扰(串扰)。
1. 在MakeCode中使用“串行输出”功能,打印出触摸状态和变量值,逐步调试逻辑。
2. 在金属电极间增加物理隔离距离,或在软件上增加“互斥”逻辑(如一次只允许一个触摸有效)。

调试是一个需要耐心和逻辑分析的过程。遵循“先电源,后信号;先局部,后整体;先硬件,后软件”的原则,大部分问题都能迎刃而解。当你看到宝盒按照预设的节奏,随着触摸亮起灯光、响起音乐,最终“咔哒”一声自动打开时,所有的努力都将是值得的。这个项目不仅是一个玩具,更是一个关于系统集成、问题解决和创造性表达的绝佳练习。

人机交互新体验ESP32+OLED+电容触摸板一体化设计方案(含接口整合)
SW_孙维
* 正在执行任务: D:\Espressif\python_env\idf5.5_py3.11_env\Scripts\python.exe D:\Espressif\frameworks\esp-idf-v5.5\tools\idf.py -B c:\Users\Lenovo\esp_electronic_piano\build -DSDKCONFIG='c:\Users\Lenovo\esp_electronic_piano\sdkconfig' reconfigure Executing action: reconfigureRunning cmake in directory C:\Users\Lenovo\esp_electronic_piano\buildExecuting "cmake -G Ninja -DPYTHON_DEPS_CHECKED=1 -DPYTHON=D:\Espressif\python_env\idf5.5_py3.11_env\Scripts\python.exe -DESP_PLATFORM=1 -DSDKCONFIG='c:\Users\Lenovo\esp_electronic_piano\sdkconfig' -DCCACHE_ENABLE=1 C:\Users\Lenovo\esp_electronic_piano"...-- Minimal build - ON-- ccache will be used for faster recompilation-- git rev-parse returned 'fatal: not a git repository (or any of the parent directories): .git'-- Could not use 'git describe' to determine PROJECT_VER.-- Building ESP-IDF components for target esp32NOTICE: Processing 2 dependencies:NOTICE: [1/2] espressif/led_strip (3.0.1~1)NOTICE: [2/2] idf (5.5.0)-- Project sdkconfig file C:/Users/Lenovo/esp_electronic_piano/sdkconfigLoading defaults file C:/Users/Lenovo/esp_electronic_piano/sdkconfig.defaults...Loading defaults file C:/Users/Lenovo/esp_electronic_piano/sdkconfig.defaults.esp32...-- Compiler supported targets: xtensa-esp-elf-- USING O3-- App "esp_electronic_piano" version: 1-- Adding linker script C:/Users/Lenovo/esp_electronic_piano/build/esp-idf/esp_system/ld/memory.ld-- Adding linker script C:/Users/Lenovo/esp_electronic_piano/build/esp-idf/esp_system/ld/sections.ld.in-- Adding linker script D:/Espressif/frameworks/esp-idf-v5.5/components/esp_rom/esp32/ld/esp32.rom.ld-- Adding linker script D:/Espressif/frameworks/esp-idf-v5.5/components/esp_rom/esp32/ld/esp32.rom.api.ld-- Adding linker script D:/Espressif/frameworks/esp-idf-v5.5/components/esp_rom/esp32/ld/esp32.rom.libgcc.ld-- Adding linker script D:/Espressif/frameworks/esp-idf-v5.5/components/esp_rom/esp32/ld/esp32.rom.newlib-data.ld-- Adding linker script D:/Espressif/frameworks/esp-idf-v5.5/components/esp_rom/esp32/ld/esp32.rom.syscalls.ld-- Adding linker script D:/Espressif/frameworks/esp-idf-v5.5/components/esp_rom/esp32/ld/esp32.rom.libc-funcs.ld-- Adding linker script D:/Espressif/frameworks/esp-idf-v5.5/components/esp_rom/esp32/ld/esp32.rom.newlib-reent-funcs.ld-- Adding linker script D:/Espressif/frameworks/esp-idf-v5.5/components/soc/esp32/ld/esp32.peripherals.ld-- Components: app_update bootloader bootloader_support buzzer cxx driver efuse esp_app_format esp_bootloader_format esp_common esp_driver_ana_cmpr esp_driver_bitscrambler esp_driver_dac esp_driver_gpio esp_driver_gptimer esp_driver_i2c esp_driver_i2s esp_driver_ledc esp_driver_mcpwm esp_driver_parlio esp_driver_pcnt esp_driver_rmt esp_driver_sdio esp_driver_sdm esp_driver_sdmmc esp_driver_sdspi esp_driver_spi esp_driver_tsens esp_driver_twai esp_driver_uart esp_driver_usb_serial_jtag esp_hw_support esp_mm esp_partition esp_pm esp_ringbuf esp_rom esp_security esp_system esp_timer espressif__led_strip esptool_py freertos hal heap log main mbedtls newlib oled partition_table pthread sdmmc soc spi_flash ttp229 ws2812b xtensa-- Component paths: D:/Espressif/frameworks/esp-idf-v5.5/components/app_update D:/Espressif/frameworks/esp-idf-v5.5/components/bootloader D:/Espressif/frameworks/esp-idf-v5.5/components/bootloader_support C:/Users/Lenovo/esp_electronic_piano/components/buzzer D:/Espressif/frameworks/esp-idf-v5.5/components/cxx D:/Espressif/frameworks/esp-idf-v5.5/components/driver D:/Espressif/frameworks/esp-idf-v5.5/components/efuse D:/Espressif/frameworks/esp-idf-v5.5/components/esp_app_format D:/Espressif/frameworks/esp-idf-v5.5/components/esp_bootloader_format D:/Espressif/frameworks/esp-idf-v5.5/components/esp_common D:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_ana_cmpr D:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_bitscrambler D:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_dac D:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_gpio D:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_gptimer D:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_i2c D:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_i2s D:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_ledc D:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_mcpwm D:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_parlio D:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_pcnt D:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_rmt D:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_sdio D:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_sdm D:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_sdmmc D:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_sdspi D:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_spi D:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_tsens D:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_twai D:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_uart D:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_usb_serial_jtag D:/Espressif/frameworks/esp-idf-v5.5/components/esp_hw_support D:/Espressif/frameworks/esp-idf-v5.5/components/esp_mm D:/Espressif/frameworks/esp-idf-v5.5/components/esp_partition D:/Espressif/frameworks/esp-idf-v5.5/components/esp_pm D:/Espressif/frameworks/esp-idf-v5.5/components/esp_ringbuf D:/Espressif/frameworks/esp-idf-v5.5/components/esp_rom D:/Espressif/frameworks/esp-idf-v5.5/components/esp_security D:/Espressif/frameworks/esp-idf-v5.5/components/esp_system D:/Espressif/frameworks/esp-idf-v5.5/components/esp_timer C:/Users/Lenovo/esp_electronic_piano/managed_components/espressif__led_strip D:/Espressif/frameworks/esp-idf-v5.5/components/esptool_py D:/Espressif/frameworks/esp-idf-v5.5/components/freertos D:/Espressif/frameworks/esp-idf-v5.5/components/hal D:/Espressif/frameworks/esp-idf-v5.5/components/heap D:/Espressif/frameworks/esp-idf-v5.5/components/log C:/Users/Lenovo/esp_electronic_piano/main D:/Espressif/frameworks/esp-idf-v5.5/components/mbedtls D:/Espressif/frameworks/esp-idf-v5.5/components/newlib C:/Users/Lenovo/esp_electronic_piano/components/oled D:/Espressif/frameworks/esp-idf-v5.5/components/partition_table D:/Espressif/frameworks/esp-idf-v5.5/components/pthread D:/Espressif/frameworks/esp-idf-v5.5/components/sdmmc D:/Espressif/frameworks/esp-idf-v5.5/components/soc D:/Espressif/frameworks/esp-idf-v5.5/components/spi_flash C:/Users/Lenovo/esp_electronic_piano/components/ttp229 C:/Users/Lenovo/esp_electronic_piano/components/ws2812b D:/Espressif/frameworks/esp-idf-v5.5/components/xtensa-- Configuring done (12.3s)-- Generating done (0.5s)-- Build files have been written to: C:/Users/Lenovo/esp_electronic_piano/build * 正在执行任务: D:\Espressif\tools\ninja\1.12.1\ninja.EXE [3/19] Building C object esp-idf/ttp229/CMakeFiles/__idf_ttp229.dir/src/ttp229.c.objFAILED: esp-idf/ttp229/CMakeFiles/__idf_ttp229.dir/src/ttp229.c.objccache D:\Espressif\tools\xtensa-esp-elf\esp-14.2.0_20241119\xtensa-esp-elf\bin\xtensa-esp32-elf-gcc.exe -DESP_PLATFORM -DIDF_VER=\"v5.5-dirty\" -DSOC_MMU_PAGE_SIZE=CONFIG_MMU_PAGE_SIZE -DSOC_XTAL_FREQ_MHZ=CONFIG_XTAL_FREQ -D_GLIBCXX_HAVE_POSIX_SEMAPHORE -D_GLIBCXX_USE_POSIX_SEMAPHORE -D_GNU_SOURCE -D_POSIX_READER_WRITER_LOCKS -IC:/Users/Lenovo/esp_electronic_piano/build/config -IC:/Users/Lenovo/esp_electronic_piano/components/ttp229/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/newlib/platform_include -ID:/Espressif/frameworks/esp-idf-v5.5/components/freertos/config/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/freertos/config/include/freertos -ID:/Espressif/frameworks/esp-idf-v5.5/components/freertos/config/xtensa/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/freertos/FreeRTOS-Kernel/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/freertos/FreeRTOS-Kernel/portable/xtensa/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/freertos/FreeRTOS-Kernel/portable/xtensa/include/freertos -ID:/Espressif/frameworks/esp-idf-v5.5/components/freertos/esp_additions/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_hw_support/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_hw_support/include/soc -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_hw_support/include/soc/esp32 -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_hw_support/dma/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_hw_support/ldo/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_hw_support/debug_probe/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_hw_support/mspi_timing_tuning/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_hw_support/mspi_timing_tuning/tuning_scheme_impl/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_hw_support/power_supply/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_hw_support/port/esp32/. -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_hw_support/port/esp32/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/heap/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/heap/tlsf -ID:/Espressif/frameworks/esp-idf-v5.5/components/log/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/soc/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/soc/esp32 -ID:/Espressif/frameworks/esp-idf-v5.5/components/soc/esp32/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/soc/esp32/register -ID:/Espressif/frameworks/esp-idf-v5.5/components/hal/platform_port/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/hal/esp32/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/hal/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_rom/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_rom/esp32/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_rom/esp32/include/esp32 -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_rom/esp32 -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_common/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_system/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_system/port/soc -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_system/port/include/private -ID:/Espressif/frameworks/esp-idf-v5.5/components/xtensa/esp32/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/xtensa/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/xtensa/deprecated_include -ID:/Espressif/frameworks/esp-idf-v5.5/components/driver/deprecated -ID:/Espressif/frameworks/esp-idf-v5.5/components/driver/i2c/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/driver/touch_sensor/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/driver/twai/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/driver/touch_sensor/esp32/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_pm/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_ringbuf/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_gpio/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_pcnt/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_gptimer/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_spi/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_mcpwm/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_ana_cmpr/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_i2s/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_sdmmc/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/sdmmc/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_sdspi/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_sdio/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_dac/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_rmt/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_tsens/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_sdm/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_i2c/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_uart/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_ledc/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_parlio/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_usb_serial_jtag/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_twai/include -mlongcalls -Wno-frame-address -fno-builtin-memcpy -fno-builtin-memset -fno-builtin-bzero -fno-builtin-stpcpy -fno-builtin-strncpy -fdiagnostics-color=always -ffunction-sections -fdata-sections -Wall -Werror=all -Wno-error=unused-function -Wno-error=unused-variable -Wno-error=unused-but-set-variable -Wno-error=deprecated-declarations -Wextra -Wno-error=extra -Wno-unused-parameter -Wno-sign-compare -Wno-enum-conversion -gdwarf-4 -ggdb -Og -fno-shrink-wrap -fmacro-prefix-map=C:/Users/Lenovo/esp_electronic_piano=. -fmacro-prefix-map=D:/Espressif/frameworks/esp-idf-v5.5=/IDF -fstrict-volatile-bitfields -fno-jump-tables -fno-tree-switch-conversion -std=gnu17 -Wno-old-style-declaration -MD -MT esp-idf/ttp229/CMakeFiles/__idf_ttp229.dir/src/ttp229.c.obj -MF esp-idf\ttp229\CMakeFiles\__idf_ttp229.dir\src\ttp229.c.obj.d -o esp-idf/ttp229/CMakeFiles/__idf_ttp229.dir/src/ttp229.c.obj -c C:/Users/Lenovo/esp_electronic_piano/components/ttp229/src/ttp229.cC:/Users/Lenovo/esp_electronic_piano/components/ttp229/src/ttp229.c:11:22: error: static declaration of 'key_map' follows non-static declaration 11 | static const uint8_t key_map[16] = {3,2,1,0,15,14,13,12,8,9,10,11,4,5,6,7}; | ^~~~~~~In file included from C:/Users/Lenovo/esp_electronic_piano/components/ttp229/src/ttp229.c:1:C:/Users/Lenovo/esp_electronic_piano/components/ttp229/include/ttp229.h:17:22: note: previous declaration of 'key_map' with type 'const uint8_t[16]' {aka 'const unsigned char[16]'} 17 | extern const uint8_t key_map[16]; | ^~~~~~~C:/Users/Lenovo/esp_electronic_piano/components/ttp229/src/ttp229.c:13:15: error: redefinition of 'key_map' 13 | const uint8_t key_map[16] = {3,2,1,0,15,14,13,12,8,9,10,11,4,5,6,7}; | ^~~~~~~C:/Users/Lenovo/esp_electronic_piano/components/ttp229/src/ttp229.c:11:22: note: previous definition of 'key_map' with type 'const uint8_t[16]' {aka 'const unsigned char[16]'} 11 | static const uint8_t key_map[16] = {3,2,1,0,15,14,13,12,8,9,10,11,4,5,6,7}; | ^~~~~~~C:/Users/Lenovo/esp_electronic_piano/components/ttp229/src/ttp229.c: In function 'ttp229_init':C:/Users/Lenovo/esp_electronic_piano/components/ttp229/src/ttp229.c:38:1: error: control reaches end of non-void function [-Werror=return-type] 38 | } | ^C:/Users/Lenovo/esp_electronic_piano/components/ttp229/src/ttp229.c: At top level:C:/Users/Lenovo/esp_electronic_piano/components/ttp229/src/ttp229.c:15:20: warning: 'TAG' defined but not used [-Wunused-variable] 15 | static const char *TAG = "TTP229_EXT_FIXED"; | ^~~cc1.exe: some warnings being treated as errors[4/19] Building C object esp-idf/oled/CMakeFiles/__idf_oled.dir/src/oled.c.objFAILED: esp-idf/oled/CMakeFiles/__idf_oled.dir/src/oled.c.objccache D:\Espressif\tools\xtensa-esp-elf\esp-14.2.0_20241119\xtensa-esp-elf\bin\xtensa-esp32-elf-gcc.exe -DESP_PLATFORM -DIDF_VER=\"v5.5-dirty\" -DSOC_MMU_PAGE_SIZE=CONFIG_MMU_PAGE_SIZE -DSOC_XTAL_FREQ_MHZ=CONFIG_XTAL_FREQ -D_GLIBCXX_HAVE_POSIX_SEMAPHORE -D_GLIBCXX_USE_POSIX_SEMAPHORE -D_GNU_SOURCE -D_POSIX_READER_WRITER_LOCKS -IC:/Users/Lenovo/esp_electronic_piano/build/config -IC:/Users/Lenovo/esp_electronic_piano/components/oled/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/newlib/platform_include -ID:/Espressif/frameworks/esp-idf-v5.5/components/freertos/config/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/freertos/config/include/freertos -ID:/Espressif/frameworks/esp-idf-v5.5/components/freertos/config/xtensa/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/freertos/FreeRTOS-Kernel/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/freertos/FreeRTOS-Kernel/portable/xtensa/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/freertos/FreeRTOS-Kernel/portable/xtensa/include/freertos -ID:/Espressif/frameworks/esp-idf-v5.5/components/freertos/esp_additions/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_hw_support/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_hw_support/include/soc -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_hw_support/include/soc/esp32 -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_hw_support/dma/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_hw_support/ldo/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_hw_support/debug_probe/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_hw_support/mspi_timing_tuning/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_hw_support/mspi_timing_tuning/tuning_scheme_impl/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_hw_support/power_supply/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_hw_support/port/esp32/. -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_hw_support/port/esp32/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/heap/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/heap/tlsf -ID:/Espressif/frameworks/esp-idf-v5.5/components/log/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/soc/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/soc/esp32 -ID:/Espressif/frameworks/esp-idf-v5.5/components/soc/esp32/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/soc/esp32/register -ID:/Espressif/frameworks/esp-idf-v5.5/components/hal/platform_port/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/hal/esp32/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/hal/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_rom/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_rom/esp32/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_rom/esp32/include/esp32 -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_rom/esp32 -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_common/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_system/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_system/port/soc -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_system/port/include/private -ID:/Espressif/frameworks/esp-idf-v5.5/components/xtensa/esp32/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/xtensa/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/xtensa/deprecated_include -ID:/Espressif/frameworks/esp-idf-v5.5/components/driver/deprecated -ID:/Espressif/frameworks/esp-idf-v5.5/components/driver/i2c/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/driver/touch_sensor/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/driver/twai/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/driver/touch_sensor/esp32/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_pm/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_ringbuf/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_gpio/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_pcnt/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_gptimer/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_spi/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_mcpwm/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_ana_cmpr/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_i2s/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_sdmmc/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/sdmmc/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_sdspi/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_sdio/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_dac/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_rmt/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_tsens/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_sdm/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_i2c/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_uart/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_ledc/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_parlio/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_usb_serial_jtag/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_twai/include -mlongcalls -Wno-frame-address -fno-builtin-memcpy -fno-builtin-memset -fno-builtin-bzero -fno-builtin-stpcpy -fno-builtin-strncpy -fdiagnostics-color=always -ffunction-sections -fdata-sections -Wall -Werror=all -Wno-error=unused-function -Wno-error=unused-variable -Wno-error=unused-but-set-variable -Wno-error=deprecated-declarations -Wextra -Wno-error=extra -Wno-unused-parameter -Wno-sign-compare -Wno-enum-conversion -gdwarf-4 -ggdb -Og -fno-shrink-wrap -fmacro-prefix-map=C:/Users/Lenovo/esp_electronic_piano=. -fmacro-prefix-map=D:/Espressif/frameworks/esp-idf-v5.5=/IDF -fstrict-volatile-bitfields -fno-jump-tables -fno-tree-switch-conversion -std=gnu17 -Wno-old-style-declaration -MD -MT esp-idf/oled/CMakeFiles/__idf_oled.dir/src/oled.c.obj -MF esp-idf\oled\CMakeFiles\__idf_oled.dir\src\oled.c.obj.d -o esp-idf/oled/CMakeFiles/__idf_oled.dir/src/oled.c.obj -c C:/Users/Lenovo/esp_electronic_piano/components/oled/src/oled.cC:/Users/Lenovo/esp_electronic_piano/components/oled/src/oled.c:145:13: error: conflicting types for 'oled_send_data'; have 'void(const uint8_t *, size_t)' {aka 'void(const unsigned char *, unsigned int)'} 145 | static void oled_send_data(const uint8_t *data, size_t len) | ^~~~~~~~~~~~~~In file included from C:/Users/Lenovo/esp_electronic_piano/components/oled/src/oled.c:1:C:/Users/Lenovo/esp_electronic_piano/components/oled/include/oled.h:8:5: note: previous declaration of 'oled_send_data' with type 'int(const uint8_t *, size_t)' {aka 'int(const unsigned char *, unsigned int)'} 8 | int oled_send_data(const uint8_t *data, size_t len); | ^~~~~~~~~~~~~~C:/Users/Lenovo/esp_electronic_piano/components/oled/src/oled.c: In function 'oled_send_data':C:/Users/Lenovo/esp_electronic_piano/components/oled/src/oled.c:147:27: error: 'return' with a value, in function returning void [-Wreturn-mismatch] 147 | if (!spi_oled) return -1; | ^C:/Users/Lenovo/esp_electronic_piano/components/oled/src/oled.c:145:13: note: declared here 145 | static void oled_send_data(const uint8_t *data, size_t len) | ^~~~~~~~~~~~~~C:/Users/Lenovo/esp_electronic_piano/components/oled/src/oled.c:152:12: error: 'return' with a value, in function returning void [-Wreturn-mismatch] 152 | return spi_device_transmit(spi_oled, &t); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~C:/Users/Lenovo/esp_electronic_piano/components/oled/src/oled.c:145:13: note: declared here 145 | static void oled_send_data(const uint8_t *data, size_t len) | ^~~~~~~~~~~~~~C:/Users/Lenovo/esp_electronic_piano/components/oled/src/oled.c: At top level:C:/Users/Lenovo/esp_electronic_piano/components/oled/src/oled.c:170:13: error: conflicting types for 'oled_init'; have 'void(void)' 170 | static void oled_init(void) | ^~~~~~~~~C:/Users/Lenovo/esp_electronic_piano/components/oled/include/oled.h:6:5: note: previous declaration of 'oled_init' with type 'int(void)' 6 | int oled_init(void); | ^~~~~~~~~C:/Users/Lenovo/esp_electronic_piano/components/oled/src/oled.c:227:13: error: static declaration of 'oled_draw_face_happy' follows non-static declaration 227 | static void oled_draw_face_happy(void) { | ^~~~~~~~~~~~~~~~~~~~C:/Users/Lenovo/esp_electronic_piano/components/oled/include/oled.h:11:6: note: previous declaration of 'oled_draw_face_happy' with type 'void(void)' 11 | void oled_draw_face_happy(void); | ^~~~~~~~~~~~~~~~~~~~C:/Users/Lenovo/esp_electronic_piano/components/oled/src/oled.c:264:13: error: static declaration of 'oled_draw_music_symbol' follows non-static declaration 264 | static void oled_draw_music_symbol(void) { | ^~~~~~~~~~~~~~~~~~~~~~C:/Users/Lenovo/esp_electronic_piano/components/oled/include/oled.h:12:6: note: previous declaration of 'oled_draw_music_symbol' with type 'void(void)' 12 | void oled_draw_music_symbol(void); | ^~~~~~~~~~~~~~~~~~~~~~C:/Users/Lenovo/esp_electronic_piano/components/oled/src/oled.c:270:13: error: conflicting types for 'oled_draw_menu'; have 'void(const char *, const char **, int)' 270 | static void oled_draw_menu(const char* title, const char* items[], int item_count) { | ^~~~~~~~~~~~~~C:/Users/Lenovo/esp_electronic_piano/components/oled/include/oled.h:13:6: note: previous declaration of 'oled_draw_menu' with type 'void(void)' 13 | void oled_draw_menu(void); | ^~~~~~~~~~~~~~C:/Users/Lenovo/esp_electronic_piano/components/oled/src/oled.c:270:13: warning: 'oled_draw_menu' defined but not used [-Wunused-function] 270 | static void oled_draw_menu(const char* title, const char* items[], int item_count) { | ^~~~~~~~~~~~~~C:/Users/Lenovo/esp_electronic_piano/components/oled/src/oled.c:264:13: warning: 'oled_draw_music_symbol' defined but not used [-Wunused-function] 264 | static void oled_draw_music_symbol(void) { | ^~~~~~~~~~~~~~~~~~~~~~C:/Users/Lenovo/esp_electronic_piano/components/oled/src/oled.c:227:13: warning: 'oled_draw_face_happy' defined but not used [-Wunused-function] 227 | static void oled_draw_face_happy(void) { | ^~~~~~~~~~~~~~~~~~~~C:/Users/Lenovo/esp_electronic_piano/components/oled/src/oled.c:170:13: warning: 'oled_init' defined but not used [-Wunused-function] 170 | static void oled_init(void) | ^~~~~~~~~[5/19] Building C object esp-idf/buzzer/CMakeFiles/__idf_buzzer.dir/src/buzzer.c.objFAILED: esp-idf/buzzer/CMakeFiles/__idf_buzzer.dir/src/buzzer.c.objccache D:\Espressif\tools\xtensa-esp-elf\esp-14.2.0_20241119\xtensa-esp-elf\bin\xtensa-esp32-elf-gcc.exe -DESP_PLATFORM -DIDF_VER=\"v5.5-dirty\" -DSOC_MMU_PAGE_SIZE=CONFIG_MMU_PAGE_SIZE -DSOC_XTAL_FREQ_MHZ=CONFIG_XTAL_FREQ -D_GLIBCXX_HAVE_POSIX_SEMAPHORE -D_GLIBCXX_USE_POSIX_SEMAPHORE -D_GNU_SOURCE -D_POSIX_READER_WRITER_LOCKS -IC:/Users/Lenovo/esp_electronic_piano/build/config -IC:/Users/Lenovo/esp_electronic_piano/components/buzzer/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/newlib/platform_include -ID:/Espressif/frameworks/esp-idf-v5.5/components/freertos/config/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/freertos/config/include/freertos -ID:/Espressif/frameworks/esp-idf-v5.5/components/freertos/config/xtensa/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/freertos/FreeRTOS-Kernel/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/freertos/FreeRTOS-Kernel/portable/xtensa/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/freertos/FreeRTOS-Kernel/portable/xtensa/include/freertos -ID:/Espressif/frameworks/esp-idf-v5.5/components/freertos/esp_additions/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_hw_support/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_hw_support/include/soc -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_hw_support/include/soc/esp32 -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_hw_support/dma/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_hw_support/ldo/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_hw_support/debug_probe/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_hw_support/mspi_timing_tuning/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_hw_support/mspi_timing_tuning/tuning_scheme_impl/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_hw_support/power_supply/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_hw_support/port/esp32/. -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_hw_support/port/esp32/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/heap/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/heap/tlsf -ID:/Espressif/frameworks/esp-idf-v5.5/components/log/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/soc/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/soc/esp32 -ID:/Espressif/frameworks/esp-idf-v5.5/components/soc/esp32/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/soc/esp32/register -ID:/Espressif/frameworks/esp-idf-v5.5/components/hal/platform_port/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/hal/esp32/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/hal/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_rom/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_rom/esp32/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_rom/esp32/include/esp32 -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_rom/esp32 -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_common/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_system/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_system/port/soc -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_system/port/include/private -ID:/Espressif/frameworks/esp-idf-v5.5/components/xtensa/esp32/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/xtensa/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/xtensa/deprecated_include -ID:/Espressif/frameworks/esp-idf-v5.5/components/driver/deprecated -ID:/Espressif/frameworks/esp-idf-v5.5/components/driver/i2c/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/driver/touch_sensor/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/driver/twai/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/driver/touch_sensor/esp32/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_pm/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_ringbuf/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_gpio/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_pcnt/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_gptimer/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_spi/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_mcpwm/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_ana_cmpr/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_i2s/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_sdmmc/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/sdmmc/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_sdspi/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_sdio/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_dac/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_rmt/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_tsens/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_sdm/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_i2c/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_uart/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_ledc/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_parlio/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_usb_serial_jtag/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_twai/include -mlongcalls -Wno-frame-address -fno-builtin-memcpy -fno-builtin-memset -fno-builtin-bzero -fno-builtin-stpcpy -fno-builtin-strncpy -fdiagnostics-color=always -ffunction-sections -fdata-sections -Wall -Werror=all -Wno-error=unused-function -Wno-error=unused-variable -Wno-error=unused-but-set-variable -Wno-error=deprecated-declarations -Wextra -Wno-error=extra -Wno-unused-parameter -Wno-sign-compare -Wno-enum-conversion -gdwarf-4 -ggdb -Og -fno-shrink-wrap -fmacro-prefix-map=C:/Users/Lenovo/esp_electronic_piano=. -fmacro-prefix-map=D:/Espressif/frameworks/esp-idf-v5.5=/IDF -fstrict-volatile-bitfields -fno-jump-tables -fno-tree-switch-conversion -std=gnu17 -Wno-old-style-declaration -MD -MT esp-idf/buzzer/CMakeFiles/__idf_buzzer.dir/src/buzzer.c.obj -MF esp-idf\buzzer\CMakeFiles\__idf_buzzer.dir\src\buzzer.c.obj.d -o esp-idf/buzzer/CMakeFiles/__idf_buzzer.dir/src/buzzer.c.obj -c C:/Users/Lenovo/esp_electronic_piano/components/buzzer/src/buzzer.cC:/Users/Lenovo/esp_electronic_piano/components/buzzer/src/buzzer.c:5598:13: error: conflicting types for 'buzzer_init'; have 'void(gpio_num_t)' 5598 | static void buzzer_init(gpio_num_t pin) | ^~~~~~~~~~~In file included from C:/Users/Lenovo/esp_electronic_piano/components/buzzer/src/buzzer.c:1:C:/Users/Lenovo/esp_electronic_piano/components/buzzer/include/buzzer.h:7:11: note: previous declaration of 'buzzer_init' with type 'esp_err_t(gpio_num_t)' {aka 'int(gpio_num_t)'} 7 | esp_err_t buzzer_init(gpio_num_t pin); | ^~~~~~~~~~~C:/Users/Lenovo/esp_electronic_piano/components/buzzer/src/buzzer.c:5620:13: error: conflicting types for 'buzzer_play_tone'; have 'void(uint32_t, uint32_t)' {aka 'void(long unsigned int, long unsigned int)'} 5620 | static void buzzer_play_tone(uint32_t freq_hz, uint32_t duration_ms) | ^~~~~~~~~~~~~~~~C:/Users/Lenovo/esp_electronic_piano/components/buzzer/include/buzzer.h:10:11: note: previous declaration of 'buzzer_play_tone' with type 'esp_err_t(uint32_t, uint32_t)' {aka 'int(long unsigned int, long unsigned int)'} 10 | esp_err_t buzzer_play_tone(uint32_t freq_hz, uint32_t duration_ms); | ^~~~~~~~~~~~~~~~In file included from D:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_gpio/include/driver/gpio.h:12, from C:/Users/Lenovo/esp_electronic_piano/components/buzzer/include/buzzer.h:2:C:/Users/Lenovo/esp_electronic_piano/components/buzzer/src/buzzer.c: In function 'buzzer_play_tone':D:/Espressif/frameworks/esp-idf-v5.5/components/esp_common/include/esp_err.h:22:25: error: 'return' with a value, in function returning void [-Wreturn-mismatch] 22 | #define ESP_OK 0 /*!< esp_err_t value indicating success (no error) */ | ^C:/Users/Lenovo/esp_electronic_piano/components/buzzer/src/buzzer.c:5625:16: note: in expansion of macro 'ESP_OK' 5625 | return ESP_OK; | ^~~~~~C:/Users/Lenovo/esp_electronic_piano/components/buzzer/src/buzzer.c:5620:13: note: declared here 5620 | static void buzzer_play_tone(uint32_t freq_hz, uint32_t duration_ms) | ^~~~~~~~~~~~~~~~D:/Espressif/frameworks/esp-idf-v5.5/components/esp_common/include/esp_err.h:22:25: error: 'return' with a value, in function returning void [-Wreturn-mismatch] 22 | #define ESP_OK 0 /*!< esp_err_t value indicating success (no error) */ | ^C:/Users/Lenovo/esp_electronic_piano/components/buzzer/src/buzzer.c:5635:12: note: in expansion of macro 'ESP_OK' 5635 | return ESP_OK; | ^~~~~~C:/Users/Lenovo/esp_electronic_piano/components/buzzer/src/buzzer.c:5620:13: note: declared here 5620 | static void buzzer_play_tone(uint32_t freq_hz, uint32_t duration_ms) | ^~~~~~~~~~~~~~~~C:/Users/Lenovo/esp_electronic_piano/components/buzzer/src/buzzer.c: At top level:C:/Users/Lenovo/esp_electronic_piano/components/buzzer/src/buzzer.c:5639:13: error: conflicting types for 'buzzer_play_key'; have 'void(int)' 5639 | static void buzzer_play_key(int key) | ^~~~~~~~~~~~~~~C:/Users/Lenovo/esp_electronic_piano/components/buzzer/include/buzzer.h:13:11: note: previous declaration of 'buzzer_play_key' with type 'esp_err_t(int)' {aka 'int(int)'} 13 | esp_err_t buzzer_play_key(int key); | ^~~~~~~~~~~~~~~C:/Users/Lenovo/esp_electronic_piano/components/buzzer/src/buzzer.c: In function 'buzzer_play_key':D:/Espressif/frameworks/esp-idf-v5.5/components/esp_common/include/esp_err.h:26:37: error: 'return' with a value, in function returning void [-Wreturn-mismatch] 26 | #define ESP_ERR_INVALID_ARG 0x102 /*!< Invalid argument */ | ^~~~~C:/Users/Lenovo/esp_electronic_piano/components/buzzer/src/buzzer.c:5641:38: note: in expansion of macro 'ESP_ERR_INVALID_ARG' 5641 | if (key = 16) return ESP_ERR_INVALID_ARG; | ^~~~~~~~~~~~~~~~~~~C:/Users/Lenovo/esp_electronic_piano/components/buzzer/src/buzzer.c:5639:13: note: declared here 5639 | static void buzzer_play_key(int key) | ^~~~~~~~~~~~~~~C:/Users/Lenovo/esp_electronic_piano/components/buzzer/src/buzzer.c: At top level:C:/Users/Lenovo/esp_electronic_piano/components/buzzer/src/buzzer.c:5639:13: warning: 'buzzer_play_key' defined but not used [-Wunused-function]C:/Users/Lenovo/esp_electronic_piano/components/buzzer/src/buzzer.c:5598:13: warning: 'buzzer_init' defined but not used [-Wunused-function] 5598 | static void buzzer_init(gpio_num_t pin) | ^~~~~~~~~~~[6/19] Building C object esp-idf/ws2812b/CMakeFiles/__idf_ws2812b.dir/src/ws2812b.c.objFAILED: esp-idf/ws2812b/CMakeFiles/__idf_ws2812b.dir/src/ws2812b.c.objccache D:\Espressif\tools\xtensa-esp-elf\esp-14.2.0_20241119\xtensa-esp-elf\bin\xtensa-esp32-elf-gcc.exe -DESP_PLATFORM -DIDF_VER=\"v5.5-dirty\" -DSOC_MMU_PAGE_SIZE=CONFIG_MMU_PAGE_SIZE -DSOC_XTAL_FREQ_MHZ=CONFIG_XTAL_FREQ -D_GLIBCXX_HAVE_POSIX_SEMAPHORE -D_GLIBCXX_USE_POSIX_SEMAPHORE -D_GNU_SOURCE -D_POSIX_READER_WRITER_LOCKS -IC:/Users/Lenovo/esp_electronic_piano/build/config -IC:/Users/Lenovo/esp_electronic_piano/components/ws2812b/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/newlib/platform_include -ID:/Espressif/frameworks/esp-idf-v5.5/components/freertos/config/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/freertos/config/include/freertos -ID:/Espressif/frameworks/esp-idf-v5.5/components/freertos/config/xtensa/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/freertos/FreeRTOS-Kernel/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/freertos/FreeRTOS-Kernel/portable/xtensa/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/freertos/FreeRTOS-Kernel/portable/xtensa/include/freertos -ID:/Espressif/frameworks/esp-idf-v5.5/components/freertos/esp_additions/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_hw_support/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_hw_support/include/soc -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_hw_support/include/soc/esp32 -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_hw_support/dma/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_hw_support/ldo/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_hw_support/debug_probe/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_hw_support/mspi_timing_tuning/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_hw_support/mspi_timing_tuning/tuning_scheme_impl/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_hw_support/power_supply/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_hw_support/port/esp32/. -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_hw_support/port/esp32/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/heap/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/heap/tlsf -ID:/Espressif/frameworks/esp-idf-v5.5/components/log/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/soc/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/soc/esp32 -ID:/Espressif/frameworks/esp-idf-v5.5/components/soc/esp32/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/soc/esp32/register -ID:/Espressif/frameworks/esp-idf-v5.5/components/hal/platform_port/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/hal/esp32/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/hal/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_rom/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_rom/esp32/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_rom/esp32/include/esp32 -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_rom/esp32 -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_common/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_system/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_system/port/soc -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_system/port/include/private -ID:/Espressif/frameworks/esp-idf-v5.5/components/xtensa/esp32/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/xtensa/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/xtensa/deprecated_include -ID:/Espressif/frameworks/esp-idf-v5.5/components/driver/deprecated -ID:/Espressif/frameworks/esp-idf-v5.5/components/driver/i2c/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/driver/touch_sensor/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/driver/twai/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/driver/touch_sensor/esp32/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_pm/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_ringbuf/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_gpio/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_pcnt/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_gptimer/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_spi/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_mcpwm/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_ana_cmpr/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_i2s/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_sdmmc/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/sdmmc/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_sdspi/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_sdio/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_dac/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_rmt/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_tsens/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_sdm/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_i2c/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_uart/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_ledc/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_parlio/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_usb_serial_jtag/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_twai/include -IC:/Users/Lenovo/esp_electronic_piano/managed_components/espressif__led_strip/include -IC:/Users/Lenovo/esp_electronic_piano/managed_components/espressif__led_strip/interface -mlongcalls -Wno-frame-address -fno-builtin-memcpy -fno-builtin-memset -fno-builtin-bzero -fno-builtin-stpcpy -fno-builtin-strncpy -fdiagnostics-color=always -ffunction-sections -fdata-sections -Wall -Werror=all -Wno-error=unused-function -Wno-error=unused-variable -Wno-error=unused-but-set-variable -Wno-error=deprecated-declarations -Wextra -Wno-error=extra -Wno-unused-parameter -Wno-sign-compare -Wno-enum-conversion -gdwarf-4 -ggdb -Og -fno-shrink-wrap -fmacro-prefix-map=C:/Users/Lenovo/esp_electronic_piano=. -fmacro-prefix-map=D:/Espressif/frameworks/esp-idf-v5.5=/IDF -fstrict-volatile-bitfields -fno-jump-tables -fno-tree-switch-conversion -std=gnu17 -Wno-old-style-declaration -MD -MT esp-idf/ws2812b/CMakeFiles/__idf_ws2812b.dir/src/ws2812b.c.obj -MF esp-idf\ws2812b\CMakeFiles\__idf_ws2812b.dir\src\ws2812b.c.obj.d -o esp-idf/ws2812b/CMakeFiles/__idf_ws2812b.dir/src/ws2812b.c.obj -c C:/Users/Lenovo/esp_electronic_piano/components/ws2812b/src/ws2812b.cC:/Users/Lenovo/esp_electronic_piano/components/ws2812b/src/ws2812b.c:36:13: error: conflicting types for 'ws2812b_init'; have 'void(void)' 36 | static void ws2812b_init(void){ | ^~~~~~~~~~~~In file included from C:/Users/Lenovo/esp_electronic_piano/components/ws2812b/src/ws2812b.c:1:C:/Users/Lenovo/esp_electronic_piano/components/ws2812b/include/ws2812b.h:7:5: note: previous declaration of 'ws2812b_init' with type 'int(void)' 7 | int ws2812b_init(void); | ^~~~~~~~~~~~C:/Users/Lenovo/esp_electronic_piano/components/ws2812b/src/ws2812b.c:115:5: error: conflicting types for 'ws2812b_init'; have 'int(void)' 115 | int ws2812b_init(void){ | ^~~~~~~~~~~~C:/Users/Lenovo/esp_electronic_piano/components/ws2812b/src/ws2812b.c:36:13: note: previous definition of 'ws2812b_init' with type 'void(void)' 36 | static void ws2812b_init(void){ | ^~~~~~~~~~~~C:/Users/Lenovo/esp_electronic_piano/components/ws2812b/src/ws2812b.c:36:13: warning: 'ws2812b_init' defined but not used [-Wunused-function]C:/Users/Lenovo/esp_electronic_piano/components/ws2812b/src/ws2812b.c:21:21: error: 'tp_to_led_idx' defined but not used [-Werror=unused-const-variable=] 21 | static const int8_t tp_to_led_idx[16] = { | ^~~~~~~~~~~~~cc1.exe: some warnings being treated as errors[7/19] Performing build step for 'bootloader'[1/118] Building C object esp-idf/log/CMakeFiles/__idf_log.dir/src/noos/log_timestamp.c.obj[2/118] Building C object esp-idf/log/CMakeFiles/__idf_log.dir/src/noos/util.c.obj[3/118] Building C object esp-idf/log/CMakeFiles/__idf_log.dir/src/noos/log_lock.c.obj[4/118] Building C object esp-idf/log/CMakeFiles/__idf_log.dir/src/log_timestamp_common.c.obj[5/118] Building C object esp-idf/log/CMakeFiles/__idf_log.dir/src/util.c.obj[6/118] Building C object esp-idf/esp_rom/CMakeFiles/__idf_esp_rom.dir/patches/esp_rom_crc.c.obj[7/118] Building C object esp-idf/log/CMakeFiles/__idf_log.dir/src/log_print.c.obj[8/118] Building C object esp-idf/log/CMakeFiles/__idf_log.dir/src/log_format_text.c.obj[9/118] Building ASM object esp-idf/esp_rom/CMakeFiles/__idf_esp_rom.dir/patches/esp_rom_longjmp.S.obj[10/118] Building C object esp-idf/log/CMakeFiles/__idf_log.dir/src/log.c.obj[11/118] Building C object esp-idf/esp_rom/CMakeFiles/__idf_esp_rom.dir/patches/esp_rom_uart.c.obj[12/118] Building C object esp-idf/esp_rom/CMakeFiles/__idf_esp_rom.dir/patches/esp_rom_sys.c.obj[13/118] Building C object esp-idf/log/CMakeFiles/__idf_log.dir/src/buffer/log_buffers.c.obj[14/118] Building C object esp-idf/esp_rom/CMakeFiles/__idf_esp_rom.dir/patches/esp_rom_efuse.c.obj[15/118] Building C object esp-idf/esp_rom/CMakeFiles/__idf_esp_rom.dir/patches/esp_rom_gpio.c.obj[16/118] Building C object esp-idf/esp_hw_support/CMakeFiles/__idf_esp_hw_support.dir/esp_memory_utils.c.obj[17/118] Building C object esp-idf/esp_hw_support/CMakeFiles/__idf_esp_hw_support.dir/port/esp32/esp_cpu_intr.c.obj[18/118] Building C object esp-idf/esp_hw_support/CMakeFiles/__idf_esp_hw_support.dir/port/esp32/cpu_region_protect.c.obj[19/118] Building C object esp-idf/esp_rom/CMakeFiles/__idf_esp_rom.dir/patches/esp_rom_print.c.obj[20/118] Building C object esp-idf/esp_common/CMakeFiles/__idf_esp_common.dir/src/esp_err_to_name.c.obj[21/118] Building C object esp-idf/esp_hw_support/CMakeFiles/__idf_esp_hw_support.dir/cpu.c.obj[22/118] Building C object esp-idf/efuse/CMakeFiles/__idf_efuse.dir/esp32/esp_efuse_table.c.obj[23/118] Building C object esp-idf/esp_hw_support/CMakeFiles/__idf_esp_hw_support.dir/port/esp32/chip_info.c.obj[24/118] Building C object esp-idf/esp_system/CMakeFiles/__idf_esp_system.dir/esp_err.c.obj[25/118] Building C object esp-idf/esp_rom/CMakeFiles/__idf_esp_rom.dir/patches/esp_rom_spiflash.c.obj[26/118] Building C object esp-idf/esp_hw_support/CMakeFiles/__idf_esp_hw_support.dir/port/esp32/rtc_init.c.obj[27/118] Building C object esp-idf/efuse/CMakeFiles/__idf_efuse.dir/esp32/esp_efuse_fields.c.obj[28/118] Building C object esp-idf/esp_hw_support/CMakeFiles/__idf_esp_hw_support.dir/port/esp32/rtc_time.c.obj[29/118] Building C object esp-idf/esp_hw_support/CMakeFiles/__idf_esp_hw_support.dir/port/esp32/rtc_clk_init.c.obj[30/118] Building C object esp-idf/esp_hw_support/CMakeFiles/__idf_esp_hw_support.dir/port/esp32/rtc_sleep.c.obj[31/118] Building C object esp-idf/efuse/CMakeFiles/__idf_efuse.dir/src/esp_efuse_fields.c.obj[32/118] Building C object esp-idf/efuse/CMakeFiles/__idf_efuse.dir/esp32/esp_efuse_utility.c.obj[33/118] Building C object esp-idf/bootloader_support/CMakeFiles/__idf_bootloader_support.dir/src/bootloader_efuse.c.obj[34/118] Building C object esp-idf/bootloader_support/CMakeFiles/__idf_bootloader_support.dir/src/bootloader_random.c.obj[35/118] Building C object esp-idf/bootloader_support/CMakeFiles/__idf_bootloader_support.dir/src/bootloader_mem.c.obj[36/118] Building C object esp-idf/efuse/CMakeFiles/__idf_efuse.dir/src/efuse_controller/keys/without_key_purposes/three_key_blocks/esp_efuse_api_key.c.obj[37/118] Building C object esp-idf/efuse/CMakeFiles/__idf_efuse.dir/src/esp_efuse_utility.c.obj[38/118] Building C object esp-idf/esp_hw_support/CMakeFiles/__idf_esp_hw_support.dir/port/esp32/rtc_clk.c.obj[39/118] Building C object esp-idf/efuse/CMakeFiles/__idf_efuse.dir/src/esp_efuse_api.c.obj[40/118] Building C object esp-idf/bootloader_support/CMakeFiles/__idf_bootloader_support.dir/src/secure_boot.c.obj[41/118] Building C object esp-idf/bootloader_support/CMakeFiles/__idf_bootloader_support.dir/src/bootloader_clock_init.c.obj[42/118] Linking C static library esp-idf\log\liblog.a[43/118] Building C object esp-idf/bootloader_support/CMakeFiles/__idf_bootloader_support.dir/src/bootloader_random_esp32.c.obj[44/118] Building C object esp-idf/bootloader_support/CMakeFiles/__idf_bootloader_support.dir/src/bootloader_common.c.obj[45/118] Building C object esp-idf/bootloader_support/CMakeFiles/__idf_bootloader_support.dir/src/bootloader_common_loader.c.obj[46/118] Building C object esp-idf/bootloader_support/CMakeFiles/__idf_bootloader_support.dir/src/flash_encrypt.c.obj[47/118] Building C object esp-idf/bootloader_support/CMakeFiles/__idf_bootloader_support.dir/bootloader_flash/src/flash_qio_mode.c.obj[48/118] Building C object esp-idf/bootloader_support/CMakeFiles/__idf_bootloader_support.dir/src/flash_partitions.c.obj[49/118] Building C object esp-idf/bootloader_support/CMakeFiles/__idf_bootloader_support.dir/src/bootloader_sha.c.obj[50/118] Building C object esp-idf/bootloader_support/CMakeFiles/__idf_bootloader_support.dir/src/esp32/bootloader_soc.c.obj[51/118] Building C object esp-idf/bootloader_support/CMakeFiles/__idf_bootloader_support.dir/src/bootloader_clock_loader.c.obj[52/118] Building C object esp-idf/bootloader_support/CMakeFiles/__idf_bootloader_support.dir/bootloader_flash/src/bootloader_flash_config_esp32.c.obj[53/118] Building C object esp-idf/bootloader_support/CMakeFiles/__idf_bootloader_support.dir/bootloader_flash/src/bootloader_flash.c.obj[54/118] Building C object esp-idf/bootloader_support/CMakeFiles/__idf_bootloader_support.dir/src/bootloader_console_loader.c.obj[55/118] Building C object esp-idf/hal/CMakeFiles/__idf_hal.dir/mpu_hal.c.obj[56/118] Building C object esp-idf/esp_bootloader_format/CMakeFiles/__idf_esp_bootloader_format.dir/esp_bootloader_desc.c.obj[57/118] Building C object esp-idf/bootloader_support/CMakeFiles/__idf_bootloader_support.dir/src/bootloader_console.c.obj[58/118] Building C object esp-idf/spi_flash/CMakeFiles/__idf_spi_flash.dir/spi_flash_wrap.c.obj[59/118] Building C object esp-idf/hal/CMakeFiles/__idf_hal.dir/hal_utils.c.obj[60/118] Building C object esp-idf/soc/CMakeFiles/__idf_soc.dir/dport_access_common.c.obj[61/118] Building C object esp-idf/hal/CMakeFiles/__idf_hal.dir/efuse_hal.c.obj[62/118] Building C object esp-idf/soc/CMakeFiles/__idf_soc.dir/lldesc.c.obj[63/118] Building C object esp-idf/hal/CMakeFiles/__idf_hal.dir/esp32/efuse_hal.c.obj[64/118] Building C object esp-idf/soc/CMakeFiles/__idf_soc.dir/esp32/interrupts.c.obj[65/118] Building C object esp-idf/bootloader_support/CMakeFiles/__idf_bootloader_support.dir/src/bootloader_panic.c.obj[66/118] Building C object esp-idf/hal/CMakeFiles/__idf_hal.dir/wdt_hal_iram.c.obj[67/118] Building C object esp-idf/bootloader_support/CMakeFiles/__idf_bootloader_support.dir/src/bootloader_init.c.obj[68/118] Building C object esp-idf/hal/CMakeFiles/__idf_hal.dir/esp32/cache_hal_esp32.c.obj[69/118] Linking C static library esp-idf\esp_rom\libesp_rom.a[70/118] Building C object esp-idf/bootloader_support/CMakeFiles/__idf_bootloader_support.dir/src/bootloader_utility.c.obj[71/118] Building C object esp-idf/bootloader_support/CMakeFiles/__idf_bootloader_support.dir/src/esp32/bootloader_esp32.c.obj[72/118] Building C object esp-idf/soc/CMakeFiles/__idf_soc.dir/esp32/dport_access.c.obj[73/118] Building C object esp-idf/soc/CMakeFiles/__idf_soc.dir/esp32/gpio_periph.c.obj[74/118] Building C object esp-idf/soc/CMakeFiles/__idf_soc.dir/esp32/uart_periph.c.obj[75/118] Building C object esp-idf/bootloader_support/CMakeFiles/__idf_bootloader_support.dir/src/esp_image_format.c.obj[76/118] Building C object esp-idf/soc/CMakeFiles/__idf_soc.dir/esp32/ledc_periph.c.obj[77/118] Building C object esp-idf/soc/CMakeFiles/__idf_soc.dir/esp32/spi_periph.c.obj[78/118] Building C object esp-idf/soc/CMakeFiles/__idf_soc.dir/esp32/emac_periph.c.obj[79/118] Building C object esp-idf/soc/CMakeFiles/__idf_soc.dir/esp32/adc_periph.c.obj[80/118] Building C object esp-idf/soc/CMakeFiles/__idf_soc.dir/esp32/pcnt_periph.c.obj[81/118] Building C object esp-idf/soc/CMakeFiles/__idf_soc.dir/esp32/i2s_periph.c.obj[82/118] Building C object esp-idf/soc/CMakeFiles/__idf_soc.dir/esp32/sdm_periph.c.obj[83/118] Building C object esp-idf/hal/CMakeFiles/__idf_hal.dir/mmu_hal.c.obj[84/118] Building C object esp-idf/soc/CMakeFiles/__idf_soc.dir/esp32/rmt_periph.c.obj[85/118] Building C object esp-idf/soc/CMakeFiles/__idf_soc.dir/esp32/touch_sensor_periph.c.obj[86/118] Building C object esp-idf/soc/CMakeFiles/__idf_soc.dir/esp32/wdt_periph.c.obj[87/118] Building C object esp-idf/soc/CMakeFiles/__idf_soc.dir/esp32/lcd_periph.c.obj[88/118] Building C object esp-idf/soc/CMakeFiles/__idf_soc.dir/esp32/i2c_periph.c.obj[89/118] Generating project_elf_src_esp32.c[90/118] Building C object esp-idf/soc/CMakeFiles/__idf_soc.dir/esp32/mcpwm_periph.c.obj[91/118] Building C object esp-idf/soc/CMakeFiles/__idf_soc.dir/esp32/sdmmc_periph.c.obj[92/118] Building C object esp-idf/soc/CMakeFiles/__idf_soc.dir/esp32/mpi_periph.c.obj[93/118] Building C object esp-idf/soc/CMakeFiles/__idf_soc.dir/esp32/twai_periph.c.obj[94/118] Building C object esp-idf/soc/CMakeFiles/__idf_soc.dir/esp32/timer_periph.c.obj[95/118] Building C object esp-idf/soc/CMakeFiles/__idf_soc.dir/esp32/dac_periph.c.obj[96/118] Building C object esp-idf/soc/CMakeFiles/__idf_soc.dir/esp32/sdio_slave_periph.c.obj[97/118] Building C object esp-idf/soc/CMakeFiles/__idf_soc.dir/esp32/power_supply_periph.c.obj[98/118] Building C object esp-idf/soc/CMakeFiles/__idf_soc.dir/esp32/rtc_io_periph.c.obj[99/118] Building C object esp-idf/xtensa/CMakeFiles/__idf_xtensa.dir/eri.c.obj[100/118] Linking C static library esp-idf\esp_common\libesp_common.a[101/118] Building C object esp-idf/xtensa/CMakeFiles/__idf_xtensa.dir/xt_trax.c.obj[102/118] Building C object esp-idf/main/CMakeFiles/__idf_main.dir/bootloader_start.c.obj[103/118] Building C object CMakeFiles/bootloader.elf.dir/project_elf_src_esp32.c.obj[104/118] Linking C static library esp-idf\esp_hw_support\libesp_hw_support.a[105/118] Building C object esp-idf/micro-ecc/CMakeFiles/__idf_micro-ecc.dir/uECC_verify_antifault.c.obj[106/118] Linking C static library esp-idf\esp_system\libesp_system.a[107/118] Linking C static library esp-idf\efuse\libefuse.a[108/118] Linking C static library esp-idf\bootloader_support\libbootloader_support.a[109/118] Linking C static library esp-idf\esp_bootloader_format\libesp_bootloader_format.a[110/118] Linking C static library esp-idf\spi_flash\libspi_flash.a[111/118] Linking C static library esp-idf\hal\libhal.a[112/118] Linking C static library esp-idf\micro-ecc\libmicro-ecc.a[113/118] Linking C static library esp-idf\soc\libsoc.a[114/118] Linking C static library esp-idf\xtensa\libxtensa.a[115/118] Linking C static library esp-idf\main\libmain.a[116/118] Linking C executable bootloader.elf[117/118] Generating binary image from built executableesptool.py v4.9.1Creating esp32 image...Merged 2 ELF sectionsSuccessfully created esp32 image.Generated C:/Users/Lenovo/esp_electronic_piano/build/bootloader/bootloader.bin[118/118] C:\Windows\system32\cmd.exe /C "cd /D C:\Users\Lenovo\esp_electronic_piano\build\bootloader\esp-idf\esptool_py && D:\Espressif\python_env\idf5.5_py3.11_env\Scripts\python.exe D:/Espressif/frameworks/esp-idf-v5.5/components/partition_table/check_sizes.py --offset 0x8000 bootloader 0x1000 C:/Users/Lenovo/esp_electronic_piano/build/bootloader/bootloader.bin"Bootloader binary size 0x6680 bytes. 0x980 bytes (8%) free.ninja: build stopped: subcommand failed. * 终端进程“D:\Espressif\tools\ninja\1.12.1\ninja.EXE”已终止,退出代码: 1。
KnHuui
Inkplate Library嵌入式e-Paper开发框架深度解析
呦呦Ruming
单引脚实现多按键检测基于ADC的ESP32创新设计方案(节省IO秘籍)
SW_孙维