Taiko-Nijiiro-Analog-IOBoard/README_zh-CN.md
2023-12-24 18:40:11 -08:00

93 lines
4.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

[Click here for English documentation](README.md)
[日本語のドキュメントはこちら](README_ja-JP.md)
![Taiko Drum Controller](./images/banner-taiko.png)
# Taiko Drum Controller - Arduino (ATmega32U4/ESP32)
开源硬件程序帮助你制作自己的太鼓达人PC控制器。
## 关于本项目
本项目旨在帮助你在家制作自己的硬件太鼓。
**该程序仅供个人和非商业用途。**
## 你需要准备
1. 一个Arduino Micro/Leonardo (ATmega32U4) 板或一个Arduino Nano ESP (ESP32) 板。
大多数ATmega32U4板都可以工作但你需要验证它们是否支持键盘模拟像Arduino Uno这样的ATmega328P板则不行。
强烈推荐使用ESP32因为它比ATmega32U4强大得多。该项目使用了ESP32-WROOM-32板。
2. 4个压电传感器。
3. 8个100kΩ电阻。
4. 可选4个桥式整流器芯片比如[DB107](https://www.diodes.com/assets/Datasheets/products_inactive_data/ds21211_R5.pdf)(详见附加说明部分)。
5. 可选一些红色和蓝色的LED灯。
6. 必要的电子组件面包板、LED灯、跳线等
7. 木板和切割工具仅在你需要从头开始制作实体太鼓时使用。如果你有市售太鼓或大力鼓Lv.5,可以直接使用。
## 制作控制器的步骤
1. 制作鼓并将4个压电传感器牢固地粘贴在鼓上。参考图片以了解传感器的首选位置。
![传感器设置](./images/piezo_locations.png)
2. 按照以下方案将压电传感器和其他组件连接到控制器(压电传感器的极性无关紧要);
以下方案适用于Arduino Micro板。如果你使用不同的板请参考其文档了解连接信息。
![控制器方案](./images/scheme.png)
如果你选择添加桥式整流器,请使用以下方案:
![带桥式整流器的控制器方案](./images/scheme_bridge.png)
3. 将固件刷写到板上。
你可能需要微调一些参数,如`SAMPLE_CACHE_LENGTH`、`HIT_THRES`、`RESET_THRES`和`sensitivity`。详见下一节。
4. 玩得开心!
## 调整参数
1. 击打和重置阈值
设置`DEBUG 1`这会禁用键盘输出并从串行端口发送信号值刷写固件在鼓的4个区域之一上滚动然后从串行监视器的输出中查看图表。击打阈值应低于你在鼓上的最重击打重置阈值应高于连续击打之间的低谷。重置值也应低于击打值。
为剩下的3个区域重复此过程并找到适合所有区域的最佳值。
![设置击打和重置值](./images/tune_hit_reset.png)
2. 采样长度
为了最大化运行速度,`cache.h`库已优化为支持2的幂次方窗口大小的`SAMPLE_CACHE_LENGTH`。这意味着2、8、16、32等。实际上对于Arduino来说16是最佳值但如果你有一个能以至少4000Hz或更高速度采样输入的强大微控制器你可以将值改为32以获得更平滑换句话说更少噪声的曲线。
3. 灵敏度
并非所有压电传感器都是相同的由于安装错误4个传感器捕获的信号可能有显著差异。灵敏度值是用来规范这些差异的乘数。在以下示例中右边的don区域产生的值比其余3个区域高得多所以你可以调整`sensitivity`为`{1.0, 1.0, 0.5, 1.0}`来解决这个问题。
![设置灵敏度值](./images/tune_sensitivities.png)
请注意,传感器的安装非常关键。你应该确保传感器牢固地贴在木头上,并且位置适当。
## 附加说明
1. 为什么使用桥式整流器
如果不对压电传感器的电压进行偏置,它们的输出电压范围约为-5V到+5V。然而模拟输入的ADC只接受正电压值ESP32为0-3.3VATmega32U4为0-5V。当它们接收到负电压时通常会被简单地截断为0。
对于普通的电子鼓来说,这通常没问题,因为我们只是失去了一半的输入能量,而这并不影响我们计算击打时间的方式。但是对于*太鼓*鼓来说特别是像ATmega32U4这样的慢处理器可能会造成问题。
在太鼓鼓中所有4个振动部件都连接在一起这意味着如果你击打左边的don处理器也会接收到左边的kat、右边的don和右边的kat的信号。如果左边的don压电传感器一开始就产生负电压并被ADC截断它将导致约3到4毫秒的轻微“延迟”处理器可能会错误地将这次击打视为右边的don、左边的kat甚至右边的kat取决于哪个发送了最高的正值。
使用桥式整流器,所有负值都转换为正值。换句话说,就像`abs()`函数,确保我们不会丢失任何负电压。
![为什么使用桥式整流器](./images/bridge_signal.png)