ユーザ用ツール

サイト用ツール


ja-jp_products:mpaino_48a48t

差分

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

この比較画面へのリンク

両方とも前のリビジョン前のリビジョン
次のリビジョン
前のリビジョン
ja-jp_products:mpaino_48a48t [2026/09/15 13:15] – 外部編集 127.0.0.1ja-jp_products:mpaino_48a48t [2026/10/25 10:18] (現在) – 外部編集 127.0.0.1
行 1: 行 1:
 ====== MPAINO-48A48T ====== ====== MPAINO-48A48T ======
  
-MPAINO Seriesは、CPUモジュールとデジタル入力・出力モジュールを組み合わせた組立式の産業用Arduinoです。 \\+MPAINO Seriesは、CPUモジュールとデジタル入力・出力モジュールを組み合わせた産業用Arduinoです。 \\
 アナログ入出力、温度センサ入力、高速パルス出力の各モジュールをオプションで追加できます。 \\ アナログ入出力、温度センサ入力、高速パルス出力の各モジュールをオプションで追加できます。 \\
-選択したI/Oモジュールとオプションモジュールを1台の製品に組み立てて出荷します。 ユーザーによるモジュールの追加・取り外しはできません。+選択したI/Oモジュールとオプションモジュールを組み合わせ、1台の製品として出荷します。ユーザーによるモジュールの追加・取り外しはできません。
  
 [[:ja-jp_products:mpaino_x|アナログ入力Xモジュール詳細 — DIP設定・配線・プログラム例 →]] [[:ja-jp_products:mpaino_x|アナログ入力Xモジュール詳細 — DIP設定・配線・プログラム例 →]]
行 14: 行 14:
 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#arduino_ide設定表|MPAINO Arduino IDE設定表]]で、MPAINO-48A48Tのボード名、接続方法、最初の入出力番号を確認できます。+[[:ja-jp_products:mpaino#mpaino_series仕様表|MPAINO Series仕様表]]で、MPAINO-48A48Tのボード名と基本ピン番号を確認できます。
  
  
行 55: 行 55:
 | モジュール5 | COM0 \\ COM1 | D40~D43 \\ D44~D47 | 絶縁デジタル入力8点 | ::: | | モジュール5 | COM0 \\ COM1 | D40~D43 \\ D44~D47 | 絶縁デジタル入力8点 | ::: |
  
-デジタル入力はフォトカプラで絶縁されており、DC 5~24VのNPNまたはPNP方式のスイッチやセンサを接続できます。 入力方式は各モジュールのCOM端子の配線極性で選択します。+デジタル入力はフォトカプラで絶縁されており、DC 5~24VのNPNまたはPNP方式のスイッチやセンサを接続できます。入力方式は各モジュールのCOM端子の配線極性で選択します。
  
   * 入力端子にDC 5~24Vが入る構成:該当COMをGNDに接続します。   * 入力端子にDC 5~24Vが入る構成:該当COMをGNDに接続します。
行 62: 行 62:
 ==== プログラム例・デジタル入力 ==== ==== プログラム例・デジタル入力 ====
  
-入力論理番号0~47の状態をdigitalRead()で読み取ります。 現在のILOGICSコアは、端子に印刷された従来の物理D番号を内部で変換します。+入力論理番号0~47の状態をdigitalRead()で読み取ります。現在のILOGICSコアは、端子に印刷された従来の物理D番号を内部で変換します。
  
 <code cpp> <code cpp>
行 89: 行 89:
 </code> </code>
  
-IdigitalRead(0, 5)は入力0を5回連続で読み取ります。 すべてHIGHまたはすべてLOWの場合に状態を更新し、値が混在する場合は前の状態を保持します。 時間ベースのチャタリング防止フィルタと異なり、読み取りの間に遅延を入れません。+IdigitalRead(0, 5)は入力0を5回連続で読み取ります。すべてHIGHまたはすべてLOWの場合に状態を更新し、値が混在する場合は前の状態を保持します。時間ベースのチャタリング防止フィルタと異なり、読み取りの間に遅延を入れません。
  
 <code cpp> <code cpp>
行 113: 行 113:
 </code> </code>
  
-入力0に対する3種類のフィルタを比較します。 戻り値はフィルタ処理後のON/OFF状態です。+入力0に対する3種類のフィルタを比較します。戻り値はフィルタ処理後のON/OFF状態です。
  
   * ''Ibounce(0, 30)'': ON・OFFともに30ms以上安定した後に反映します。   * ''Ibounce(0, 30)'': ON・OFFともに30ms以上安定した後に反映します。
行 153: 行 153:
 </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>
行 187: 行 187:
 | モジュール5 | D104~D111 | P24 \\ N24 | 絶縁SINKトランジスタ出力8点 | ::: | | モジュール5 | D104~D111 | P24 \\ N24 | 絶縁SINKトランジスタ出力8点 | ::: |
  
-各モジュールのP24にDC 5~24V電源を接続し、N24にその電源のGNDを接続します。 ONになると、選択した出力端子からそのモジュールのN24に接続されたGNDが出力されます。+各モジュールのP24にDC 5~24V電源を接続し、N24にその電源のGNDを接続します。出力がONになると、選択した出力端子がそのモジュールのN24を介して電源のGNDに接続されます。
  
 ^ 項目 ^ 定格 ^ ^ 項目 ^ 定格 ^
行 196: 行 196:
 ==== プログラム例・トランジスタ出力 ==== ==== プログラム例・トランジスタ出力 ====
  
-入力0~47を出力64~111に対応させます。 HIGHの場合、SINKトランジスタ出力がONになります。+入力0~47を出力64~111に対応させます。HIGHの場合、SINKトランジスタ出力がONになります。
  
 <code cpp> <code cpp>
行 216: 行 216:
 | SDA(D20·INT2), SCL(D21·INT3) | 非絶縁入力、4.7kΩプルアップ内蔵 | 50kHz | I²C通信 |  {{:ja-jp_products:mpaino-encoder.svg?430|MPAINO-48A48T I2C端子台とエンコーダ配線}}  | | SDA(D20·INT2), SCL(D21·INT3) | 非絶縁入力、4.7kΩプルアップ内蔵 | 50kHz | I²C通信 |  {{:ja-jp_products:mpaino-encoder.svg?430|MPAINO-48A48T I2C端子台とエンコーダ配線}}  |
  
-エンコーダは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通信と同時に使用しないでください。 MPAINOボードパッケージでは、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>
行 245: 行 245:
 ==== プログラム例・エンコーダ入力 ==== ==== プログラム例・エンコーダ入力 ====
  
-I²C端子のSDA(D20)は4.7kΩプルアップ入力です。 この例はI²C通信と同時に使用しないでください。 MPAINOボードパッケージでは、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>
行 287: 行 287:
 ==== プログラム例・基本通信 ==== ==== プログラム例・基本通信 ====
  
-Serial(115200bps)とRS-232(Serial1, 9600bps, 8N1)の間で文字を転送します。 各ポートの例は単独で実行してください。+Serial(115200bps)とRS-232(Serial1, 9600bps, 8N1)の間で文字を転送します。各ポートの例は単独で実行してください。
  
 <code cpp> <code cpp>
行 306: 行 306:
 </code> </code>
  
-Serial(115200bps)とRS-485(Serial2, 9600bps, 8N1)の間で文字を転送します。 各ポートの例は単独で実行してください。+Serial(115200bps)とRS-485(Serial2, 9600bps, 8N1)の間で文字を転送します。各ポートの例は単独で実行してください。
  
 <code cpp> <code cpp>
行 325: 行 325:
 </code> </code>
  
-Serial(115200bps)とUART(Serial3, 9600bps, 8N1)の間で文字を転送します。 各ポートの例は単独で実行してください。+Serial(115200bps)とUART(Serial3, 9600bps, 8N1)の間で文字を転送します。各ポートの例は単独で実行してください。
  
 <code cpp> <code cpp>
行 347: 行 347:
 ==== プログラム例・I²C通信 ==== ==== プログラム例・I²C通信 ====
  
-SDA・SCLのI²C機器アドレスを検索します。 同じ端子を使用するパルス・エンコーダの例と同時に実行しないでください。+SDA・SCLのI²C機器アドレスを検索します。同じ端子を使用するパルス・エンコーダの例と同時に実行しないでください。
  
 <code cpp> <code cpp>
行 392: 行 392:
 </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はコアが提供する共有グローバルメモリです。このスケッチは単独で実行します。他のプロトコルと併用する場合は、共有メモリを重複して割り当てないでください。
行 434: 行 434:
 </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>
行 465: 行 465:
 **関連する内蔵関数** **関連する内蔵関数**
  
-=== 関数例・LS産電Cnet SLave:ICnetMem()、ICnetAdr()、ICnetInit()、ICnet() ===+=== 関数例・LS産電Cnet Slave:ICnetMem()、ICnetAdr()、ICnetInit()、ICnet() ===
  
 **関数プロトタイプ** **関数プロトタイプ**
行 476: 行 476:
 </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の例とは別に単独で実行します。他のプロトコルと併用する場合は、共有メモリを重複して割り当てないでください。
行 512: 行 512:
 ===== オプションモジュール ===== ===== オプションモジュール =====
  
-出荷時に該当するオプションモジュールを搭載した製品で使用する例です。 例に示したモジュール構成と実際の出荷構成を一致させてください。+出荷時に該当するオプションモジュールを搭載した製品で使用する例です。例に示したモジュール構成と実際の出荷構成を一致させてください。
  
 ==== プログラム例・アナログ入力(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>
行 544: 行 544:
 </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>
行 575: 行 575:
 </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>
行 608: 行 608:
 </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>
行 633: 行 633:
 ==== プログラム例・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>
行 657: 行 657:
 </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>
行 687: 行 687:
 </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>
行 708: 行 708:
 ==== プログラム例・アナログ出力(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>
行 732: 行 732:
 </code> </code>
  
-Yモジュールのチャンネル0に整数値で50%、チャンネル1に浮動小数点数で25%を出力します。 min・maxはユーザー値の範囲を指定し、電気的な出力モードはモジュールのDIPスイッチで決まります。+Yモジュールのチャンネル0に整数値で50%、チャンネル1に浮動小数点数で25%を出力します。min・maxはユーザー値の範囲を指定し、電気的な出力モードはモジュールのDIPスイッチで決まります。
  
 <code cpp> <code cpp>
行 749: 行 749:
 ==== プログラム例・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>
行 772: 行 772:
 </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>
行 792: 行 792:
 </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>
行 813: 行 813:
 </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>
行 834: 行 834:
 </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>
行 861: 行 861:
 </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>
行 880: 行 880:
  
 CPUモジュールのSTATUS LEDは''LED_BUILTIN''(D128)で制御します。 CPUモジュールのSTATUS LEDは''LED_BUILTIN''(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>
行 922: 行 945:
 ^ 背面図 ^  ^ ^ 背面図 ^  ^
 |  [[https://www.ilogics.net/docs/_media/products:mpaino-48a48t-dimension-rear.svg|{{ :ja-jp_products:mpaino-48a48t-dimension-rear.svg?nolink&360 }}]]  |  | |  [[https://www.ilogics.net/docs/_media/products:mpaino-48a48t-dimension-rear.svg|{{ :ja-jp_products:mpaino-48a48t-dimension-rear.svg?nolink&360 }}]]  |  |
 +
 +[[https://www.ilogics.net/ja-jp/products/mpaino-48a48t|MPAINO-48A48T の価格・購入情報を見る]]
  
 [[:ja-jp_products:mpaino|← MPAINO Series比較表に戻る]] [[:ja-jp_products:mpaino|← MPAINO Series比較表に戻る]]
  
ja-jp_products/mpaino_48a48t.1789445716.txt.gz · 最終更新: by 127.0.0.1

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki