今さら聞けない電子回路入門 液晶表示のディジタル温度計


高校生から始めるArduinoマイコンプログラミング実験室

論理積でコンパクトに!nビット出力パターンの定石プログラミング

図1 AND演算(論理積)を使うと,特定のビットが1か0かを確認しつつ,そのビットだけを0または1に設定できる.プログラムを簡素化できるため,制約の多いマイコンでnビットの特定パターンを出力するときに有効な定石.画像クリックで動画を見る.または記事を読む.詳しくは,DigiKeyチャンネル

論理積を用いた効率的なプログラミング

Arduinoを用いた電子回路のプログラミングは,センサや表示装置といった周辺機器の制御に有用であり,7セグメントLEDや液晶キャラクタディスプレイ(LCD)を使ったデータ表示は,電子回路の学習者にとって有益です.

7セグメントLEDを例に

7セグメントLEDは,単一のディスプレイで数字を視覚的に表示する手段として広く使われています.このディスプレイは7つのLED(aからg)と小数点用のLED(DP)で構成され,Arduinoのディジタル・ピン(D2からD9)に接続することで,それぞれのセグメントの点灯/消灯を制御します.

数字「0」を表示するためには,gセグメントを除くすべてのセグメントを点灯させます.これは16進数で表現すると0x3Fとして扱うことができ,これによりプログラムの記述を簡素化できます.

Arduinoでは,特定のセグメントの点灯パターンを16進数で設定することで,各数字の表示を効率化します.

16進数「0x4F」は「0100 1111」というビット・パターンに対応し,これにより特定のセグメント(a,b,c,f,g)を点灯させ,他を消灯させることができます.このように,16進数と論理演算を組み合わせてセグメントごとのON/OFFを管理することで,コードをコンパクトに保ちつつ,読みやすさも向上します.

論理積(AND演算)を使うと,プログラムが簡素化されます.これは,特定のビットの状態を効率的に操作できるからです.具体的には,以下のようなメリットがあります.

  1. 特定ビットの確認や操作が簡単になる
  2. AND演算を使うと,特定のビットが1か0かを確認し,他のビットに影響を与えずにそのビットだけ操作できます.あるセグメント表示を点灯・消灯するために,設定したいセグメントだけを1にすることで他の表示に影響せずに制御できます.
  3. コードの読みやすさと短縮化
  4. 論理積を使うと,条件分岐や複雑な数式を使わずに一行のビット演算で結果を得られるため,コードの記述がシンプルになります.結果として,コードが短縮され,可読性も向上します.
  5. 効率的なメモリと計算の使用
  6. 論理演算は単純なビット操作で行われ,CPUにとって処理が速く,メモリ消費も少なく済みます.このため,リソースに制約の大きいArduinoのようなマイコンでは有効です.7セグメントLEDで特定のパターン(例:数字の「0」)を表示する際,`0x3F`というビットパターンを指定して論理積を用いることで,一括して必要なセグメントのみを点灯させられます.こうした一括指定により,コードが効率化されるとともに,プログラムも直感的に理解しやすくなります.
〈著:ZEPマガジン〉

動画を見る,または記事を読む

チャプタ・リスト

  • 1:04 7セグメントLED
  • 4:04 2進数・16進数と論理演算
  • 7:45 キャラクタ・ディスプレイ
  • 9:16 I2C通信
  • 10:44 センサで温度を計測して表示する

著者紹介

  • 2009年3月 京都大学大学院情報学研究科博士後期課程修了.日本学術振興会特別研究員(DC2),舞鶴工業高等専門学校助教,京都大学特定助教,奈良先端科学技術大学院大学助教,大阪大学講師
  • 2019年3月 大阪大学大学院工学研究科機械工学専攻准教授.ノイズシェーピング理論に基づく量子化器設計およびその応用に関する研究に従事.博士(情報学).

著書

  1. [VOD]Pythonで一緒に!ロボット制御のモデルベース設計【ロバスト制御編】,ZEPエンジニアリング株式会社.
  2. [VOD]Pythonで一緒に!ロボット制御のモデルベース設計【PID制御編】,ZEPエンジニアリング株式会社.
  3. [VOD]Pythonで一緒に!ロボット制御のモデルベース設計【状態フィードバック制御編】,ZEPエンジニアリング株式会社.
  4. [VOD/Pi2W KIT]ラズパイ×Pythonで動かして学ぶモータ制御入門,ZEPエンジニアリング株式会社.
  5. [VOD/KIT]ラズパイ×Pythonで動かして学ぶモータ制御入門,ZEPエンジニアリング株式会社.
  6. Pythonによる制御工学入門(改訂2版),オーム社(2024).
  7. 制御系設計論,コロナ社(2021).
  8. やさしくわかるシーケンス制御,オーム社(2020).
  9. Pythonによる制御工学入門,オーム社(2019).
  10. 倒立振子で学ぶ 制御工学,森北出版(2017).
  11. Arduino×Pythonで動かしながら学ぶモータ制御入門,トランジスタ技術 2020年9月号,CQ出版社.

参考文献

  1. [VOD/Pi KIT]MATLAB/Simulink×ラズパイで学ぶロボット制御入門,ZEPエンジニアリング株式会社.
  2. [VOD/KIT]MATLAB/Simulink×ラズパイで学ぶロボット制御入門,ZEPエンジニアリング株式会社.
  3. [VOD/Pi400 KIT]SLAMロボット&ラズパイ付き!ROSプログラミング超入門,ZEPエンジニアリング株式会社.
  4. [VOD/KIT]確率・統計処理&真値推定!自動運転時代のカルマン・フィルタ入門,ZEPエンジニアリング株式会社.