工業製造
産業用モノのインターネット | 工業材料 | 機器のメンテナンスと修理 | 産業プログラミング |
home  MfgRobots >> 工業製造 >  >> Manufacturing Technology >> 製造プロセス

Arduino用8ビットI/Oポートライブラリ:デジタル制御を拡張

必要な部品と材料

部品 詳細 数量
Arduino UNO 1
5mm赤色LED 1
単回転ポテンショメータ 10kΩ 1

使用ツール・サービス

このプロジェクトについて

Arduino用8ビットI/Oポートライブラリ

Arduino標準の digitalWrite() と digitalRead() は1ピンずつしか扱えません。7セグメント表示器、DIPスイッチ、DAC(D/Aコンバータ)など8ビット並列デバイスを接続する場合、8個のピンにビットパターン(例:0x37 → 00110111)を個別に書き込む必要があり、煩雑です。

このライブラリは任意の8ピンをひとまとめの8ビットポートとして扱えるようにします。入力・出力方向はコンストラクタまたは専用関数で 'O'(出力) / 'I'(入力) を指定。全5関数のみのシンプルな設計です。

関数一覧

  1. IO_Port_8bit(pin1...pin8, dir) — 8ピンと方向('O'/'I')を指定してポートオブジェクト生成。方向は固定。
  2. IO_Port_8bit(pin1...pin8) — 方向指定なしで生成。後から set_IO_direction() で変更可能(入出力切替可)。
  3. set_IO_direction(char dir) — 'I'で入力、'O'で出力に設定。未指定時はシリアルモニタにエラー表示。
  4. send_8bit_data(int byt) — 8ビットデータ(0〜255)を一括出力。255超えはエラー。
  5. get_8bit_data() — 8ピンの状態を読み取り、8ビット整数として返す。

使用例

例1:8個のLEDを1Hzで交互点滅

#include <IO_Port_8bit.h>
IO_Port_8bit myport(2,3,4,5,6,7,8,9,'O'); // 出力ポート生成

void setup() {}
void loop() {
  myport.send_8bit_data(85);  // 0b01010101 奇数番点灯
  delay(500);
  myport.send_8bit_data(170); // 0b10101010 偶数番点灯
  delay(500);
}

例2:LEDでバイナリカウント(0〜F)表示

#include <IO_Port_8bit.h>
IO_Port_8bit my8bitport(2,3,4,5,6,7,8,9);

void setup() {
  my8bitport.set_IO_direction('O');
}
void loop() {
  for(int i=0;i<16;i++) {
    my8bitport.send_8bit_data(i);
    delay(200);
  }
}

例3:アナログ入力電圧を8段LEDバーグラフで表示

#include <IO_Port_8bit.h>
IO_Port_8bit myport(2,3,4,5,6,7,8,9,'O');

void setup() {
  myport.send_8bit_data(255); delay(500);
  myport.send_8bit_data(0);
}
void loop() {
  int level = analogRead(A0);
  level = map(level, 0, 1023, 0, 80);
  if(level>70) myport.send_8bit_data(255);
  else if(level>60) myport.send_8bit_data(127);
  else if(level>50) myport.send_8bit_data(63);
  else if(level>40) myport.send_8bit_data(31);
  else if(level>30) myport.send_8bit_data(15);
  else if(level>20) myport.send_8bit_data(7);
  else if(level>10) myport.send_8bit_data(3);
  else if(level>0) myport.send_8bit_data(1);
  else myport.send_8bit_data(0);
}

例4:DIPスイッチから8ビット入力を取得しシリアル表示

#include <IO_Port_8bit.h>
IO_Port_8bit myport(2,3,4,5,6,7,8,9);

void setup() {
  Serial.begin(9600);
  myport.set_IO_direction('I');
  Serial.println("8-bit input port test");
}
void loop() {
  int input_byt = myport.get_8bit_data();
  Serial.print("received input = ");
  Serial.println(input_byt);
  delay(1000);
}

コード

ライブラリ本体はダウンロードのみ提供されています(プレビュー不可)。

回路図

8ピンから直接8ビットデータを入出力する接続例を示します。

製造プロセス

  1. Arduino Nano 33 IoT製 フライトシミュレーター2020用コックピットパネル - LCD&CDI表示
  2. Microsoft Flight Simulator 2020用Arduinoスイッチ&LEDパネル
  3. 学校向けスマート体温監視システム: 正確、リアルタイム、安全
  4. Arduino 64キー プロトタイピング キーボードマトリックス: シフトレジスタで自作キーボード
  5. 指紋認証でAndroid/iOS/Windows 10を自動ロック解除する「セーフゾーン」デバイスの製作
  6. Arduino Nano用 高性能2.8インチTFTシールド - 320×240 SPIディスプレイ
  7. Arduinoでゴキブリ制御システムを自作 - 30ドル以下で構築
  8. Arduino用絶縁アナログ入力回路の設計:LM331 V-F変換+フォトカプラでノイズ耐性を確保
  9. 安価なArduinoブレスコントローラー自作 - USB-MIDI対応でDAW直結
  10. DCモーター制御の極意:PID制御とPWM出力による速度・方向制御のエキスパートガイド
  11. Arduino向けスマート屋内ナビゲーションロボットキット