ユーザ用ツール

サイト用ツール


ja-jp_products:mpaino_8a8r

差分

このページの2つのバージョン間の差分を表示します。

この比較画面へのリンク

両方とも前のリビジョン前のリビジョン
次のリビジョン
前のリビジョン
ja-jp_products:mpaino_8a8r [2026/09/12 16:58] – 바깥 편집 127.0.0.1ja-jp_products:mpaino_8a8r [2026/10/25 10:18] (現在) – 外部編集 127.0.0.1
行 1: 行 1:
 ====== MPAINO-8A8R ====== ====== MPAINO-8A8R ======
  
-MPAINO Seriesは、CPUモジュールとデジタル入力・出力モジュールを組み合わせた組立式の産業用Arduinoです。 \\+MPAINO Seriesは、CPUモジュールとデジタル入力・出力モジュールを組み合わせた産業用Arduinoです。 \\
 アナログ入出力、温度センサ入力、高速パルス出力の各モジュールをオプションで追加できます。 \\ アナログ入出力、温度センサ入力、高速パルス出力の各モジュールをオプションで追加できます。 \\
-選択したI/Oモジュールとオプションモジュールを1台の製品に組み立てて出荷します。 ユーザーによるモジュールの追加・取り外しはできません。+選択したI/Oモジュールとオプションモジュールを組み合わせ、1台の製品として出荷します。ユーザーによるモジュールの追加・取り外しはできません。
  
-[[:ja-jp_products:mpaino_x|アナログ入力Xモジュールの詳細説明]] +[[:ja-jp_products:mpaino_x|アナログ入力Xモジュールの詳細説明]] \\ 
-[[:ja-jp_products:mpaino_y|アナログ出力Yモジュールの詳細説明]] +[[:ja-jp_products:mpaino_y|アナログ出力Yモジュールの詳細説明]] \\ 
-[[:ja-jp_products:mpaino_f|PT100Ω温度センサー入力Fモジュールの詳細説明]]+[[:ja-jp_products:mpaino_f|PT100Ω温度センサー入力Fモジュールの詳細説明]] \\
 [[:ja-jp_products:mpaino_k|高速パルス出力Kモジュールの詳細説明]] [[:ja-jp_products:mpaino_k|高速パルス出力Kモジュールの詳細説明]]
  
行 13: 行 13:
  
 Arduino IDE(Arduino C/C++)、またはMPINO STUDIO 2(Arduino C/C++ & ラダーロジック)でプログラムできます。 Arduino IDE(Arduino C/C++)、またはMPINO STUDIO 2(Arduino C/C++ & ラダーロジック)でプログラムできます。
 +
 +[[:ja-jp_products:mpaino#mpaino_series仕様表|MPAINO Series仕様表]]で、MPAINO-8A8Rのボード名と基本ピン番号を確認できます。
 +
 +
 +
 +
  
 \\ \\
行 42: 行 48:
 ===== デジタル入力 ===== ===== デジタル入力 =====
  
 +[[:ja-jp_guide:wiring#デジタル入力を1点確認する|初めて配線するときは、デジタル入力1点の確認手順も参照してください。 →]]
 ^ グループ ^ 端子 ^ 入力構成 ^ 端子台と配線例 ^ ^ グループ ^ 端子 ^ 入力構成 ^ 端子台と配線例 ^
 | COM0 | D0~D3 | 絶縁デジタル入力4点 \\ D0・D1はINT0・INT1兼用 |  {{:ja-jp_products:mpaino-input-io8.svg?740|MPAINO-8A8R デジタル入力端子台とNPN・PNP配線}}  | | COM0 | D0~D3 | 絶縁デジタル入力4点 \\ D0・D1はINT0・INT1兼用 |  {{:ja-jp_products:mpaino-input-io8.svg?740|MPAINO-8A8R デジタル入力端子台とNPN・PNP配線}}  |
 | COM1 | D4~D7 | 絶縁デジタル入力4点 | ::: | | COM1 | D4~D7 | 絶縁デジタル入力4点 | ::: |
  
-デジタル入力はフォトカプラで絶縁されており、DC 5~24VのNPNまたはPNP方式のスイッチやセンサを接続できます。 入力方式は各COM端子の配線極性で選択します。+デジタル入力はフォトカプラで絶縁されており、DC 5~24VのNPNまたはPNP方式のスイッチやセンサを接続できます。入力方式は各COM端子の配線極性で選択します。
  
   * 入力端子にDC 5~24Vが入る構成:該当COMをGNDに接続します。   * 入力端子にDC 5~24Vが入る構成:該当COMをGNDに接続します。
   * 入力端子にGNDが入る構成:該当COMをDC 5~24Vに接続します。   * 入力端子にGNDが入る構成:該当COMをDC 5~24Vに接続します。
  
-アナログ出力または高速パルス出力オプションのYK、Y2K、K2、Y3、Y4を搭載しても、プログラムではデジタル入力D0~D7を同じように使用します。 その構成ではINT0・INT1を使用できません。+アナログ出力または高速パルス出力オプションのYK、Y2K、K2、Y3、Y4を搭載しても、プログラムではデジタル入力D0~D7を同じように使用します。その構成ではINT0・INT1を使用できません。
  
 ==== プログラム例・デジタル入力 ==== ==== プログラム例・デジタル入力 ====
  
-入力論理番号0~7の状態をdigitalRead()で読み取ります。 現在のILOGICSコアは、端子に印刷された従来の物理D番号を内部で変換します。+入力論理番号0~7の状態をdigitalRead()で読み取ります。現在のILOGICSコアは、端子に印刷された従来の物理D番号を内部で変換します。
  
 <code cpp> <code cpp>
行 75: 行 82:
  
 === 関数例・連続読み取りフィルタ:IdigitalRead() === === 関数例・連続読み取りフィルタ:IdigitalRead() ===
 +
 +**関数の詳細:** [[ja-jp_commands:reference:idigitalread|IdigitalRead()]]
  
 **関数プロトタイプ** **関数プロトタイプ**
行 82: 行 91:
 </code> </code>
  
-IdigitalRead(0, 5)は入力0を5回連続で読み取ります。 すべてHIGHまたはすべてLOWの場合に状態を更新し、値が混在する場合は前の状態を保持します。 時間ベースのチャタリング防止フィルタと異なり、読み取りの間に遅延を入れません。+IdigitalRead(0, 5)は入力0を5回連続で読み取ります。すべてHIGHまたはすべてLOWの場合に状態を更新し、値が混在する場合は前の状態を保持します。時間ベースのチャタリング防止フィルタと異なり、読み取りの間に遅延を入れません。
  
 <code cpp> <code cpp>
行 97: 行 106:
  
 === 関数例・チャタリング防止:Ibounce(), IbounceOn(), IbounceOff() === === 関数例・チャタリング防止:Ibounce(), IbounceOn(), IbounceOff() ===
 +
 +**関数の詳細:** [[ja-jp_commands:ibounce|Ibounce()]] · [[ja-jp_commands:reference:ibounceon|IbounceOn()]] · [[ja-jp_commands:reference:ibounceoff|IbounceOff()]]
  
 **関数プロトタイプ** **関数プロトタイプ**
行 106: 行 117:
 </code> </code>
  
-入力0に対する3種類のフィルタを比較します。 戻り値はフィルタ処理後のON/OFF状態です。+入力0に対する3種類のフィルタを比較します。戻り値はフィルタ処理後のON/OFF状態です。
  
   * ''Ibounce(0, 30)'': ON・OFFともに30ms以上安定した後に反映します。   * ''Ibounce(0, 30)'': ON・OFFともに30ms以上安定した後に反映します。
行 139: 行 150:
  
 === 関数例・入力トグル:Ialt() === === 関数例・入力トグル:Ialt() ===
 +
 +**関数の詳細:** [[ja-jp_commands:reference:ialt|Ialt()]]
  
 **関数プロトタイプ** **関数プロトタイプ**
行 146: 行 159:
 </code> </code>
  
-Ialt(input, state)は、入力がOFFからONに変わるたびにstateを反転します。 入力0を1回押すと出力64がONになり、もう1回押すとOFFになります。押し続けている間は状態を保持します。 この例ではIbounce(0, 30)でチャタリングを除去してからIalt()へ渡します。 outputOnは呼び出し間で値を保持するグローバル変数で、Ialt()がこの値を直接変更します。+Ialt(input, state)は、入力がOFFからONに変わるたびにstateを反転します。入力0を1回押すと出力64がONになり、もう1回押すとOFFになります。押し続けている間は状態を保持します。この例ではIbounce(0, 30)でチャタリングを除去してからIalt()へ渡します。outputOnは呼び出し間で値を保持するグローバル変数で、Ialt()がこの値を直接変更します。
  
 <code cpp> <code cpp>
行 171: 行 184:
 ===== リレー出力 ===== ===== リレー出力 =====
  
 +[[:ja-jp_guide:wiring#リレー出力を1点確認する|初めて配線するときは、リレー出力1点の確認手順も参照してください。 →]]
 ^ グループ ^ 出力端子 ^ 接点構成 ^ 端子台と配線例 ^ ^ グループ ^ 出力端子 ^ 接点構成 ^ 端子台と配線例 ^
 | COM2 | D64~D67 | リレー出力4点がCOM2を共用 |  {{:ja-jp_products:mpaino-output-relay8.svg?740|MPAINO-8A8R 出力端子台と負荷配線}}  | | COM2 | D64~D67 | リレー出力4点がCOM2を共用 |  {{:ja-jp_products:mpaino-output-relay8.svg?740|MPAINO-8A8R 出力端子台と負荷配線}}  |
 | COM3 | D68~D71 | リレー出力4点がCOM3を共用 | ::: | | COM3 | D68~D71 | リレー出力4点がCOM3を共用 | ::: |
  
-リレー出力は無電圧接点です。 ONになると該当出力端子とCOM端子が物理的に接続されるため、DCとACの負荷を制御できます。 負荷電源はリレー出力端子ではなく、COM側に別途接続します。+リレー出力は無電圧接点です。ONになると該当出力端子とCOM端子が物理的に接続されるため、DCとACの負荷を制御できます。負荷電源はリレー出力端子ではなく、COM側に別途接続します。
  
 ^ 項目 ^ 定格 ^ ^ 項目 ^ 定格 ^
行 184: 行 198:
 ==== プログラム例・リレー出力 ==== ==== プログラム例・リレー出力 ====
  
-入力0~7を出力64~71に対応させます。 HIGHの場合、無電圧リレー接点がONになります。+入力0~7を出力64~71に対応させます。HIGHの場合、無電圧リレー接点がONになります。
  
 <code cpp> <code cpp>
行 205: 行 219:
 | SDA(D20·INT2), SCL(D21·INT3) | 非絶縁入力、4.7kΩプルアップ内蔵 | 50kHz | I²C通信 | ::: | | SDA(D20·INT2), SCL(D21·INT3) | 非絶縁入力、4.7kΩプルアップ内蔵 | 50kHz | I²C通信 | ::: |
  
-エンコーダはSDA(D20)をA相、SCL(D21)をB相として接続できます。 SDA・SCLをエンコーダまたは割り込み入力として使用する場合、同じ端子でI²C通信を同時に使用できません。+エンコーダはSDA(D20)をA相、SCL(D21)をB相として接続できます。SDA・SCLをエンコーダまたは割り込み入力として使用する場合、同じ端子でI²C通信を同時に使用できません。
  
 ==== プログラム例・パルスカウント ==== ==== プログラム例・パルスカウント ====
  
-I²C端子のSDA(D20)は4.7kΩプルアップ入力です。 この例はI²C通信と同時に使用しないでください。 現在のコアでは、digitalPinToInterrupt()の引数2はデジタル入力2ではなく、SDAに割り当てられた割り込み論理番号です。 SDAがHIGHからLOWに変化するFALLINGエッジをカウントします。 ソフトウェアISRの例であり、最大周波数でのカウントの取りこぼしがないことを保証するものではありません。+I²C端子のSDA(D20)は4.7kΩプルアップ入力です。この例はI²C通信と同時に使用しないでください。MPAINOボードパッケージでは、digitalPinToInterrupt()の引数2はデジタル入力2ではなく、SDAに割り当てられた割り込み論理番号です。SDAがHIGHからLOWに変化するFALLINGエッジをカウントします。ソフトウェアISRの例であり、最大周波数でのカウントの取りこぼしがないことを保証するものではありません。
  
 <code cpp> <code cpp>
行 234: 行 248:
 ==== プログラム例・エンコーダ入力 ==== ==== プログラム例・エンコーダ入力 ====
  
-I²C端子のSDA(D20)は4.7kΩプルアップ入力です。 この例はI²C通信と同時に使用しないでください。 現在のコアでは、digitalPinToInterrupt()の引数2はデジタル入力2ではなく、SDAに割り当てられた割り込み論理番号です。 SDAにA相、SCLにB相を接続します。A相の立ち下がり時にB相がHIGHなら増加、LOWなら減少します。 方向はA・B相の接続によって変わります。 SCLはデジタルモジュールの論理番号と重複するため、実際のピン状態を直接読み取ります。+I²C端子のSDA(D20)は4.7kΩプルアップ入力です。この例はI²C通信と同時に使用しないでください。MPAINOボードパッケージでは、digitalPinToInterrupt()の引数2はデジタル入力2ではなく、SDAに割り当てられた割り込み論理番号です。SDAにA相、SCLにB相を接続します。A相の立ち下がり時にB相がHIGHなら増加、LOWなら減少します。方向はA・B相の接続によって変わります。SCLはデジタルモジュールの論理番号と重複するため、実際のピン状態を直接読み取ります。
  
 <code cpp> <code cpp>
行 276: 行 290:
 ==== プログラム例・基本通信 ==== ==== プログラム例・基本通信 ====
  
-Serial(115200bps)とRS-232(Serial1, 9600bps, 8N1)の間で文字を転送します。 各ポートの例は単独で実行してください。+Serial(115200bps)とRS-232(Serial1, 9600bps, 8N1)の間で文字を転送します。各ポートの例は単独で実行してください。
  
 <code cpp> <code cpp>
行 295: 行 309:
 </code> </code>
  
-Serial(115200bps)とRS-485(Serial2, 9600bps, 8N1)の間で文字を転送します。 各ポートの例は単独で実行してください。+Serial(115200bps)とRS-485(Serial2, 9600bps, 8N1)の間で文字を転送します。各ポートの例は単独で実行してください。
  
 <code cpp> <code cpp>
-// MPダウンロードケーブルのSerialモニター ↔ RS-232 Serial2+// USBダウンロードポートのSerialモニター ↔ RS-485 Serial2
 void setup() { void setup() {
   Serial.begin(115200);   Serial.begin(115200);
行 314: 行 328:
 </code> </code>
  
-Serial(115200bps)とUART(Serial3, 9600bps, 8N1)の間で文字を転送します。 各ポートの例は単独で実行してください。+Serial(115200bps)とUART(Serial3, 9600bps, 8N1)の間で文字を転送します。各ポートの例は単独で実行してください。
  
 <code cpp> <code cpp>
-// MPダウンロードケーブルのSerialモニター ↔ RS-232 Serial3+// USBダウンロードポートのSerialモニター ↔ UART Serial3
 void setup() { void setup() {
   Serial.begin(115200);   Serial.begin(115200);
行 336: 行 350:
 ==== プログラム例・I²C通信 ==== ==== プログラム例・I²C通信 ====
  
-SDA・SCLのI²C機器アドレスを検索します。 同じ端子を使用するパルス・エンコーダの例と同時に実行しないでください。+SDA・SCLのI²C機器アドレスを検索します。同じ端子を使用するパルス・エンコーダの例と同時に実行しないでください。
  
 <code cpp> <code cpp>
行 371: 行 385:
  
 === 関数例・Modbus RTU Slave:ImodbusRTUMem(), ImodbusRTUAdr(), ImodbusRTUInit(), ImodbusRTU() === === 関数例・Modbus RTU Slave:ImodbusRTUMem(), ImodbusRTUAdr(), ImodbusRTUInit(), ImodbusRTU() ===
 +
 +**関数の詳細:** [[ja-jp_commands:reference:imodbusrtumem|ImodbusRTUMem()]] · [[ja-jp_commands:reference:imodbusrtuadr|ImodbusRTUAdr()]] · [[ja-jp_commands:reference:imodbusrtuinit|ImodbusRTUInit()]] · [[ja-jp_commands:reference:imodbusrtu|ImodbusRTU()]]
  
 **関数プロトタイプ** **関数プロトタイプ**
行 381: 行 397:
 </code> </code>
  
-入力0の状態をM[0]、動作時間(秒)をD[0]に格納し、接続先機器から読み取ります。 RS-485(Serial2)、局番1、9600bps、8N1に設定します。M[0]はFC01・開始アドレス0・1ビット、D[0]はFC03・開始アドレス0・1ワードで読み取ります。 アドレスは実際の送信アドレス(0始まり)を基準とします。 通信関数はloop()ごとに呼び出し、この例では出力を制御しません。+入力0の状態をM[0]、動作時間(秒)をD[0]に格納し、接続先機器から読み取ります。RS-485(Serial2)、局番1、9600bps、8N1に設定します。M[0]はFC01・開始アドレス0・1ビット、D[0]はFC03・開始アドレス0・1ワードで読み取ります。アドレスは実際の送信アドレス(0始まり)を基準とします。通信関数はloop()ごとに呼び出し、この例では出力を制御しません。
  
 MとDはコアが提供する共有グローバルメモリです。このスケッチは単独で実行します。他のプロトコルと併用する場合は、共有メモリを重複して割り当てないでください。 MとDはコアが提供する共有グローバルメモリです。このスケッチは単独で実行します。他のプロトコルと併用する場合は、共有メモリを重複して割り当てないでください。
行 415: 行 431:
  
 === 関数例・Modbus RTU Master:ImodbusRTUmasterInit(), ImodbusRTUmaster() === === 関数例・Modbus RTU Master:ImodbusRTUmasterInit(), ImodbusRTUmaster() ===
 +
 +**関数の詳細:** [[ja-jp_commands:reference:imodbusrtumasterinit|ImodbusRTUmasterInit()]] · [[ja-jp_commands:reference:imodbusrtumaster|ImodbusRTUmaster()]]
  
 **関数プロトタイプ** **関数プロトタイプ**
行 423: 行 441:
 </code> </code>
  
-RS-485(Serial2)で接続先スレーブのホールディングレジスタ1個を1秒ごとに読み取ります。 相手機器は局番1、9600bps、8N1、FC03・実際の開始アドレス0に設定します。 応答はreceived[0]へ保存し、成功した場合だけ表示します。 エラーコードは16進数で表示します。 上のスレーブ例とは別のスケッチで、M/Dメモリの代わりに受信配列を使用します。+RS-485(Serial2)で接続先スレーブのホールディングレジスタ1個を1秒ごとに読み取ります。相手機器は局番1、9600bps、8N1、FC03・実際の開始アドレス0に設定します。応答はreceived[0]へ保存し、成功した場合だけ表示します。エラーコードは16進数で表示します。上のスレーブ例とは別のスケッチで、M/Dメモリの代わりに受信配列を使用します。
  
 <code cpp> <code cpp>
行 454: 行 472:
 **関連する内蔵関数** **関連する内蔵関数**
  
-=== 関数例・LS産電Cnet SLave:ICnetMem()、ICnetAdr()、ICnetInit()、ICnet() ===+=== 関数例・LS産電Cnet Slave:ICnetMem()、ICnetAdr()、ICnetInit()、ICnet() === 
 + 
 +**関数の詳細:** [[ja-jp_commands:reference:icnetmem|ICnetMem()]] · [[ja-jp_commands:reference:icnetadr|ICnetAdr()]] · [[ja-jp_commands:reference:icnetinit|ICnetInit()]] · [[ja-jp_commands:reference:icnet|ICnet()]]
  
 **関数プロトタイプ** **関数プロトタイプ**
行 465: 行 485:
 </code> </code>
  
-入力0の状態をM[0]、動作時間(秒)をD[0]に格納し、HMIから読み取ります。 接続先機器はLS産電Cnet、RS-232、局番1、9600bps、8N1に設定します。 ビットは%MX00000(M[0])、ワードは%DW0(D[0])を読み取ります。 通信関数はloop()ごとに呼び出し、この例では出力を制御しません。+入力0の状態をM[0]、動作時間(秒)をD[0]に格納し、HMIから読み取ります。接続先機器はLS産電Cnet、RS-232、局番1、9600bps、8N1に設定します。ビットは%MX00000(M[0])、ワードは%DW0(D[0])を読み取ります。通信関数はloop()ごとに呼び出し、この例では出力を制御しません。
  
 M・D・Rはコアが提供する共有グローバルメモリで、この例ではRを使用しません。Modbusの例とは別に単独で実行します。他のプロトコルと併用する場合は、共有メモリを重複して割り当てないでください。 M・D・Rはコアが提供する共有グローバルメモリで、この例ではRを使用しません。Modbusの例とは別に単独で実行します。他のプロトコルと併用する場合は、共有メモリを重複して割り当てないでください。
行 501: 行 521:
 ===== オプションモジュール ===== ===== オプションモジュール =====
  
-製品構成に以下のオプションモジュールを追加できます。 選択した構成に組み立てて出荷します。 \\+製品構成に以下のオプションモジュールを追加できます。選択した構成で組み立てて出荷します。 \\
 ユーザーによるI/Oモジュールやオプションモジュールの追加・取り外しはできません。 ユーザーによるI/Oモジュールやオプションモジュールの追加・取り外しはできません。
  
行 514: 行 534:
 オプションモジュールを追加した製品はカスタム製作となるため、交換や返金が難しくなります。 オプションモジュールを追加した製品はカスタム製作となるため、交換や返金が難しくなります。
  
-出荷時に該当するオプションモジュールを搭載した製品で使用する例です。 例に示したモジュール構成と実際の出荷構成を一致させてください。+出荷時に該当するオプションモジュールを搭載した製品で使用する例です。例に示したモジュール構成と実際の出荷構成を一致させてください。
  
 ==== プログラム例・アナログ入力(Xモジュール装着時) ==== ==== プログラム例・アナログ入力(Xモジュール装着時) ====
  
-Xモジュールを1台搭載し、Analog Input Module → Xを選択した構成です。 analogRead(0~3)は最初のXモジュールのADS1118生値(0~32767)を読み取ります。 各チャンネルのDIP設定と配線を入力信号に合わせます。+Xモジュールを1台搭載し、Analog Input Module → Xを選択した構成です。analogRead(0~3)は最初のXモジュールのADS1118生値(0~32767)を読み取ります。各チャンネルのDIP設定と配線を入力信号に合わせます。
  
 <code cpp> <code cpp>
行 538: 行 558:
  
 === 関数例・入力範囲換算:IanalogRead(), IanalogReadf() === === 関数例・入力範囲換算:IanalogRead(), IanalogReadf() ===
 +
 +**関数の詳細:** [[ja-jp_commands:reference:ianalogread|IanalogRead()]] · [[ja-jp_commands:reference:ianalogreadf|IanalogReadf()]]
  
 **関数プロトタイプ** **関数プロトタイプ**
行 546: 行 568:
 </code> </code>
  
-Xモジュールのチャンネル0を0~5V、チャンネル1を電流入力モードに設定した例です。 両関数はADC入力を指定したmin~maxの範囲へ換算します。 IanalogRead()は小数部を切り捨てた整数、IanalogReadf()は浮動小数点数を返します。 チャンネル0の0~5V入力を、0~100%と電圧でそれぞれ表示します。 チャンネル1の0~20mA入力は、0~20の範囲を指定して実際の電流値として読み取ります。+Xモジュールのチャンネル0を0~5V、チャンネル1を電流入力モードに設定した例です。両関数はADC入力を指定したmin~maxの範囲へ換算します。IanalogRead()は小数部を切り捨てた整数、IanalogReadf()は浮動小数点数を返します。チャンネル0の0~5V入力を、0~100%と電圧でそれぞれ表示します。チャンネル1の0~20mA入力は、0~20の範囲を指定して実際の電流値として読み取ります。
  
 <code cpp> <code cpp>
行 569: 行 591:
  
 === 関数例・4~20mA範囲換算:IanalogRead2(), IanalogRead2f() === === 関数例・4~20mA範囲換算:IanalogRead2(), IanalogRead2f() ===
 +
 +**関数の詳細:** [[ja-jp_commands:reference:ianalogread2|IanalogRead2()]] · [[ja-jp_commands:reference:ianalogread2f|IanalogRead2f()]]
  
 **関数プロトタイプ** **関数プロトタイプ**
行 577: 行 601:
 </code> </code>
  
-Xモジュールのチャンネル0を0~5V、チャンネル1を電流入力モードに設定した例です。 チャンネル1に接続した4~20mAセンサ入力を、ユーザー指定範囲に換算します。 IanalogRead2(チャンネル1, 0, 100)は、4mAを0%、20mAを100%に換算した整数を返します。 IanalogRead2f(チャンネル1, 4.0f, 20.0f)は電流を浮動小数点数で返します。 約3.6mA未満では両関数ともANALOG_READ2_ERROR(65535)、約3.6~4mAでは指定した最小値を返します。+Xモジュールのチャンネル0を0~5V、チャンネル1を電流入力モードに設定した例です。チャンネル1に接続した4~20mAセンサ入力を、ユーザー指定範囲に換算します。IanalogRead2(チャンネル1, 0, 100)は、4mAを0%、20mAを100%に換算した整数を返します。IanalogRead2f(チャンネル1, 4.0f, 20.0f)は電流を浮動小数点数で返します。約3.6mA未満では両関数ともANALOG_READ2_ERROR(65535)、約3.6~4mAでは指定した最小値を返します。
  
 <code cpp> <code cpp>
行 602: 行 626:
  
 === 関数例・移動平均:analogReadAvg(), analogRead2Avg() === === 関数例・移動平均:analogReadAvg(), analogRead2Avg() ===
 +
 +**関数の詳細:** [[ja-jp_commands:reference:analogreadavg|analogReadAvg()]] · [[ja-jp_commands:reference:analogread2avg|analogRead2Avg()]]
  
 **関数プロトタイプ** **関数プロトタイプ**
行 610: 行 636:
 </code> </code>
  
-Xモジュールのチャンネル0を0~5V、チャンネル1を電流入力モードに設定した例です。 analogReadAvg(チャンネル0, 5)はチャンネル0のADC生値(0~32767)、analogRead2Avg(チャンネル1, 5)はチャンネル1の4~20mA補正値(4mA=0、20mA=32767)を移動平均で返します。 直近の呼び出しで読み取った正常値を最大5個まで蓄積して平均します。1回で5回読み取る関数ではありません。 samplesの最大値は20です。 analogRead2Avg()は約3.6mA未満の入力でANALOG_READ2_AVG_ERROR(-1)を返します。+Xモジュールのチャンネル0を0~5V、チャンネル1を電流入力モードに設定した例です。analogReadAvg(チャンネル0, 5)はチャンネル0のADC生値(0~32767)、analogRead2Avg(チャンネル1, 5)はチャンネル1の4~20mA補正値(4mA=0、20mA=32767)を移動平均で返します。直近の呼び出しで読み取った正常値を最大5個まで蓄積して平均します。1回で5回読み取る関数ではありません。samplesの最大値は20です。analogRead2Avg()は約3.6mA未満の入力でANALOG_READ2_AVG_ERROR(-1)を返します。
  
 <code cpp> <code cpp>
行 635: 行 661:
 ==== プログラム例・NTC温度センサ入力(Xモジュール装着時) ==== ==== プログラム例・NTC温度センサ入力(Xモジュール装着時) ====
  
-Xモジュール1台、Analog Input Module → Xの構成で、チャンネル0をNTCモードに設定します。 最初にanalogRead(0)で生値を確認します。+Xモジュール1台、Analog Input Module → Xの構成で、チャンネル0をNTCモードに設定します。最初にanalogRead(0)で生値を確認します。
  
 <code cpp> <code cpp>
行 651: 行 677:
  
 === 関数例・NTC温度変換:ntcRead(), ntcReadf() === === 関数例・NTC温度変換:ntcRead(), ntcReadf() ===
 +
 +**関数の詳細:** [[ja-jp_commands:reference:ntcread|ntcRead()]] · [[ja-jp_commands:reference:ntcreadf|ntcReadf()]]
  
 **関数プロトタイプ** **関数プロトタイプ**
行 659: 行 687:
 </code> </code>
  
-Xモジュールのチャンネル0をNTCモードに設定し、NTC 3950 10kΩセンサを接続します。 ntcRead()は摂氏温度×10の整数、ntcReadf()は摂氏の浮動小数点数を返します。 範囲外の入力は-40~120°Cの端点値に制限されるため、断線判定関数として使用しないでください。+Xモジュールのチャンネル0をNTCモードに設定し、NTC 3950 10kΩセンサを接続します。ntcRead()は摂氏温度×10の整数、ntcReadf()は摂氏の浮動小数点数を返します。範囲外の入力は-40~120°Cの端点値に制限されるため、断線判定関数として使用しないでください。
  
 <code cpp> <code cpp>
行 682: 行 710:
  
 === 関数例・PT100入力値読み取り:pt100Read() === === 関数例・PT100入力値読み取り:pt100Read() ===
 +
 +**関数の詳細:** [[ja-jp_commands:reference:pt100read|pt100Read()]]
  
 **関数プロトタイプ** **関数プロトタイプ**
行 689: 行 719:
 </code> </code>
  
-Fモジュールを1台搭載し、Temperature Sensor Input Module → Fを選択します。 0~3は最初のFモジュールのチャンネルです。 Fモジュールのチャンネル0~3の入力値をシリアルモニタに表示します。+Fモジュールを1台搭載し、Temperature Sensor Input Module → Fを選択します。0~3は最初のFモジュールのチャンネルです。Fモジュールのチャンネル0~3の入力値をシリアルモニタに表示します。
  
 <code cpp> <code cpp>
行 710: 行 740:
 ==== プログラム例・アナログ出力(Yモジュール装着時) ==== ==== プログラム例・アナログ出力(Yモジュール装着時) ====
  
-Yモジュールを1台搭載し、Analog Output Module → Yを選択します。 analogWrite(0~2, 値)の値の範囲は0~65535です。 チャンネル0に中間値32768を出力し、出力電圧・電流範囲はモジュールのDIP設定に従います。+Yモジュールを1台搭載し、Analog Output Module → Yを選択します。analogWrite(0~2, 値)の値の範囲は0~65535です。チャンネル0に中間値32768を出力し、出力電圧・電流範囲はモジュールのDIP設定に従います。
  
 <code cpp> <code cpp>
行 726: 行 756:
  
 === 関数例・出力範囲換算:IanalogWrite(), IanalogWritef() === === 関数例・出力範囲換算:IanalogWrite(), IanalogWritef() ===
 +
 +**関数の詳細:** [[ja-jp_commands:reference:ianalogwrite|IanalogWrite()]] · [[ja-jp_commands:reference:ianalogwritef|IanalogWritef()]]
  
 **関数プロトタイプ** **関数プロトタイプ**
行 734: 行 766:
 </code> </code>
  
-Yモジュールのチャンネル0に整数値で50%、チャンネル1に浮動小数点数で25%を出力します。 min・maxはユーザー値の範囲を指定し、電気的な出力モードはモジュールのDIPスイッチで決まります。+Yモジュールのチャンネル0に整数値で50%、チャンネル1に浮動小数点数で25%を出力します。min・maxはユーザー値の範囲を指定し、電気的な出力モードはモジュールのDIPスイッチで決まります。
  
 <code cpp> <code cpp>
行 751: 行 783:
 ==== プログラム例・PWM出力(Kモジュール装着時) ==== ==== プログラム例・PWM出力(Kモジュール装着時) ====
  
-Kモジュールを1台搭載し、High-Speed Pulse Output Module → Kを選択します。YモジュールはNoneです。 Arduino analogWrite()は20~25、内蔵PWM関数は0~5、GPIO制御は130~135を使用します。 最初のK出力に約50%のデューティ比で出力します。+Kモジュールを1台搭載し、High-Speed Pulse Output Module → Kを選択します。YモジュールはNoneです。Arduino analogWrite()は20~25、内蔵PWM関数は0~5、GPIO制御は130~135を使用します。最初のK出力に約50%のデューティ比で出力します。
  
 <code cpp> <code cpp>
行 767: 行 799:
  
 === 関数例・デューティ値指定:PWM() === === 関数例・デューティ値指定:PWM() ===
 +
 +**関数の詳細:** [[ja-jp_commands:reference:pwm|PWM()]]
  
 **関数プロトタイプ** **関数プロトタイプ**
行 774: 行 808:
 </code> </code>
  
-Kモジュール1台、Yモジュールなし、High-Speed Pulse Output Module → Kの構成です。 論理チャンネル0~2はTimer1、3~5はTimer5を共有するため、同じグループでは同じ周波数を使用します。 Kチャンネル0に16ビットの中間デューティ値32768を出力します。 PWM()の標準8ビット範囲は0~255、true指定時は0~65535です。+Kモジュール1台、Yモジュールなし、High-Speed Pulse Output Module → Kの構成です。論理チャンネル0~2はTimer1、3~5はTimer5を共有するため、同じグループでは同じ周波数を使用します。Kチャンネル0に16ビットの中間デューティ値32768を出力します。PWM()の標準8ビット範囲は0~255、true指定時は0~65535です。
  
 <code cpp> <code cpp>
行 787: 行 821:
  
 === 関数例・周波数・デューティ設定:FDPWM() === === 関数例・周波数・デューティ設定:FDPWM() ===
 +
 +**関数の詳細:** [[ja-jp_commands:reference:fdpwm|FDPWM()]]
  
 **関数プロトタイプ** **関数プロトタイプ**
行 794: 行 830:
 </code> </code>
  
-Kモジュール1台、Yモジュールなし、High-Speed Pulse Output Module → Kの構成です。 論理チャンネル0~2はTimer1、3~5はTimer5を共有するため、同じグループでは同じ周波数を使用します。 Kチャンネル0に1kHz、50%のデューティ比で出力します。 コアに独立したFPWM()はありません。FDPWM()を使用します。+Kモジュール1台、Yモジュールなし、High-Speed Pulse Output Module → Kの構成です。論理チャンネル0~2はTimer1、3~5はTimer5を共有するため、同じグループでは同じ周波数を使用します。Kチャンネル0に1kHz、50%のデューティ比で出力します。コアに独立したFPWM()はありません。FDPWM()を使用します。
  
 <code cpp> <code cpp>
行 807: 行 843:
  
 === 関数例・指定個数パルス出力:NPWM_BEGIN(), NPWM() === === 関数例・指定個数パルス出力:NPWM_BEGIN(), NPWM() ===
 +
 +**関数の詳細:** [[ja-jp_commands:reference:npwm_begin|NPWM_BEGIN()]] · [[ja-jp_commands:reference:npwm|NPWM()]]
  
 **関数プロトタイプ** **関数プロトタイプ**
行 815: 行 853:
 </code> </code>
  
-Kモジュール1台、Yモジュールなし、High-Speed Pulse Output Module → Kの構成です。 論理チャンネル0~2はTimer1、3~5はTimer5を共有するため、同じグループでは同じ周波数を使用します。 Kチャンネル0に1kHz、50%のパルス100個を1回出力します。 NPWM()はloop()の毎回の処理で呼び出し、delay()は入れません。+Kモジュール1台、Yモジュールなし、High-Speed Pulse Output Module → Kの構成です。論理チャンネル0~2はTimer1、3~5はTimer5を共有するため、同じグループでは同じ周波数を使用します。Kチャンネル0に1kHz、50%のパルス100個を1回出力します。NPWM()はloop()の毎回の処理で呼び出し、delay()は入れません。
  
 <code cpp> <code cpp>
行 829: 行 867:
  
 === 関数例・チャンネル出力停止・再開:PWMOFF() === === 関数例・チャンネル出力停止・再開:PWMOFF() ===
 +
 +**関数の詳細:** [[ja-jp_commands:reference:pwmoff|PWMOFF()]]
  
 **関数プロトタイプ** **関数プロトタイプ**
行 836: 行 876:
 </code> </code>
  
-Kモジュール1台、Yモジュールなし、High-Speed Pulse Output Module → Kの構成です。 論理チャンネル0~2はTimer1、3~5はTimer5を共有するため、同じグループでは同じ周波数を使用します。 Kチャンネル0を2秒間ONにし、2秒間停止します。 PWMOFF()フラグの設定後にFDPWM()を呼び出して状態を反映し、GPIO番号130をLOWに維持します。 この停止フラグはNPWM()には適用されません。+Kモジュール1台、Yモジュールなし、High-Speed Pulse Output Module → Kの構成です。論理チャンネル0~2はTimer1、3~5はTimer5を共有するため、同じグループでは同じ周波数を使用します。Kチャンネル0を2秒間ONにし、2秒間停止します。PWMOFF()フラグの設定後にFDPWM()を呼び出して状態を反映し、GPIO番号130をLOWに維持します。この停止フラグはNPWM()には適用されません。
  
 <code cpp> <code cpp>
行 856: 行 896:
  
 === 関数例・PWMタイマ停止・初期化:PWM_RESET() === === 関数例・PWMタイマ停止・初期化:PWM_RESET() ===
 +
 +**関数の詳細:** [[ja-jp_commands:reference:pwm_reset|PWM_RESET()]]
  
 **関数プロトタイプ** **関数プロトタイプ**
行 863: 行 905:
 </code> </code>
  
-Kモジュール1台、Yモジュールなし、High-Speed Pulse Output Module → Kの構成です。 論理チャンネル0~2はTimer1、3~5はTimer5を共有するため、同じグループでは同じ周波数を使用します。 K単独構成のTimer1・Timer5を停止・初期化します。 チャンネル0を2秒間出力した後、停止します。 同じタイマを共有するすべてのK出力に影響します。+Kモジュール1台、Yモジュールなし、High-Speed Pulse Output Module → Kの構成です。論理チャンネル0~2はTimer1、3~5はTimer5を共有するため、同じグループでは同じ周波数を使用します。K単独構成のTimer1・Timer5を停止・初期化します。チャンネル0を2秒間出力した後、停止します。同じタイマを共有するすべてのK出力に影響します。
  
 <code cpp> <code cpp>
行 882: 行 924:
  
 CPUモジュールのSTATUS LEDはD128で制御します。 CPUモジュールのSTATUS LEDはD128で制御します。
 +
 +CPUモジュールのSTATUS LEDは、ユーザープログラムの動作表示に使用できます。このLEDはCPUモジュール上にあり、外部負荷用の出力端子ではありません。
 +
 +制御する前に''pinMode(LED_BUILTIN, OUTPUT)''で出力モードに設定する必要があります。その後、''digitalWrite(LED_BUILTIN, HIGH)''で点灯、''digitalWrite(LED_BUILTIN, LOW)''で消灯します。
 +
 +==== 例・STATUS LEDの点滅 ====
 +
 +次の例は、CPUモジュールのSTATUS LEDを500msごとに点灯・消灯します。
 +
 +<code cpp>
 +void setup() {
 +  pinMode(LED_BUILTIN, OUTPUT);
 +}
 +
 +void loop() {
 +  digitalWrite(LED_BUILTIN, HIGH);
 +  delay(500);
 +  digitalWrite(LED_BUILTIN, LOW);
 +  delay(500);
 +}
 +</code>
  
 ==== プログラム例・状態LED ==== ==== プログラム例・状態LED ====
  
 入力0の状態をCPUモジュールのSTATUS LED(LED_BUILTIN、論理番号128)に表示します。 入力0の状態をCPUモジュールのSTATUS LED(LED_BUILTIN、論理番号128)に表示します。
 +
 +**出力設定:** 次の入力状態表示例を使用する場合も、''setup()''内に''pinMode(LED_BUILTIN, OUTPUT);''を追加する必要があります。
  
 <code cpp> <code cpp>
行 904: 行 969:
   - Arduino IDEのツール → ポートで、確認したCOM番号を選択します。   - Arduino IDEのツール → ポートで、確認したCOM番号を選択します。
   - ツール → ボードで''MPAINO-8A8R(T)''を選択します。   - ツール → ボードで''MPAINO-8A8R(T)''を選択します。
-  - ツール → 書込装置で''AVR ISP''を選択し、プログラムを書き込みます。+  - Arduino IDE上部の**検証(✓)**を押します。エラーがなければ**書き込み(→)**を押してプログラムを転送します。
  
 [[https://www.ilogics.net/ko-kr/resources/downloads/manual/15|MPAINO取扱説明書ダウンロード]] [[https://www.ilogics.net/ko-kr/resources/downloads/manual/15|MPAINO取扱説明書ダウンロード]]
行 925: 行 990:
 |  [[https://www.ilogics.net/docs/_media/products:mpaino-8a8r-dimension-rear.svg|{{ :ja-jp_products:mpaino-8a8r-dimension-rear.svg?nolink&360 }}]]  |  | |  [[https://www.ilogics.net/docs/_media/products:mpaino-8a8r-dimension-rear.svg|{{ :ja-jp_products:mpaino-8a8r-dimension-rear.svg?nolink&360 }}]]  |  |
  
-[[:ja-jp_products:mpaino|← MPAINO Series比較表に戻る]]+[[https://www.ilogics.net/ja-jp/products/mpaino-8a8r|MPAINO-8A8R の価格・購入情報を見る]]
  
 +[[:ja-jp_products:mpaino|← MPAINO Series比較表に戻る]]
  
ja-jp_products/mpaino_8a8r.1789199926.txt.gz · 最終更新: by 127.0.0.1

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki