目次
ILOGICS内蔵コマンド説明書
ILOGICSボードではILOGICSが開発した内蔵コマンドを使用できます。別途ライブラリをインストールせず、ILOGICSボードを選択するだけで使用できます。
内蔵コマンドの使い方
- ILOGICSボードパッケージをインストールします。(Arduino SDK)
- Arduino IDEのツール → ボードで使用するボードを選択します。
- 内蔵コマンドを使用します。
内蔵コマンド一覧
例に記載された入出力アドレスは製品によって異なります。使用するILOGICS製品のボード定義を選択し、その製品のピンマップでアドレスを確認してください。
カテゴリ別に探す
| カテゴリ | コマンド | 説明 |
|---|---|---|
| デジタル入力フィルタ | IdigitalRead() | 入力を複数回連続で読み、すべての値が同じ場合だけ状態を更新します。HIGHとLOWが混在すると、前の安定状態を維持します。 |
| Ibounce() | 入力のON・OFF両方向にチャタリング除去時間を適用します。 | |
| IbounceOn() | 入力がOFFからONに変わるときだけ時間フィルタを適用します。 | |
| IbounceOff() | 入力がONからOFFに変わるときだけ時間フィルタを適用します。 | |
| エッジ検出 | Iup() | 入力がOFFからONに変わる瞬間だけtrueを返します。 |
| Idown() | 入力がONからOFFに変わる瞬間だけtrueを返します。 |
|
| 状態反転 | Ialt() | 入力の立ち上がりごとに指定した状態をON・OFF反転します。 |
| 範囲変換 | Iscale() | 整数入力値を指定した整数範囲に変換します。 |
| Iscalef() | 実数入力値を指定した実数範囲に変換します。 | |
| タイマ | Iton() | (On Delay Timer) 条件が一定時間ONになって初めてtrueを返します。 |
| Itof() | (Off Delay Timer) 条件がOFFになってから一定時間が経過するとfalseを返します。 |
|
| Itpl() | (Pulse Timer) 条件がONになった瞬間から設定時間の間trueを返します。 |
|
| Itmon() | (Monostable Timer)動作中に再入力されても時間が延長されないパルスを出力します。 | |
| Itmr() | (Retentive Timer)条件がONの時間を積算し、Reset入力で初期化します。 | |
| タイマ状態 | IgetTime() | 指定したタイマの現在の経過時間を返します。 |
| IgetState() | 指定したタイマの現在の出力状態を返します。 | |
| コールバックタイマ | ItimerSet() | 周期とコールバック関数、または使用するハードウェアタイマを設定します。 |
| ItimerStart() | 設定したコールバックタイマを開始します。 | |
| ItimerStop() | 既定または指定したコールバックタイマを停止します。 | |
| ItimerStopAll() | 実行中のコールバックタイマをすべて停止します。 | |
| ItimerState() | 既定または指定したコールバックタイマの実行状態を返します。 | |
| カウンタ | Ictu() | 入力の立ち上がり回数を数え、設定値に達するとtrueを返します。 |
| Ictd() | 設定値を読み込んだ後、入力の立ち上がりごとに現在値を減らします。 | |
| Ictud() | 増加入力と減少入力を1つのカウンタで処理します。 | |
| IgetCount() | 指定したカウンタの現在値を返します。 | |
| IsetCount() | 指定したカウンタの現在値を変更します。 | |
| IctudDownState() | Up/Downカウンタの下限完了状態を返します。 | |
| データバッファ | FIFO() | 先に保存した16ビットデータから順に出力します。 |
| FILO() | 後に保存した16ビットデータから順に出力します。 | |
| アナログ入力 | analogReadInit() | アナログ入力モジュールのサンプリング速度を設定します。 |
| analogRead() | 指定したチャネルの生のアナログ値を読み取ります。 | |
| analogReadAvg() | 複数の入力値の整数平均を返します。 | |
| analogReadAvgf() | 複数の入力値の実数平均を返します。 | |
| アナログ入力フィルタ | IanalogFilter() | 渡された値を移動平均処理します。 |
| アナログ範囲変換 | IanalogRead() | アナログ入力値を指定した整数範囲に変換します。 |
| IanalogReadf() | アナログ入力値を指定した実数範囲に変換します。 | |
| 4~20mA入力 | analogRead2() | 指定したチャネルの4~20mA補正入力値を読み取ります。 |
| analogRead2Avg() | 4~20mA入力値の整数平均を返します。 | |
| analogRead2Avgf() | 4~20mA入力値の実数平均を返します。 | |
| 4~20mA範囲変換 | IanalogRead2() | 4~20mA入力値を指定した整数範囲に変換します。 |
| IanalogRead2f() | 4~20mA入力値を指定した実数範囲に変換します。 | |
| 温度入力 | ntcRead() | NTC 3950 10kΩセンサの温度を0.1℃単位の整数で返します。 |
| ntcReadf() | NTC 3950 10kΩセンサの温度を℃単位の実数で返します。 | |
| pt100Read() | PT100センサの温度を0.1℃単位の整数で返します。 | |
| アナログ出力 | analogWriteInit() | 出力タイマの分解能と分周比を設定します。 |
| analogWriteFreq() | 指定した出力チャネルのPWM周波数を設定します。 | |
| analogWriteMax() | 指定した出力チャネルで使用できる最大値を返します。 | |
| IanalogWriteInit() | MPAINOアナログ出力の最大値・最小値とモードを設定します。 | |
| IanalogWrite() | ユーザーの整数値をアナログ出力範囲に変換して出力します。 | |
| IanalogWritef() | ユーザーの実数値をアナログ出力範囲に変換して出力します。 | |
| 4~20mA出力 | analogWrite2() | 指定したチャネルに4~20mA変換用の生値を出力します。 |
| IanalogWrite2() | ユーザーの整数値を4~20mA出力範囲に変換します。 | |
| IanalogWrite2f() | ユーザーの実数値を4~20mA出力範囲に変換します。 | |
| PWM出力 | PWM() | 指定したピンに8ビットまたは16ビットPWMを出力します。 |
| FDPWM() | 指定した周波数とデューティ比でPWMを出力します。 | |
| PWMOFF() | 指定したピンのPWM出力を停止または再許可します。 | |
| PWM_RESET() | コアが管理するPWM状態をすべて初期化します。 | |
| パルス出力 | NPWM_BEGIN() | 周波数・デューティ比・出力数を指定してパルス出力を準備します。 |
| NPWM() | 準備した数だけパルスを出力します。 | |
| PID制御 | IpidSet() | PID係数、計算周期と出力範囲を設定します。 |
| IpidRun() | 現在値と設定値を使ってPID出力を計算します。 | |
| IpidReset() | PIDの積分値と内部状態を初期化します。 | |
| IpidReverse() | PIDの正動作または逆動作を選択します。 | |
| IpidItermLimit() | PID積分項の最小値と最大値を制限します。 | |
| IpidOutput() | 最後に計算したPID出力値を返します。 | |
| TM1637 FND | IsegBegin() | TM1637 FNDのCLK・DIOピンと装置番号を設定します。 |
| IsegBrightness() | 画面の明るさと表示状態を設定します。 | |
| IsegClear() | FND表示を消去します。 | |
| IsegWrite() | 指定位置にセグメントデータを出力します。 | |
| IsegDecimal() | 整数を10進数形式で表示します。 | |
| IsegHex() | 整数を16進数形式で表示します。 | |
| IsegEncodeDigit() | 数字1桁をセグメントデータに変換します。 | |
| キャラクタLCD | IclcdBegin() | PCF8574キャラクタLCDのアドレスと画面サイズを設定します。 |
| IclcdClear() | LCD画面を消去します。 | |
| IclcdHome() | カーソルを先頭位置へ移動します。 | |
| IclcdSetCursor() | カーソルを指定した列と行に移動します。 | |
| IclcdDisplay() | LCD表示を有効または無効にします。 | |
| IclcdCursor() | カーソルを表示または非表示にします。 | |
| IclcdBlink() | カーソルの点滅を有効または無効にします。 | |
| IclcdBacklight() | LCDバックライトを点灯または消灯します。 | |
| IclcdScrollLeft() | 表示内容を左に1桁移動します。 | |
| IclcdScrollRight() | 表示内容を右に1桁移動します。 | |
| IclcdTextDirection() | 文字の入力方向を設定します。 | |
| IclcdAutoscroll() | 自動スクロールを有効または無効にします。 | |
| IclcdCreateChar() | ユーザー定義文字を登録します。 | |
| IclcdWrite() | 文字コードまたはユーザー定義文字を出力します。 | |
| IclcdCommand() | LCD制御コマンドを直接送信します。 | |
| IclcdPrint() | 文字列または数値をLCDに出力します。 | |
| RTC | IrtcBegin() | DS3231 RTCの接続を確認して使用を開始します。 |
| IrtcRead() | RTCの日付と時刻を読み取ります。 | |
| IrtcSet() | RTCの日付と時刻を設定します。 | |
| IrtcUnixTime() | 現在時刻をUnix時間で返します。 | |
| IrtcGetTemperature() | RTCの内部温度を返します。 | |
| IrtcTimeValid() | RTC時刻が信頼できる状態か確認します。 | |
| IrtcClearOscillatorStopFlag() | 発振停止状態フラグをクリアします。 | |
| IrtcSetAlarm1() | 秒単位を含むアラーム1を設定します。 | |
| IrtcSetAlarm2() | 分単位のアラーム2を設定します。 | |
| IrtcAlarmEnable() | 指定したアラームを有効または無効にします。 | |
| IrtcAlarmEnabled() | 指定したアラームの有効状態を確認します。 | |
| IrtcAlarmTriggered() | アラームの発生有無を確認し、必要に応じて状態をクリアします。 | |
| IrtcSquareWave() | RTCの矩形波出力を設定します。 | |
| Irtc32kHz() | RTCの32kHz出力を有効または無効にします。 | |
| デバッグ | debugStart() | デバッグ出力に使用するポートとボーレートを設定します。 |
| debugStop() | デバッグ出力を停止します。 | |
| debugState() | デバッグ出力の有効状態を返します。 | |
| debug() | デバッグが有効な場合だけ値を出力します。 | |
| debugln() | デバッグ値を出力して改行します。 | |
| Watchdog | WDT_ENABLE() | Watchdogの制限時間を設定して動作を開始します。 |
| WDT_DISABLE() | Watchdogの動作を停止します。 | |
| WDT() | 制限時間が切れる前にWatchdogを更新します。 | |
| 高速カウンタ | TCNTSETUP() | タイマの外部クロック入力と32ビット拡張モードを設定します。 |
| TCNTOUT() | 32ビット拡張モードの累積上位オーバーフロー値を返します。 | |
| Modbus RTU Slave | ImodbusRTUMem() | Slaveで使用するM・Dメモリのサイズを設定します。 |
| ImodbusRTUAdr() | M・Dメモリの開始アドレスを設定します。 | |
| ImodbusRTUInit() | 通信ポート、局番、ボーレートを設定します。 | |
| ImodbusRTU() | 受信要求を確認し、Slave応答を処理します。 | |
| Modbus RTU Master | ImodbusRTUmasterInit() | Master通信ポートとボーレートを設定します。 |
| ImodbusRTUmaster() | 1つのMaster要求を直ちに実行します。 | |
| ImodbusRTUmasterAdd() | 繰り返し実行するMaster要求を登録します。 | |
| ImodbusRTUmasterRun() | 登録要求または指定した単一要求を実行します。 | |
| LS産電 Cnet Slave | ICnetMem() | Cnet Slaveで使用するM・D・Rメモリのサイズを設定します。 |
| ICnetAdr() | M・D・Rメモリの開始アドレスを設定します。 | |
| ICnetInit() | 通信ポート、局番、ボーレートを設定します。 | |
| ICnet() | 受信要求を確認し、Cnet Slave応答を処理します。 | |
| Mitsubishi MC Protocol | IMcMem() | MC Protocolで使用するX・Y・M・Dメモリのサイズを設定します。 |
| IMcAdr() | X・Y・M・Dメモリの開始アドレスを設定します。 | |
| IMcInit() | 通信ポート、局番、ボーレートを設定します。 | |
| IMcProtocol() | 受信要求を確認し、MC Protocol応答を処理します。 |
デジタル入力フィルタ
| コマンド形式 | 戻り値 | 使用基準 |
|---|---|---|
| IdigitalRead(pin, samples) | フィルタ処理したHIGHまたはLOW | すべてのサンプルが同じ場合だけ状態を更新し、値が混在すると前の安定状態を維持 |
| Ibounce(pin, ms) | 安定化した入力状態 | ONまたはOFFが設定時間維持されたときに状態変更 |
| IbounceOn(pin, ms) | ON方向が遅延された入力状態 | OFF→ON方向だけに時間フィルタを適用 |
| IbounceOff(pin, ms) | OFF方向が遅延された入力状態 | ON→OFF方向だけに時間フィルタを適用 |
IdigitalRead()は短時間に繰り返しサンプリングする方式で、Ibounce()はmillis()を基準に入力が安定した時間を確認する方式です。機械式スイッチには通常Ibounce()が適しています。
エッジ検出
| コマンド形式 | 戻り値 | 説明 |
|---|---|---|
| Iup(id, input) | 立ち上がり時だけtrue | OFFからONに変わる瞬間を1回検出 |
| Idown(id, input) | 立ち下がり時だけtrue | ONからOFFに変わる瞬間を1回検出 |
idは各エッジ検出状態を区別します。異なる入力に同じidを使うと状態が混在する場合があります。
状態反転
| コマンド形式 | 戻り値 | 説明 |
|---|---|---|
| Ialt(input, state) | なし | 入力の立ち上がりごとにstate値をON/OFF反転 |
次の例では、MPAINO-8A8R(T)の最初の入力0と出力64を使用します。
bool lampState = false; void setup() {} void loop() { bool button = Ibounce(0, 30); Ialt(button, lampState); digitalWrite(64, lampState); // MPAINOの最初のデジタル出力の例 }
範囲変換
| コマンド形式 | 戻り値 | 説明 |
|---|---|---|
| Iscale(x, inMin, inMax, outMin, outMax) | int32_t | 整数入力範囲を希望する整数範囲に変換 |
| Iscalef(x, inMin, inMax, outMin, outMax) | float | 小数点を保持して実数範囲を変換 |
タイマ
| コマンド形式 | 動作 |
|---|---|
| Iton(id, state, ms) | 入力が設定時間ONであると出力ON |
| Itof(id, state, ms) | 入力OFF後に設定時間が経過すると出力OFF |
| Itpl(id, state, ms) | 入力の立ち上がり瞬間から設定時間の間パルス出力 |
| Itmon(id, state, ms) | 実行中に再入力されても延長されない単安定パルス |
| Itmr(id, state, ms, reset) | 入力ON時間を積算し、resetで初期化 |
PLCスタイルタイマはdelay()のようにプログラムを停止しません。代わりにloop()が繰り返されるたびに継続的に呼び出してください。異なるタイマに同じidを重複使用しないでください。
次の例では、MPAINO-8A8R(T)の最初の入力0と出力64を使用します。
void setup() {} void loop() { bool run = Ibounce(0, 30); bool delayedOutput = Iton(0, run, 1000); digitalWrite(64, delayedOutput); }
タイマ状態
| コマンド形式 | 戻り値 | 説明 |
|---|---|---|
| IgetTime(id) | unsigned long | 指定したタイマの現在の経過時間を返す |
| IgetState(id) | bool | 指定したタイマの現在の出力状態を返す |
コールバックタイマ
| コマンド形式 | 説明 |
|---|---|
| ItimerSet(intervalMs, callback) | 既定タイマの実行周期とコールバック関数の設定 |
| ItimerSet(timerNo, intervalMs, callback) | ハードウェアタイマ番号を指定して設定 |
| ItimerStart(), ItimerStart(timerNo) | コールバックタイマの開始 |
| ItimerStop(), ItimerStop(timerNo) | コールバックタイマの停止 |
| ItimerStopAll() | すべてのコールバックタイマを停止 |
| ItimerState(), ItimerState(timerNo) | 実行状態の確認 |
コールバック関数は割り込み内で実行されます。コールバックではフラグや短いカウントだけを変更し、delay()、Serial出力、I²C、SPI、長い計算を使用しないでください。
volatile bool taskFlag = false; void onTimer() { taskFlag = true; } void setup() { ItimerSet(100, onTimer); ItimerStart(); } void loop() { if (taskFlag) { taskFlag = false; // 時間のかかる実際の処理はloop()で実行します。 } }
カウンタ
| コマンド形式 | 説明 |
|---|---|
| Ictu(id, CU, RESET, PV) | CUの立ち上がりエッジを数え、PVに達するとON |
| Ictd(id, CD, LOAD, PV) | LOADで値を読み込み、CDの立ち上がりエッジごとに減少 |
| Ictud(id, CU, CD, RESET, LOAD, PV) | 増加と減少をまとめて処理 |
| IgetCount(id), IsetCount(id, value) | 現在のカウント値の参照と変更 |
| IctudDownState(id) | Up/Downカウンタの下限完了状態の確認 |
カウンタコマンドはloop()で継続的に呼び出します。idは他のカウンタと重複しないように割り当てます。
データバッファ
アナログ入力
| コマンド形式 | 戻り値・用途 |
|---|---|
| analogReadInit(sps) | MPAINO ADS1118アナログモジュールのサンプリング速度設定 |
| analogRead(ch) | 選択チャネルの生アナログ値の読み取り |
| analogReadAvg(ch, samples), analogReadAvgf(ch, samples) | 整数または実数の移動平均入力 |
アナログ入力フィルタ
| コマンド形式 | 戻り値・用途 |
|---|---|
| IanalogFilter(id, raw, samples) | ユーザーが渡した任意の値を移動平均処理 |
アナログ範囲変換
| コマンド形式 | 戻り値・用途 |
|---|---|
| IanalogRead(ch, min, max), IanalogReadf(ch, min, max) | 入力をユーザーの整数・実数範囲に変換 |
4~20mA入力
| コマンド形式 | 戻り値・用途 |
|---|---|
| analogRead2(ch) | 4~20mA補正入力値の読み取り |
| analogRead2Avg(ch, samples), analogRead2Avgf(ch, samples) | 4~20mA入力値の整数または実数平均を返す |
4~20mA範囲変換
| コマンド形式 | 戻り値・用途 |
|---|---|
| IanalogRead2(ch, min, max), IanalogRead2f(ch, min, max) | 4~20mA入力をユーザー範囲に変換 |
MPAINOでは装着したアナログ入力モジュールとDIPスイッチの電圧・電流範囲を先に確認します。サンプリング速度を上げると応答は速くなりますが、ノイズや測定特性が変わる場合があります。
void setup() { Serial.begin(115200); analogReadInit(IANALOG_SPS_64); } void loop() { int32_t raw = analogReadAvg(0, 8); float value = Iscalef(raw, 0.0, 32767.0, 0.0, 100.0); Serial.println(value); }
温度入力
| コマンド形式 | 戻り値 | 対象 |
|---|---|---|
| ntcRead(ch) | 0.1℃単位の整数 | NTC 3950 10kΩ温度センサ入力 |
| ntcReadf(ch) | ℃単位のfloat | NTC 3950 10kΩ温度センサ入力 |
| pt100Read(ch) | 0.1℃単位の整数 | MPAINO PT100入力モジュール |
NTCとPT100はセンサ種類と入力回路が異なります。相互に置き換えて使用せず、選択した製品に該当する入力機能があるか確認してください。
アナログ出力
| コマンド形式 | 説明 |
|---|---|
| analogWriteInit(ch, top, prescaler) | PWMタイマの分解能と分周比の設定 |
| analogWriteFreq(ch, hz), analogWriteMax(ch) | PWM周波数の設定と現在の最大値の確認 |
| IanalogWriteInit(ch, max, min, mode) | MPAINOアナログ出力範囲の初期化 |
| IanalogWrite(ch, min, max, value), IanalogWritef(...) | 整数・実数のユーザー値をアナログ出力範囲に変換 |
4~20mA出力
| コマンド形式 | 説明 |
|---|---|
| analogWrite2(ch, value) | 指定チャネルに4~20mA変換用の生値を出力 |
| IanalogWrite2(ch, min, max, value), IanalogWrite2f(...) | 整数・実数のユーザー値を4~20mA出力範囲に変換 |
PWM出力
| コマンド形式 | 説明 |
|---|---|
| PWM(pin, value, bit16) | 8ビットまたは16ビットPWM出力 |
| FDPWM(pin, hz, duty) | 周波数とデューティ比を指定したPWM出力 |
| PWMOFF(pin, off), PWM_RESET() | 個別PWMの停止または全体の初期化 |
パルス出力
| コマンド形式 | 説明 |
|---|---|
| NPWM_BEGIN(pin, hz, duty, count), NPWM(pin) | 指定した数だけパルス出力 |
PWM、高速パルス、analogWrite()、コールバックタイマは同じハードウェアタイマを共有する場合があります。複数の機能を組み合わせるときは、該当製品のタイマ対応表を確認してください。
PID制御
| コマンド形式 | 説明 |
|---|---|
| IpidSet(id, kp, ki, kd, sampleMs, outMin, outMax) | PID係数、計算周期、出力範囲の設定 |
| IpidRun(id, pv, sv) | 現在値PVと設定値SVから出力を計算 |
| IpidReset(id) | 内部状態の初期化 |
| IpidReverse(id, reverse) | 正動作または逆動作の選択 |
| IpidItermLimit(id, min, max) | 積分項の範囲制限 |
| IpidOutput(id) | 最後の出力値の確認 |
void setup() { IpidSet(0, 2.0, 0.5, 0.1, 100, 0, 100); } void loop() { float pv = ntcReadf(0); float output = IpidRun(0, pv, 50.0); IanalogWritef(0, 0.0, 100.0, output); }
PID出力は計算値であり、安全装置ではありません。センサ断線、過温度、出力固着、非常停止は別の安全回路で処理してください。
TM1637 FND
| 対象 | 主なコマンド | 説明 |
|---|---|---|
| TM1637 4桁FND | IsegBegin(), IsegBrightness(), IsegDecimal(), IsegHex(), IsegClear() | 最大7台の装置をdevice番号で区別 |
キャラクタLCD
| 対象 | 主なコマンド | 説明 |
|---|---|---|
| PCF8574キャラクタLCD | IclcdBegin(), IclcdSetCursor(), IclcdPrint(), IclcdClear() | 最大4台のLCDをdevice番号で区別 |
RTC
| 対象 | 主なコマンド | 説明 |
|---|---|---|
| DS3231 RTC | IrtcBegin(), IrtcRead(), IrtcSet(), IrtcGetTemperature(), IrtcSetAlarm1() | 日付・時刻、温度、アラーム、周波数出力の使用 |
表示装置とRTCは、それぞれのBeginコマンドを先に呼び出します。I²Cアドレス、接続ピン、他の機能との共有有無を確認してください。
デバッグ
| コマンド形式 | 説明 |
|---|---|
| debugStart(), debugStart(baud), debugStart(serial, baud) | Debug出力の開始とポート選択 |
| debug(), debugln() | Debugが有効な場合だけ値を出力 |
| debugStop(), debugState() | Debugの停止と状態確認 |
Watchdog
| コマンド形式 | 説明 |
|---|---|
| WDT_ENABLE(time) | Watchdogの制限時間設定と有効化 |
| WDT(), WDT_DISABLE() | Watchdogのリセットと無効化 |
Watchdogを有効にした後、WDT()の呼び出しが遅れるとボードが再起動します。通信待ちと長いループの最悪実行時間を先に確認してください。
高速カウンタ
| コマンド形式 | 説明 |
|---|---|
| TCNTSETUP(timerNo, bit32) | タイマ外部クロック入力と32ビット拡張モードの設定 |
| TCNTOUT(timerNo) | 32ビット拡張モードで累積した上位オーバーフロー回数の確認 |
現在、タイマ外部クロック方式の専用高速カウンタに対応する製品はMPINO-8A8RとMPINO-16A8R8Tです。他の製品では製品別の割り込み入力を確認し、attachInterrupt()方式を使用します。
Modbus RTU Slave
| 初期設定 | loop()で実行するコマンド |
|---|---|
| ImodbusRTUMem(), ImodbusRTUAdr(), ImodbusRTUInit() | ImodbusRTU() |
void setup() { ImodbusRTUMem(128, 64); ImodbusRTUAdr(0, 0); ImodbusRTUInit(Serial2, 1, 9600); } void loop() { ImodbusRTU(); }
Modbus RTU Master
LS産電 Cnet Slave
| 初期設定 | loop()で実行するコマンド |
|---|---|
| ICnetMem(), ICnetAdr(), ICnetInit() | ICnet() |
Mitsubishi MC Protocol
| 初期設定 | loop()で実行するコマンド |
|---|---|
| IMcMem(), IMcAdr(), IMcInit() | IMcProtocol() |
RS-232、RS-485、UARTのSerial番号は製品によって異なる場合があります。通信前にポートの役割、電気規格、ボーレート、局番、終端抵抗、DIPスイッチ設定を確認してください。
統合入出力の例
以下の例ではMPAINOの最初のデジタル入力0と最初のデジタル出力64を使用します。MPINOでは選択したモデルの実際のArduinoピン番号に変更してください。
const uint8_t inputChannel = 0; const uint8_t outputChannel = 64; void setup() {} void loop() { bool stableInput = Ibounce(inputChannel, 30); bool delayedOutput = Iton(0, stableInput, 1000); digitalWrite(outputChannel, delayedOutput); }
トラブルシューティング
- コマンドが見つからない: ILOGICSボードパッケージのインストールと製品ボードの選択を確認します。
- 入出力が反応しない: MPINOのピン番号とMPAINOの論理チャネルを混同していないか確認します。
- タイマ・カウンタが停止する:
loop()でコマンドを継続的に呼び出しているか、同じidを重複使用していないか確認します。 - PWM周波数がおかしい: 同じハードウェアタイマを別のPWM・パルス・コールバック機能が使用していないか確認します。
- アナログ値が異なる: 電圧・電流・NTC・PT100のDIPスイッチ、チャネル、サンプリング速度を確認します。
- 通信できない: Serialポート、RS-232/RS-485方式、ボーレート、局番、パリティ、配線を確認します。
- ボードが繰り返し再起動する: Watchdogの制限時間より長くかかるコードがないか確認します。
必須注意事項
- 従来の
#include <ILIB.h>、tempRead()、Ipt100Read()の例を現在の内蔵コマンドと混用しないでください。 - 電源や配線を変更するときは機器の電源を切り、極性、COM、入力電圧、負荷電源を確認します。
- リレー出力とトランジスタ出力の電気的特性および許容電流を区別してください。
- プログラム出力だけを非常停止や過電流保護の手段として使用しないでください。
- 製品別のピンマップ、電気仕様、対応タイマは該当する製品説明書を最終基準として確認します。
