ja-jp_products:mpino_16a8r
差分
このページの2つのバージョン間の差分を表示します。
| 両方とも前のリビジョン前のリビジョン次のリビジョン | 前のリビジョン | ||
| ja-jp_products:mpino_16a8r [2026/09/15 10:37] – 外部編集 127.0.0.1 | ja-jp_products:mpino_16a8r [2026/10/25 08:43] (現在) – 外部編集 127.0.0.1 | ||
|---|---|---|---|
| 行 1: | 行 1: | ||
| ====== MPINO-16A8R ====== | ====== MPINO-16A8R ====== | ||
| - | MPINO-16A8Rは、デジタル入力16点とリレー出力8点を備えた一体型の産業用Arduinoです。 1枚のPCBに、アナログ入力4点、割り込み・エンコーダ、I²C、RS-232・RS-485・UART通信を搭載しています。 | + | MPINO-16A8Rは、デジタル入力16点とリレー出力8点を備えた一体型の産業用Arduinoです。1枚のPCBに、アナログ入力4点、割り込み・エンコーダ、I²C、RS-232・RS-485・UART通信を搭載しています。 |
| Arduino IDE(Arduino C/ | Arduino IDE(Arduino C/ | ||
| - | [[:ja-jp_guide:getting_started#mpino-16a8r|MPINO-16A8R Arduino IDE開始ガイド]]で、ボードとポートの選択、最初の入出力の確認方法を説明します。 | + | [[:ja-jp_products:mpino_series#mpino_series仕様表|MPINO |
| 行 27: | 行 27: | ||
| | ::: | ::: | SRAM | 4KB | | | ::: | ::: | SRAM | 4KB | | ||
| | ::: | ::: | EEPROM | | ::: | ::: | EEPROM | ||
| + | |||
| + | **Markdownファイル: | ||
| ===== デジタル入力 ===== | ===== デジタル入力 ===== | ||
| + | [[: | ||
| ^ グループ ^ 端子 ^ Arduinoピン ^ 入力構成 ^ 端子台と配線例 ^ | ^ グループ ^ 端子 ^ Arduinoピン ^ 入力構成 ^ 端子台と配線例 ^ | ||
| | COM0 | I(22)~I(29) | D22~D29 | デジタル入力8点、COM0共用 | {{: | | COM0 | I(22)~I(29) | D22~D29 | デジタル入力8点、COM0共用 | {{: | ||
| | COM1 | I(30)~I(37) | D30~D37 | デジタル入力8点、COM1共用 | ::: | | | COM1 | I(30)~I(37) | D30~D37 | デジタル入力8点、COM1共用 | ::: | | ||
| - | デジタル入力はフォトカプラで絶縁されており、DC 5~24VのNPNまたはPNP信号を接続できます。 入力方式はCOM0・COM1の配線極性で選択します。 | + | デジタル入力はフォトカプラで絶縁されており、DC 5~24VのNPNまたはPNP信号を接続できます。入力方式はCOM0・COM1の配線極性で選択します。 |
| ==== プログラム例・デジタル入力 ==== | ==== プログラム例・デジタル入力 ==== | ||
| - | digitalRead()でD22~D37の入力状態を200msごとに表示します。 HIGHは1、LOWは0です。 | + | digitalRead()でD22~D37の入力状態を200msごとに表示します。HIGHは1、LOWは0です。 |
| <code cpp> | <code cpp> | ||
| 行 67: | 行 70: | ||
| </ | </ | ||
| - | IdigitalRead(22, | + | IdigitalRead(22, |
| <code cpp> | <code cpp> | ||
| 行 131: | 行 134: | ||
| </ | </ | ||
| - | Ialt(input, state)は、入力がOFFからONに変わるたびにstateを反転します。 D22を1回押すとD39がONになり、もう1回押すとOFFになります。押し続けている間は状態を保持します。 この例ではIbounce(22, | + | Ialt(input, state)は、入力がOFFからONに変わるたびにstateを反転します。D22を1回押すとD39がONになり、もう1回押すとOFFになります。押し続けている間は状態を保持します。この例ではIbounce(22, |
| <code cpp> | <code cpp> | ||
| 行 153: | 行 156: | ||
| </ | </ | ||
| + | |||
| + | ===== STATUS LED ===== | ||
| + | |||
| + | MPINO-16A8RのSTATUS LEDは、ボードに実装された状態表示灯です。ユーザープログラムの動作状態を表示するために使用できます。 | ||
| + | |||
| + | STATUS LEDはデジタルピンD13に接続されています。スケッチではD13の代わりに'' | ||
| + | |||
| + | **注意事項: | ||
| + | |||
| + | ==== 例・STATUS LEDの点滅 ==== | ||
| + | |||
| + | 次の例では、STATUS LEDを0.5秒間隔で点灯・消灯します。 | ||
| + | |||
| + | <code cpp> | ||
| + | void setup() { | ||
| + | pinMode(LED_BUILTIN, | ||
| + | } | ||
| + | |||
| + | void loop() { | ||
| + | digitalWrite(LED_BUILTIN, | ||
| + | delay(500); | ||
| + | digitalWrite(LED_BUILTIN, | ||
| + | delay(500); | ||
| + | } | ||
| + | </ | ||
| ===== リレー出力 ===== | ===== リレー出力 ===== | ||
| + | [[: | ||
| ^ グループ ^ 端子 ^ Arduinoピン ^ 接点定格 ^ 端子台と配線例 ^ | ^ グループ ^ 端子 ^ Arduinoピン ^ 接点定格 ^ 端子台と配線例 ^ | ||
| | COM2 | R(39)~R(42) | D39~D42 | AC 250VまたはDC 30V, 最大5A/ | | COM2 | R(39)~R(42) | D39~D42 | AC 250VまたはDC 30V, 最大5A/ | ||
| | COM3 | R(43)~R(46) | D43~D46 | AC 250VまたはDC 30V, 最大5A/ | | COM3 | R(43)~R(46) | D43~D46 | AC 250VまたはDC 30V, 最大5A/ | ||
| - | リレー出力は、COM2またはCOM3と各出力端子を物理的に接続する無電圧接点です。 負荷電源を別途接続する必要があります。 | + | リレー出力は、COM2またはCOM3と各出力端子を物理的に接続する無電圧接点です。負荷電源を別途接続する必要があります。 |
| ==== プログラム例・リレー出力 ==== | ==== プログラム例・リレー出力 ==== | ||
| - | 入力D22~D29を出力D39~D46に順番に対応させます。 入力がHIGHの場合、対応する出力がONになります。 | + | 入力D22~D29を出力D39~D46に順番に対応させます。入力がHIGHの場合、対応する出力がONになります。 |
| <code cpp> | <code cpp> | ||
| 行 188: | 行 217: | ||
| ==== プログラム例・アナログ入力 ==== | ==== プログラム例・アナログ入力 ==== | ||
| - | analogRead()でA0~A3のADC生値(0~1023)を表示します。 各チャンネルの電圧・電流モードは、実際の製品設定に従います。 | + | analogRead()でA0~A3のADC生値(0~1023)を表示します。各チャンネルの電圧・電流モードは、実際の製品設定に従います。 |
| <code cpp> | <code cpp> | ||
| 行 219: | 行 248: | ||
| </ | </ | ||
| - | A0が標準の0~5V入力、A2が0(4)~20mAの注文オプションで構成された製品で実行してください。 両関数はADC入力を指定したmin~maxの範囲へ換算します。IanalogRead()は小数部を切り捨てた整数、IanalogReadf()は浮動小数点数を返します。A0の0~5V入力を0~100%と電圧で表示します。A2の0~20mA入力は、範囲を0~20に指定して実際の電流値として読み取ります。 | + | A0が標準の0~5V入力、A2が0(4)~20mAの注文オプションで構成された製品で実行してください。両関数はADC入力を指定したmin~maxの範囲へ換算します。IanalogRead()は小数部を切り捨てた整数、IanalogReadf()は浮動小数点数を返します。A0の0~5V入力を0~100%と電圧で表示します。A2の0~20mA入力は、範囲を0~20に指定して実際の電流値として読み取ります。 |
| <code cpp> | <code cpp> | ||
| 行 250: | 行 279: | ||
| </ | </ | ||
| - | A0が標準の0~5V入力、A2が0(4)~20mAの注文オプションで構成された製品で実行してください。 A2に接続した4~20mAセンサの入力を、指定範囲へ換算します。IanalogRead2(A2, | + | A0が標準の0~5V入力、A2が0(4)~20mAの注文オプションで構成された製品で実行してください。A2に接続した4~20mAセンサの入力を、指定範囲へ換算します。IanalogRead2(A2, |
| <code cpp> | <code cpp> | ||
| 行 283: | 行 312: | ||
| </ | </ | ||
| - | A0が標準の0~5V入力、A2が0(4)~20mAの注文オプションで構成された製品で実行してください。 analogReadAvg(A0, | + | A0が標準の0~5V入力、A2が0(4)~20mAの注文オプションで構成された製品で実行してください。analogReadAvg(A0, |
| <code cpp> | <code cpp> | ||
| 行 308: | 行 337: | ||
| ==== プログラム例・温度センサ入力 ==== | ==== プログラム例・温度センサ入力 ==== | ||
| - | A0をNTC入力の注文オプションで構成した製品でのみ実行してください。 analogRead()でA0の温度センサADC生値(0~1023)を表示します。 摂氏への換算は、以下の内蔵関数で説明します。 | + | A0をNTC入力の注文オプションで構成した製品でのみ実行してください。analogRead()でA0の温度センサADC生値(0~1023)を表示します。摂氏への換算は、以下の内蔵関数で説明します。 |
| <code cpp> | <code cpp> | ||
| 行 333: | 行 362: | ||
| </ | </ | ||
| - | A0をNTC 10kΩ入力の注文オプションで構成した製品でのみ実行してください。 NTC入力A0に接続したNTC 10kΩ(25℃)、B=3950Kセンサの温度を読み取ります。 ntcRead()は摂氏温度の10倍の整数(25.3℃ → 253)、ntcReadf()は摂氏温度の浮動小数点数(25.3)を返します。 分解能はどちらも0.1℃です。 変換範囲外の値は-40℃または120℃に制限されるため、断線・短絡の判定値として使用しないでください。 | + | A0をNTC 10kΩ入力の注文オプションで構成した製品でのみ実行してください。NTC入力A0に接続したNTC 10kΩ(25℃)、B=3950Kセンサの温度を読み取ります。ntcRead()は摂氏温度の10倍の整数(25.3℃ → 253)、ntcReadf()は摂氏温度の浮動小数点数(25.3)を返します。分解能はどちらも0.1℃です。変換範囲外の値は-40℃または120℃に制限されるため、断線・短絡の判定値として使用しないでください。 |
| <code cpp> | <code cpp> | ||
| 行 360: | 行 389: | ||
| | I²C | SDA(D20), SCL(D21) | 1チャネル | | | I²C | SDA(D20), SCL(D21) | 1チャネル | | ||
| - | SDAとSCLには4.7kΩのプルアップ抵抗が内蔵されています。 エンコーダ入力とI²Cは同じピンを使用するため、同時に使用できません。 | + | SDAとSCLには4.7kΩのプルアップ抵抗が内蔵されています。エンコーダ入力とI²Cは同じピンを使用するため、同時に使用できません。 |
| ==== プログラム例・パルスカウント ==== | ==== プログラム例・パルスカウント ==== | ||
| - | SDA(D20)のFALLINGエッジをカウントします。 入力は4.7kΩのプルアップ(SDA/ | + | SDA(D20)のFALLINGエッジをカウントします。入力は4.7kΩのプルアップ(SDA/ |
| <code cpp> | <code cpp> | ||
| 行 397: | 行 426: | ||
| ==== プログラム例・エンコーダ入力 ==== | ==== プログラム例・エンコーダ入力 ==== | ||
| - | A相はSDA(D20)、B相はSCL(D21)に接続します。 4.7kΩのプルアップ(SDA/ | + | A相はSDA(D20)、B相はSCL(D21)に接続します。4.7kΩのプルアップ(SDA/ |
| <code cpp> | <code cpp> | ||
| 行 447: | 行 476: | ||
| ==== プログラム例・基本通信 ==== | ==== プログラム例・基本通信 ==== | ||
| - | Serial(115200bps)とRS-232 Serial1(9600bps, | + | Serial(115200bps)とRS-232 Serial1(9600bps, |
| <code cpp> | <code cpp> | ||
| 行 469: | 行 498: | ||
| ==== プログラム例・I²C通信 ==== | ==== プログラム例・I²C通信 ==== | ||
| - | Wireでアドレス0x08~0x77を検索し、応答したアドレスを3秒ごとに表示します。 SDA・SCLを使用するエンコーダ・割り込みの例と同時に実行しないでください。 | + | Wireでアドレス0x08~0x77を検索し、応答したアドレスを3秒ごとに表示します。SDA・SCLを使用するエンコーダ・割り込みの例と同時に実行しないでください。 |
| <code cpp> | <code cpp> | ||
| 行 516: | 行 545: | ||
| D22の状態をM[0]、A0の生値(0~1023)をD[0]へ格納し、相手機器から読み取ります。RS-232(Serial1)、局番1、9600bps、8N1に設定します。M[0]はFC01・開始アドレス0・1ビット、D[0]はFC03・開始アドレス0・1ワードで読み取ります。アドレスは0から始まる実際の通信アドレスです。通信関数はloop()の毎回の処理で呼び出します。この例では出力を制御しません。 | D22の状態をM[0]、A0の生値(0~1023)をD[0]へ格納し、相手機器から読み取ります。RS-232(Serial1)、局番1、9600bps、8N1に設定します。M[0]はFC01・開始アドレス0・1ビット、D[0]はFC03・開始アドレス0・1ワードで読み取ります。アドレスは0から始まる実際の通信アドレスです。通信関数はloop()の毎回の処理で呼び出します。この例では出力を制御しません。 | ||
| - | MとDはコアが提供する共有グローバルメモリです。このスケッチは単独で実行します。他のプロトコルと併用する場合は、共有メモリを重複して割り当てないでください。 RS-485端子に接続する場合はSerial1をSerial2に変更し、UART端子ではSerial3を使用します。 | + | MとDはコアが提供する共有グローバルメモリです。このスケッチは単独で実行します。他のプロトコルと併用する場合は、共有メモリを重複して割り当てないでください。RS-485端子に接続する場合はSerial1をSerial2に変更し、UART端子ではSerial3を使用します。 |
| <code cpp> | <code cpp> | ||
| 行 556: | 行 585: | ||
| </ | </ | ||
| - | RS-232(Serial1)で相手スレーブのホールディングレジスタ1個を1秒ごとに読み取ります。相手機器は局番1、9600bps、8N1、FC03・実際の開始アドレス0に設定します。応答はreceived[0]へ保存し、成功した場合だけ表示します。エラーコードは16進数で表示します。上のスレーブ例とは別のスケッチで、M/ | + | RS-232(Serial1)で相手スレーブのホールディングレジスタ1個を1秒ごとに読み取ります。相手機器は局番1、9600bps、8N1、FC03・実際の開始アドレス0に設定します。応答はreceived[0]へ保存し、成功した場合だけ表示します。エラーコードは16進数で表示します。上のスレーブ例とは別のスケッチで、M/ |
| <code cpp> | <code cpp> | ||
| 行 587: | 行 616: | ||
| **関連する内蔵関数** | **関連する内蔵関数** | ||
| - | === 関数例・LS産電Cnet | + | === 関数例・LS産電Cnet |
| **関数プロトタイプ** | **関数プロトタイプ** | ||
| 行 600: | 行 629: | ||
| D22の状態をM[0]、A0の生値(0~1023)をD[0]へ格納し、HMIから読み取ります。相手機器はLS産電Cnet、RS-232、局番1、9600bps、8N1に設定します。ビットは%MX00000(M[0])、ワードは%DW0(D[0])を読み取ります。通信関数はloop()の毎回の処理で呼び出します。この例では出力を制御しません。 | D22の状態をM[0]、A0の生値(0~1023)をD[0]へ格納し、HMIから読み取ります。相手機器はLS産電Cnet、RS-232、局番1、9600bps、8N1に設定します。ビットは%MX00000(M[0])、ワードは%DW0(D[0])を読み取ります。通信関数はloop()の毎回の処理で呼び出します。この例では出力を制御しません。 | ||
| - | M・D・Rはコアが提供する共有グローバルメモリで、この例ではRを使用しません。Modbusの例とは別に単独で実行します。他のプロトコルと併用する場合は、共有メモリを重複して割り当てないでください。 RS-485端子に接続する場合はSerial1をSerial2に変更し、UART端子ではSerial3を使用します。 | + | M・D・Rはコアが提供する共有グローバルメモリで、この例ではRを使用しません。Modbusの例とは別に単独で実行します。他のプロトコルと併用する場合は、共有メモリを重複して割り当てないでください。RS-485端子に接続する場合はSerial1をSerial2に変更し、UART端子ではSerial3を使用します。 |
| <code cpp> | <code cpp> | ||
| 行 630: | 行 659: | ||
| } | } | ||
| </ | </ | ||
| + | |||
| + | [[https:// | ||
| [[: | [[: | ||
ja-jp_products/mpino_16a8r.1789436247.txt.gz · 最終更新: by 127.0.0.1
