Skip to content

eru01/pinPad

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

PinPad for Raspberry Pi (Orange Pi)

Raspberry Piによくあるテンキー+2ボタンを接続するためのモジュールです。直結するとI/Oが足りない or 足りても勿体ないことになるので、12ボタンを時間差でスキャンすることで信号線を6本に減らしています。

必要な環境

1. Raspberry Piかクローン

本家ラズパイでも良いですが、高いのでOrangePi Zeroをおすすめします。このコード(C91版)もOrangePi Zero用にGPIO周りを実装しています。他のボードを利用する場合はGPIO周りを修正してください。ちなみにOrangePiはAliExpressで買うと大体1週間で届きます。

2. 回路図を実装したもの

ユニバーサル基板でもできなくはないです(やりました)。ただ、とてもとても疲れます。C92にはPCBを出したいなぁ・・・

3. 2のモジュールとRaspberryPi(*Pi)を接続するコネクタ

6本の信号線(Vcc/GNDを入れると8本)を繋ぐ必要があります。逆接の保護回路は入っていないので、Vcc/GNDの繋ぎ間違いに注意してください。

使い方

このモジュールは、直近のリセット(D_CLR=L)以降にボタンが押されたかどうかを保持するように設計されています。そのためスキャン速度より短い間隔での連打は検出できません。基本的な使用手順は以下になります。

  1. D_CLRをLに落とす
  2. D_CLRをHにする
  3. SEL[3..0]を"0000"にセットする
  4. Q(コネクタ3番ピン)の値を読む
  5. SEL[3..0]を"0001"にセットする
  6. Qの値を読む
  7. 以下、"1111"まで繰り返し、最初に戻る

本来はSEL[3..0]の変更後、tpd待機する必要がありますが、RaspberryPiのGPIOの速度的に問題になることはないと思います。もし引っかかった場合は、nop等で待機を入れてください。