GPIOOutputs

GPIOOutputsを送信することで, GPIOピンの出力を各デバイス・ピン毎に設定できる.

GPIOピン
use autd3::prelude::*;
fn main() {
let _ =
GPIOOutputs::new(|_dev, gpio| {
    if gpio == GPIOOut::O0 {
        Some(GPIOOutputType::BaseSignal)
    } else {
        None
    }
});
}
#include<autd3.hpp>
int main() {
using namespace autd3;
GPIOOutputs([](const auto& dev,
               const auto& gpio) -> std::optional<GPIOOutputType> {
  if (gpio == GPIOOut::O0)
    return GPIOOutputType::BaseSignal;
  else
    return std::nullopt;
});
return 0; }
using AUTD3Sharp;
using AUTD3Sharp.Utils;
new GPIOOutputs(
    (dev, gpio) => gpio == GPIOOut.O0 ? GPIOOutputType.BaseSignal : null
);
from pyautd3 import GPIOOutputs, GPIOOutputType, GPIOOut
GPIOOutputs(
    lambda _dev, gpio: (
        GPIOOutputType.BaseSignal if gpio == GPIOOut.O0 else None
    ),
)

出力可能なデータは以下の通り.

  • BaseSignal: 基準信号 (超音波と同じ周波数のDuty比50%矩形波)
  • Thermo: 温度センサーがアサートされているかどうか
  • ForceFan: ForceFanフラグがアサートされているかどうか
  • Sync: EtherCAT同期信号
  • ModSegment: Modulationのセグメント
  • ModIdx(u16): Modulationのインデックスが指定した値のときにHighになる
  • StmSegment: STMのセグメント
  • StmIdx(u16): STMのインデックスが指定した値のときにHighになる
  • IsStmMode: FociSTM/GainSTMが使用されているかどうか
  • PwmOut(&Transducer): 指定した振動子のPWM出力
  • SysTimeEq(DcSysTime): 指定したシステム時間の間Highになる
  • SyncDiff: システム時間の補正中にHighになる
  • Direct(bool): 指定した値を出力する