概要
モーメンタリ動作の押しボタンスイッチ(タクトスイッチ)と7セグメントLEDを使用したカウンタ回路の製作例を紹介します. 開発環境は下記のとおりです.
Arduino IDE | Arduino 1.0.5-r2 |
---|
回路
回路図
私はArduinoを持っていませんので,Arduino Duemilanove互換回路をブレッドボード上に作成しました. 私がSW1として使用したタクトスイッチはLED内蔵ですが,このLEDは使用していません. SW1は負論理(押下されている時にLOW,押下されていない時にHIGH)になっています.
回路部品
下表は,回路図中のSW1と「7セグメントLED表示回路」部分の使用部品表です. 参考単価をクリックすると,秋月電子通商のページに飛びます. 「互換品」と記載されているリンクについては,互換性があると考えられる部品のページに飛びます. ただし,私が互換性および動作を確認したわけではありませんので,ご注意ください.
番号 | 部品名 | 型番 | 数量 | 参考単価 |
---|---|---|---|---|
SW1 | LED付き 押しボタンスイッチ |
Switronic ST-12-303FC-G (緑,正方形) |
1 | 150円 |
LED1 | 7セグメントLED | PARA LIGHT C-421E (カソードコモン) |
1 | |
R1 - R7 | 炭素皮膜抵抗 | 各社 1/4W 200Ω | 7 | 1円 (互換品) |
その他 | リード線など | 適量 |
スケッチ
SW1のチャタリングによる誤動作防止対策
タクトスイッチSW1を押下される度に,7セグメントLEDの表示数値をインクリメントするスケッチを作成しました. この動作を実現するためには,SW1のチャタリング対策が必要です.
下記のスケッチ例では,スイッチの状態を10ミリ秒の間隔を置いて2回確認するようにしています. スイッチが押下された状態の場合は,変数sw1_state_prevの値から前回のスイッチの状態を確認します. これはスイッチが押下された状態でインクリメントを複数回繰り返さないための判定処理です. sw1_state_prevがHIGHであればスイッチは押下直後ということになります.
スケッチ例
GitHubにて公開します.
完成
Webカメラで撮影したためピントが合っていません.ご了承ください.
7セグメントLEDカウンタ
製品紹介
サインスマート RFID マスターキット モーターサボー、LCD、多種のセンサー Arduino IDE/AVR/MCU勉強者用
posted with amazlet at 15.02.22
サインスマート(SainSmart)
売り上げランキング: 61,619
売り上げランキング: 61,619
プログラム教えてください。
返信削除