极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 12918|回复: 8

【求助】电子琴按键的问题

[复制链接]
发表于 2014-4-28 11:14:36 | 显示全部楼层 |阅读模式
本帖最后由 Stormer 于 2014-4-28 11:30 编辑

我用的中断来实现声音输出(不是用的ARDUINO自带的tone函数)。


如何做一个外部的键盘电路呢?因为有很多键啊,ARDUINO自带的这些口肯定不够用的。我想做一个外部的键盘电路,按下一个键的时候,就把一个特定的值返回到ARDUINO上去。这个需要用串口通信了是吗?


还有个问题,就是多个按键一起按下的时候怎么判断呢?因为键比较多,用IF ELSE这种组合来判断肯定是不行的了。



希望有做过类似电路的朋友给指点一下啊,多谢!!~~
回复

使用道具 举报

发表于 2014-4-28 13:08:36 | 显示全部楼层
找找坛子里的按键方案吧,应该类似。
回复 支持 反对

使用道具 举报

发表于 2014-4-29 02:09:32 | 显示全部楼层
用74HC165来扩展吧,一个芯片出8个按键~~
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-4-29 04:03:16 | 显示全部楼层
文少 发表于 2014-4-29 02:09
用74HC165来扩展吧,一个芯片出8个按键~~

非常感谢你的建议。只是这个芯片只能输出八个按键啊。如果我24键的话,就需要用3块芯片。而且,给ARDUINO连接的时候,也只能发送0、1这样的信号。同时还会占用好多接口。

我现在的目标是,自己设计制作一个扩展电路,这个电路只有一条(或者2、3条)连线,这个连线可以反馈一个2位或者3位的数字信号给主板。主板接收到这个数字后就可以很清楚的知道我按下的哪个键了。3位的话都能支持到999个键了。2位足够。

我是菜鸟啊,1个月前电阻的色环都不会看呢。。。现在就希望高手们可以给我指点一个方法就OK了。具体实现我再慢慢研究制作。
回复 支持 反对

使用道具 举报

发表于 2014-4-29 08:55:01 | 显示全部楼层
其实你的需求就是一个完整的电脑键盘可以满足。你可以找一个老式的PS/2键盘,或者USB键盘转PS/2口,然后用arduino现成的PS2库来读取编码,除了电源,只需要两根线
回复 支持 反对

使用道具 举报

发表于 2014-4-29 09:08:08 | 显示全部楼层
才发现你要把读取电子琴的键盘,那简单了,电子琴都有MIDI口输出,arduino有MIDI信号读写的程序。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-4-29 12:49:13 | 显示全部楼层
春泥蛋炒饭 发表于 2014-4-29 09:08
才发现你要把读取电子琴的键盘,那简单了,电子琴都有MIDI口输出,arduino有MIDI信号读写的程序。

多谢大神! 没有用猫做头像还是认出你来啦~
回复 支持 反对

使用道具 举报

发表于 2014-4-29 14:55:52 | 显示全部楼层
Stormer 发表于 2014-4-29 04:03
非常感谢你的建议。只是这个芯片只能输出八个按键啊。如果我24键的话,就需要用3块芯片。而且,给ARDUINO ...

1个或多个165串接起来,都是占用4个IO。
哪个按键按下,相应的数据位就有效,可单按可复按,互不干涉。
按键判断也不用加DELAY,参考官网 http://playground.arduino.cc/Code/ShiftRegSN74HC165N

另一种方法就是有人提到的MIDI,前提是你要使用MIDI键盘。
MIDI方法,你要熟悉MIDI的协议才好弄,你要判断0x90和0x80的开关音符指令,还涉及到单键,多键,不放手再按的情况,你不熟悉这些的话,几乎搞不了~~
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-5-1 06:01:32 | 显示全部楼层
文少 发表于 2014-4-29 14:55
1个或多个165串接起来,都是占用4个IO。
哪个按键按下,相应的数据位就有效,可单按可复按,互不干涉。
...

了解了,再次感谢 :)
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|联系我们|极客工坊

GMT+8, 2026-6-10 05:34 , Processed in 0.037203 second(s), 20 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表