CN106781842B - 一种钢琴按键动作自适应识别系统及方法 - Google Patents
一种钢琴按键动作自适应识别系统及方法 Download PDFInfo
- Publication number
- CN106781842B CN106781842B CN201611071261.8A CN201611071261A CN106781842B CN 106781842 B CN106781842 B CN 106781842B CN 201611071261 A CN201611071261 A CN 201611071261A CN 106781842 B CN106781842 B CN 106781842B
- Authority
- CN
- China
- Prior art keywords
- key
- adc
- bot
- value
- array
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G09—EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
- G09B—EDUCATIONAL OR DEMONSTRATION APPLIANCES; APPLIANCES FOR TEACHING, OR COMMUNICATING WITH, THE BLIND, DEAF OR MUTE; MODELS; PLANETARIA; GLOBES; MAPS; DIAGRAMS
- G09B15/00—Teaching music
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Business, Economics & Management (AREA)
- Physics & Mathematics (AREA)
- Educational Administration (AREA)
- Educational Technology (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Electrophonic Musical Instruments (AREA)
Abstract
一种钢琴按键动作自适应识别系统及方法,主要包括有按键检测单元和主控单元。步骤如下:(1)申请数组BOT[7](2)初始外围设备(3)扫描一次ADC值(4)将所有LED逐渐点亮并关闭,提示设备已经准备好,并且防止设备开机时IO状态不稳,LED被误点亮(5)设备进入工作状态(6)循环扫描7个白键的ADC值(7)本次ADC数值仅大于上升门限VH[i],通过UART发送按键按下信号,ADC值小于下降门限VL[i],发送按键抬起信号,回步骤5进行下轮扫描。本发明采用滞回比较方法,抬起按键和按下按键反射光电管输出电压差值的1/3和2/3作为比较值,有效的解决误触发问题,准确率较高,稳定可靠,使用方便。
Description
技术领域
本发明涉及音乐教育辅助领域。
背景技术
随着人民的生活水平的不断提高,钢琴教育在越来越多的家庭中流行起来,市场上出现很多的钢琴教育辅助产品。几乎所有的钢琴教育辅助产品都需要提示用户按键,以及检测按键动作产生的音符是否为正确的音符。
按键动作检测的方法有很多,如采用拾音器采集音频然后分析音频频率从而识别音符,识别单音比较准确,但在识别和弦音时准确率较低;采用机械开关式触碰按键,按键动作时带动开关动作从而检测按键动作,稳定可靠,但是需要调节开关高度及设备高度,使用极其不方便;也可采用光电式开关,使用光电开关检测按键和开关的距离,按键动作时光电开关输出电压变化,通过识别电压的变化检测按键的动作,但是每次设备放置到琴键上时,开关和琴键的距离都不一样,以及光照条件的不同使得光电开关输出电压的初始值每次都不一样,这样就很难设定开关电压的阈值,造成设备的误触发,使得音符识别的准确率很低。
它们的不足之处在于:由于外部影响,如工频干扰,大功率射频干扰等,反射光电管输出电压会叠加一定的噪声电压,这样在琴键按下或抬起的过程中会多次达到触发条件,导致误发多次抬起或按下的信号,影响正常使用。
发明内容
本发明的目的是提供一种识别的准备率较高的钢琴按键动作自适应识别系统及方法。
本发明主要包括有按键检测单元和主控单元。
其中,在钢琴的88个琴键中,最低的3个音符和最高的1个音符一般很少触碰到,本发明包括七个检测板组成的84个按键检测单元,以及由蓝牙模块、供电模块组成的主控单元。按键检测单元与主控单元之间采用四根线连接,分别为电源VCC、电源GND、通信发送TX及通信接收RX。每个按键检测单元包括一个检测用MCU、5个黑键对射检测光电管和7个白键检测反射光电管,黑键检测用对射光电管的电压输出直接和检测用MCU的IO口相连,检测用MCU通过判断IO口的高低电平来判断按键按下或抬起的状态,白键检测用反射光电管输出接单片机ADC输入口,通过不断扫描光电管输出电压来判断按键状态,12个高灌电流IO口驱动LED用于提示按键位置。主控单位包括一个主控MCU、一个蓝牙通信模块和一个供电模块组成,供电模块用以降低电压,主控MCU和蓝牙模块相连,用来接收上位机通过蓝牙发出的指示命令并转发送给检测板上的提示LED,主控模块和检测板相连,接收检测板发来的按键状态并通过蓝牙转交给上位机。
基于钢琴按键动作自适应识别系统,钢琴按键动作自适应识别方法具体步骤如下:
(1)申请数组BOT[7],用于存储白键在未按下时反射光电管输出的电压;申请数组TOP[7],用于保存白键在按下时反射光电管输出电压,申请数组VH[7],用于保存上升门限电压;申请数组VL[7],用于保存下降门限电压;
(2)初始外围设备,将系统时钟配置为内部RC时钟,频率16MHz;串口波特率配置为115200;所有LED驱动IO设备为灌电流输入,将所有反射光电管输入的IO口设置为模拟输入,内部ADC初始化;
(3)扫描一次ADC值,将数值赋给数组BOT[i],其中i的范围为0~6,表示第(i+1)个白键在未按下时反射光电管输出电压,同时将BOT[i]+6赋给TOP[i]作为初始值,将BOT[i]+4赋给VH[i]作为初始值,将BOT[i]+2赋给VH[i]作为初始值;
(4)将所有LED逐渐点亮并关闭,提示设备已经准备好,并且防止设备开机时IO状态不稳,LED被误点亮;
(5)设备进入工作状态,即循环扫描5个黑键的状态,以及7个白键的状态,扫描黑键时,检测5个光电管输出电平的高低,即MCU对应IO口的电平,即可确定黑键状态,如果检测到黑键被按下,就通过UART串口发出给主控MCU,再通过蓝牙上传到上位机;
(6)循环扫描7个白键的ADC值,存入本次扫描ADC数组,读取每个ADC值时都读取6次,然后做一次中值滤波,数值作为当次ADC值,如果本次ADC值大于按下状态的ADC极值TOP[i],就将本次ADC值赋给TOP[i],并且更新上升门限数组VH[i]=BOT[i]+(TOP[i]-BOT[i])*2/3;下降门限阈值VL[i]=BOT[i]+(TOP[i]-BOT[i])*1/3;这样每次按键按下时都会检查按键按下的深度是否达到更深,如果更深则更新识别参数,做到了越使用识别越准确;
(7)如果本次ADC数值仅大于上升门限VH[i],则通过UART发送按键按下信号,如果ADC值小于下降门限VL[i],则发送按键抬起信号。回到步骤5进行下轮扫描。
本发明与现有技术相比具有如下优点:采用滞回比较的方法,抬起按键和按下按键反射光电管输出电压差值的1/3和2/3作为比较值,有效的解决误触发问题,准确率较高,稳定可靠,使用方便。
附图说明
图1为本发明的钢琴按键动作检测系统的结构框图;
图2为本发明的钢琴按键动作自适应方法的流程图。
具体实施方式
在图1所示的本发明的示意简图中,本发明主要包括有按键检测单元和主控单元。
其中,在钢琴的88个琴键中,最低的3个音符和最高的1个音符一般很少触碰到,本发明包括七个检测板组成的84个按键检测单元,以及由蓝牙模块、供电模块组成的主控单元。按键检测单元与主控单元之间采用四根线连接,分别为电源VCC、电源GND、通信发送TX及通信接收RX。每个按键检测单元包括一个检测用MCU、5个黑键对射检测光电管和7个白键检测反射光电管,黑键检测用对射光电管的电压输出直接和检测用MCU的IO口相连,检测用MCU通过判断IO口的高低电平来判断按键按下或抬起的状态,白键检测用反射光电管输出接单片机ADC输入口,通过不断扫描光电管输出电压来判断按键状态,12个高灌电流IO口驱动LED用于提示按键位置。主控单位包括一个主控MCU、一个蓝牙通信模块和一个供电模块组成,供电模块用以降低电压,主控模块和蓝牙模块相连,用来接收上位机通过蓝牙发出的指示命令并转发送给检测板上的提示模块,主控模块和检测板相连,接收检测板发来的按键状态并通过蓝牙转交给上位机。
在图2所示的本发明的示意简图中,基于钢琴按键动作自适应识别系统,钢琴按键动作自适应识别方法具体步骤如下:
1、申请数组BOT[7],用于存储白键在未按下时反射光电管输出的电压;申请数组TOP[7],用于保存白键在按下时反射光电管输出电压,申请数组VH[7],用于保存上升门限电压;申请数组VL[7],用于保存下降门限电压;
2、初始外围设备,将系统时钟配置为内部RC时钟,频率16MHz;串口波特率配置为115200;所有LED驱动IO设备为灌电流输入,将所有反射光电管输入的IO口设置为模拟输入,内部ADC初始化;
步骤3,扫描一次ADC值,将数值赋给数组BOT[i],其中i的范围为0~6,表示第(i+1)个白键在未按下时反射光电管输出电压,同时将BOT[i]+6赋给TOP[i]作为初始值,将BOT[i]+4赋给VH[i]作为初始值,将BOT[i]+2赋给VH[i]作为初始值;
4、将所有LED逐渐点亮并关闭,提示设备已经准备好,并且防止设备开机时IO状态不稳,LED被误点亮;
5、设备进入工作状态,即循环扫描5个黑键的状态,以及7个白键的状态,扫描黑键时,检测5个光电管输出电平的高低,即MCU对应IO口的电平,即可确定黑键状态,如果检测到黑键被按下,就通过UART串口发出给主控MCU,再通过蓝牙上传到上位机;
步骤6,循环扫描7个白键的ADC值,存入本次扫描ADC数组,读取每个ADC值时都读取6次,然后做一次中值滤波,数值作为当次ADC值,如果本次ADC值大于按下状态的ADC极值TOP[i],就将本次ADC值赋给TOP[i],并且更新上升门限数组VH[i]=BOT[i]+(TOP[i]-BOT[i])*2/3;下降门限阈值VL[i]=BOT[i]+(TOP[i]-BOT[i])*1/3;这样每次按键按下时都会检查按键按下的深度是否达到更深,如果更深则更新识别参数,做到了越使用识别越准确;
步骤7,如果本次ADC数值仅大于上升门限VH[i],则通过UART发送按键按下信号,如果ADC值小于下降门限VL[i],则发送按键抬起信号。回到步骤5进行下轮扫描。
Claims (1)
1.一种钢琴按键动作自适应识别方法,识别系统主要包括按键检测单元和主控单元,按键检测单元与主控单元之间采用四根线连接,分别为电源VCC、电源GND、通信发送TX及通信接收RX,每个按键检测单元包括一个检测用MCU、5个黑键对射检测光电管和7个白键检测反射光电管,黑键对射检测光电管的电压输出直接和检测用MCU的IO口相连,检测用MCU通过判断IO口的高低电平来判断按键按下或抬起的状态,白键检测反射光电管输出接单片机ADC输入口,通过不断扫描光电管输出电压来判断按键状态,12个高灌电流IO口驱动LED用于提示按键位置;主控单元由一个主控MCU、一个蓝牙通信模块和一个供电模块组成,供电模块用以降低电压,主控MCU和蓝牙通信模块相连,用来接收上位机通过蓝牙发出的指示命令并转发送给按键检测单元上的MCU控制LED,主控MCU和按键检测单元相连,接收按键检测单元发来的按键状态并通过蓝牙转交给上位机,其特征在于:钢琴按键动作自适应识别方法具体步骤如下:
(1)申请数组BOT[7],用于存储白键在未按下时反射光电管输出的电压;申请数组TOP[7],用于保存白键在按下时反射光电管输出电压,申请数组VH[7],用于保存上升门限电压;申请数组VL[7],用于保存下降门限电压;
(2)初始外围设备,将系统时钟配置为内部RC时钟,频率16MHz;串口波特率配置为115200;所有LED驱动IO设备为灌电流输入,将所有反射光电管输入的IO口设置为模拟输入,内部ADC初始化;
(3)扫描一次ADC值,将数值依次赋给数组BOT中的元素BOT[i],其中i的范围为0~6,表示第(i+1)个白键在未按下时反射光电管输出电压,同时依次将BOT[i]+6赋给TOP[i]作为初始值,将BOT[i]+4赋给VH[i]作为初始值,将BOT[i]+2赋给VL[i]作为初始值;
(4)将所有LED逐渐点亮并关闭,提示设备已经准备好,并且防止设备开机时IO状态不稳,LED被误点亮;
(5)设备进入工作状态,即循环扫描5个黑键的状态,以及7个白键的状态,扫描黑键时,检测5个光电管输出电平的高低,即MCU对应IO口的电平,即可确定黑键状态,检测到黑键被按下,就通过UART串口发出给主控MCU,再通过蓝牙上传到上位机;
(6)循环扫描7个白键的ADC值,存入本次扫描ADC数组,读取每个ADC值时都读取6次,然后做一次中值滤波,数值作为当次ADC值,如果本次ADC值大于按下状态的ADC极值TOP[i],就将本次ADC值赋给TOP[i],并且更新上升门限数组VH[i]=BOT[i]+(TOP[i]-BOT[i])*2/3中的元素;下降门限阈值VL[i]=BOT[i]+(TOP[i]-BOT[i])*1/3中的元素;这样每次按键按下时都会检查按键按下的深度是否达到更深,更深则更新识别参数,做到了越使用识别越准确;
(7)如果本次ADC数值大于上升门限数组VH[i],则通过UART发送按键按下信号,ADC值小于下降门限阈值VL[i],则发送按键抬起信号,回到步骤5进行下轮扫描。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611071261.8A CN106781842B (zh) | 2016-11-29 | 2016-11-29 | 一种钢琴按键动作自适应识别系统及方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611071261.8A CN106781842B (zh) | 2016-11-29 | 2016-11-29 | 一种钢琴按键动作自适应识别系统及方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106781842A CN106781842A (zh) | 2017-05-31 |
CN106781842B true CN106781842B (zh) | 2020-05-19 |
Family
ID=58905188
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201611071261.8A Active CN106781842B (zh) | 2016-11-29 | 2016-11-29 | 一种钢琴按键动作自适应识别系统及方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106781842B (zh) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20090012450A (ko) * | 2007-07-30 | 2009-02-04 | 엘지전자 주식회사 | 디지털 기기에서의 터치키 감도 조절장치 및 방법 |
CN104935320A (zh) * | 2014-03-20 | 2015-09-23 | 安凯(广州)微电子技术有限公司 | 一种电容式触摸按键状态的检测方法 |
CN104954965A (zh) * | 2015-05-08 | 2015-09-30 | 华为技术有限公司 | 耳机按键的检测方法及装置 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103700364B (zh) * | 2013-12-12 | 2017-01-04 | 马季平 | 一种改进的用于演奏的光电键盘装置 |
CN104835485A (zh) * | 2015-04-08 | 2015-08-12 | 华平信息技术股份有限公司 | 钢琴采播装置及其琴键校准方法和琴键信号采样方法 |
CN105634503B (zh) * | 2015-12-28 | 2018-07-31 | 北京锦鸿希电信息技术股份有限公司 | 检测键盘键值的方法及装置 |
CN105679294A (zh) * | 2016-03-02 | 2016-06-15 | 大连佳音科技有限公司 | 一种自适应安装的钢琴演奏动作检测装置 |
-
2016
- 2016-11-29 CN CN201611071261.8A patent/CN106781842B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20090012450A (ko) * | 2007-07-30 | 2009-02-04 | 엘지전자 주식회사 | 디지털 기기에서의 터치키 감도 조절장치 및 방법 |
CN104935320A (zh) * | 2014-03-20 | 2015-09-23 | 安凯(广州)微电子技术有限公司 | 一种电容式触摸按键状态的检测方法 |
CN104954965A (zh) * | 2015-05-08 | 2015-09-30 | 华为技术有限公司 | 耳机按键的检测方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN106781842A (zh) | 2017-05-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102006367B (zh) | 一种手机响铃的控制方法及采用该方法的手机 | |
US8111136B2 (en) | USB fingerprint scanner with touch sensor | |
US20100245289A1 (en) | Apparatus and method for optical proximity sensing and touch input control | |
CN102221939A (zh) | 运算装置、运动检测装置及电子设备 | |
US8111135B2 (en) | USB fingerprint scanner with touch sensor | |
CN103713784A (zh) | 电容式触摸检测电路、装置及其防污渍致误识别的方法 | |
CN104157276B (zh) | 一种钢琴键盘动作的光电检测装置及其检测方法 | |
US20180210606A1 (en) | Touch control panel, terminal device and method for detecting touch point | |
CN104616653A (zh) | 唤醒词匹配方法、装置以及语音唤醒方法、装置 | |
EP4216036A1 (en) | Method for performing operation on intelligent wearing device by using gesture, and intelligent wearing device | |
CN105204649A (zh) | 一种移动终端解锁的方法及装置 | |
CN107123334A (zh) | 一种智能钢琴学习机及其控制方法 | |
CN106781842B (zh) | 一种钢琴按键动作自适应识别系统及方法 | |
KR20170073637A (ko) | 츄잉 검출장치 | |
CN104423616B (zh) | 输入装置及控制单元 | |
US20090239708A1 (en) | Heart pulse detector with speed control for treadmill | |
CN112306276B (zh) | 自适应触控面板系统及其自适应方法 | |
CN102594363A (zh) | 电容式触控按键的扫描方法及判断按压方法 | |
CN101957736A (zh) | 电子阅读装置和电子阅读装置的控制方法 | |
CN204679516U (zh) | 加样检测装置 | |
CN103020000B (zh) | 计算器 | |
CN105549735A (zh) | 控制方法、控制装置及电子装置 | |
US20140160013A1 (en) | Switching device | |
CN205301900U (zh) | 一种开关 | |
KR0184500B1 (ko) | 광결합기 데이타 검출방법 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |