2023/03/28(火曜日) 晴れ
工作したテンキーは昔のジャンク部品やマイコン工作用の小さなスイッチなど、
オンボロや安物部品を使っています。
そのためか動作が不安定で思ったようには動作してくれません。
テンキーのボタンスイッチを押すと、1回しか押さないのに同じ数字が何度も
取り込まれてしまいます。
チャタリングの影響かな?とパスコンを入れて対応をとりましたが、やっぱり
おかしくなります。 パスコン(0.22μF)では容量不足なのかと、容量を
増やしました(+0.33μF)がこれでもダメです。
何度もテストしているうちに動作がおかしくなるのは「1」と「2」キーが
多いです。(ほとんど「1」、「2」キーで発生しました。)
その出力波形はチャタリングというよりは「接触不良」のような状態です。
スイッチを経由してLEDを点滅させてみましたが、明らかに接触不良の状態
でした。
そこでスイッチを予備と交換しましたところ、やっと何とかデーター入力ができ
るようになりました。
さぁ、データ入力の実験を始めよう・・・としましたが、こんな問題がありました。
例えば数値として「345(さんびゃくよんじゅうご)」を入力する場合、マイコン
のメモリーには「3」、「4」、「5」と一桁の数字として記憶されます。
これを「345」にするには次のようにしなくてはなりません。
入力する文字数の数(桁)が固定であれば簡単?でしょうが、何桁の数字を入力するかが
不定の場合は入力した文字の数(桁数)を把握しなくてはなりません。
まぁ、文字を取り込む度にカウントアップすればいい(何とかなる)でしょう。
次はこの一つ一つの文字を桁数だけ読みだして「数値」にするにはどうするか?
単純に次のようにしてみました。
数値が4桁、5桁、ぐらいならコードもそんなに長くならないからいいけど、10桁、
12桁・・・と大きくなったら大変です。
ふぅむ・・・どうしよう?
桁数だけ10x10を繰り返せば桁の数値(重み)が算出できる?
桁が一つ下がったら 桁の(重み)は1/10になる?
試行錯誤を繰り返してプログラムを組みました。
開始カウント、停止カウントを指定してそのとおりにカウントを繰り返すカウンタの
プログラムです。
プログラムはなかなか思うようには動作しません。
桁の重み(数値)が合わないのです。 あれこれ試行錯誤してやっと動作しました。
さぁ、次は時刻の設定、測定間隔時間を設定してそのとおりに動作するか
の実験をしてみます。 (続く)