#1 楼
如果您只想制作键盘而不使用Makey Makey,则可以使用Raspberry Pi的GPIO功能来实现。但是像以前评论的那样,Raspberry Pi没有足够的可用引脚来使键盘真正有用。我的建议是将2个I2C IC连接到Raspberry Pi上的I2C总线,然后使用它们来创建自己的扫描矩阵。如果使用一个PCF8574,则有8个I / O引脚;如果使用PCF8575,则甚至有16个I / O引脚。通过组合,可以得到以下扫描矩阵:
64个键:(2x PCF8574)
128个键:(1x PCF8574和1x PCF8575)
您必须始终将其中之一用作输出,并将其中之一用作输入。在输出上,您可以从第0位到第n位(7或15)“行走”,这些是矩阵的列。另一方面,您不断读取输入的值,这些是矩阵的行。按下的键是有效的输出位和有效的输入位“ 1”的组合。
实际上创建矩阵的工作量最大,并且在使用该二极管时,请不要忘记在矩阵中的每个开关之后都添加一个二极管,该二极管(正常的1N4148可以正常工作)需要放置在开关的阳极和阴极的行上。该二极管上的0.6V压降应该不是问题,其余(3.3V-0.6V)2.7V仍应为逻辑'1'。
/>之所以这样做,是因为它将防止鬼影和按键掩盖之类的事情。重影是一种效果,如果您同时按下三个以上的键,则可能会解释为完全不同的键,因为更多行将具有逻辑“ 1”。屏蔽的作用是,如果您按下多个键并释放一个键,则在某些情况下将不会检测到该效果,因为该键的行仍为逻辑'1'。
图中显示了重影的一个示例,按下了按钮A,B,D,并且在第1列处于活动状态时,除了第1行(对于按钮A)以外,第2行(对于按钮C)也很高。 ,这是不正确的。
在经历了整个硬件冒险之后,您需要编写或改编内核驱动程序才能在Linux下实际使用键盘。一个很好的起点可能是此链接:TCA6416 I2C IO扩展器上的按键驱动程序,这是一个类似的想法,但是仅使用16键键盘。
希望这对您有所帮助。 >
#2 楼
如果您想使一个完整的键盘能够真正打开,最好将USB键盘上的IC断开。要么将PCB本身保留在系统中无法看到的深处,要么将导线连接到交换机,或者使用相同的矩阵制作定制的东西。如果您真的需要更改电气矩阵,那么您可能需要从头开始进行自己的设计,但实际上并没有必要。
即使有了定制板,您仍然可以得到枚举并可以用作USB键盘的东西,而无需定制驱动程序。
评论
太棒了。据我所知,RPi的输入少于arduino,因此可以使用矩阵并使用18个输入处理81个键(9x9矩阵)来代替每个键的输入,因此我认为这不会有所帮助。 br />
@Craig,所以您的意思是组合这样的输入:arduino.cc/playground/Main/KeypadTutorial
@sventech是的。我不熟悉makey makey,所以不知道其高阻开关将如何与矩阵相互作用。