パスワード送出器を作る (6)
今回の変更点は...
- いろいろあってやっと手にしたキーボードを Arduino の利点ともいえるライブラリを利用して、使ってみました。以下の URL にあるように Keypad.h を #include してやって、ピン割り当てやキー配置を指定する配列を定義してやると、あっさり使えました。この辺りが Arduino のありがたいところです。
https://lastminuteengineers.com/arduino-keypad-tutorial/ - 天皇陛下の即位の礼で休日だったこともあって、プログラミングを進めました。
① プログラムが起動したらパスコードを入力を求め、あらかじめ設定されたものと一致しなければ先に進まない。
② パスコードの入力後、0 ~ 9 のキーが押されると、対応する文字列を送出する。
③ 文字列の送出後に Enter を付加するかどうかのモード切替を実装。
④ LCD の焼き付きを防止するために、スクリーンセーバー的な機能を実装。 - デバッグモード(#defeine で DEBUG を定義しているとき)でなければ、シリアルポートからのデバック表示を行わないようにした。シリアルポートへの出力が有効になっていると、シリアルポートへの出力を受け付けてくれるターミナルが接続されていないと、無応答状態になってしまうため。
- 100円ショップで用意したプラスチックケースに、LCD とキーボード(薄膜キーパット)を貼り付け、接続ケーブルを中に引き込むための加工を行いました。
本当は... 更に、マイコン側で送出する文字列を変更できる UI を作りたかったのですが、現時点でマイコンに内蔵されているフラッシュメモリの約 9割を使用してしまっており、これ以上の機能を実装させることは困難な模様です。
というよりも、実際にプログラムを動作させるためには、39行目・40行目の #defeine をコメント化して、EEPROM に設定値を保存するコードをプログラムから除外しなければなりません。
ということで、送出する文字列はプログラムを直接編集して変更することに... まぁ、目的は達成できたのでいいか。(^-^;
使用したキーボードが皮膜タイプのものなので、ポコポコした感じですが、想定したようなものができあがりました。(^-^;
また、何かネタを思いついたら何か作ってみようと思います。
2019/10/24 追記
少し気になる部分があったので、修正しました。
- EEPROM に書き込む処理を行うときに #define する EEP_INIT をプログラムの先頭部分に移動させました。EEP_INIT が定義されていると、LCD 関係の #include を行わず、loop() の中でも処理を行わないようにしました。結果として、EEP_INIT が定義されているときはコンパイルが早く終わるようになりました。
- 文字列を送出する際に「何も付加しない」「Enter を付加」「TAB を付加」の 3モードを切り替えられるようにしました。
- LCD の表示を見直した。
LCD のライブラリを #include しないと、プログラムの使用量が 90% → 30% くらいになりました。LCD に表示するためのフォント情報がメモリを消費しているんだろうな...