# MelodyOfTheRainbow
智创大赛主程序。详细内容见博客:[智创大赛设计:彩虹的旋律](https://swkfk.top/jump/RainbowPiano)
## 代码组织结构
- `RainbowPiano.ino`:程序入口,调度整个流程
- `ModuleStart.h`:通过宏定义控制各个模块的启动,方便调试
- `PinHandler.h` `PinHandler.cpp`:负责处理引脚初始化
- `TcsHandler.h` `TcsHandler.cpp`:负责处理色彩识别
- `PianoHandler.h` `PianoHandler.cpp`:负责处理钢琴触摸信号以及指示 LED 及背光 LED 的控制
- `BuzzerHandler.h` `BuzzerHandler.cpp`:负责蜂鸣器的控制
- `Utils.h` `Utils.cpp`:包含一些工具函数,如 RGB 色值转换、按钮状态读取、带电关机处理等
- `libMH_TCS34725.h` `libMH_TCS34725.cpp`:第三方库,读取色彩识别信号
- `libTTP229.h` `libTTP229.cpp`:修改过的第三方库,负责处理钢琴触摸
## 项目介绍
作品集三种功能于一体,既能通过手动演奏钢琴模块发声,又能读取屏幕上显示的色块合成乐音,同时,还可以在读取屏幕色彩变化的同时,亮起钢琴模块上相应的指示灯,以辅助用户演奏。
## 项目功能介绍
### 弹奏模式
由用户进行弹奏,并根据不同的音符呈现不同的光彩。
### 自动播放模式
通过乐曲识别模块读取印有不同颜色的滚动纸带,或者滚动播放不同颜色的手机画面,将颜色转化为音符,并通过蜂鸣器播放出来。
### 指导弹奏模式
同“自动播放模式”一样,需要识别乐曲,但并不是直接播放,而是亮起不同的 LED 指示灯,指导用户进行弹奏。
### 带电开关机器
同时按下三个按钮,可以触发关机,所有灯光、蜂鸣器与触摸板等将失去作用。再次同时按下三个按钮,可以自动开机。