これは開発版のドキュメントである. 内容は次のリリースまでに変更される可能性がある. 最新のリリース版は 0.6.x を参照.
SetGpioOut
SetGpioOut は, デバイスの 4 本の GPIO 出力端子に出力する信号を設定するコマンド.
SetGpioOut { outputs };SetGpioOut(outputs=outputs)new SetGpioOut(outputs);| フィールド | 型 | 説明 |
|---|---|---|
outputs |
[GpioOut; 4] |
端子 0..3 に割り当てる出力 |
GpioOut
Section titled “GpioOut”Off |
常に Low (デフォルト) |
BaseSignal |
超音波の基準信号 (40 kHz) |
Thermo |
温度センサのアサート |
ForceFan |
ForceFan の状態 |
Sync |
同期信号 |
ModBank |
アクティブな Modulation バンク |
ModIdx(u16) |
Modulation が指定インデックスのとき High |
PatternBank |
アクティブな Pattern バンク |
PatternIdx(u16) |
Pattern が指定インデックスのとき High |
IsStmMode |
Stm モード (size != 1) のとき High |
SysTimeEq(DcSysTime) |
システム時刻が指定値に一致したとき High |
SyncDiff |
同期誤差 |
PwmOut(u8) |
指定振動子の PWM 出力 |
Direct(bool) |
指定した固定値を直接出力 |
SysTimeEq に渡す DcSysTime については, DcSysTime を参照.
Example
Section titled “Example”use autd3_rs::commands::{GpioOut, SetGpioOut};use autd3_rs::geometry::{Autd3, Geometry};use autd3_rs::{Client, ClientConfig};use autd3_rs_link_nop::Nop;
let geometry = Geometry::new(vec![Autd3::default()]);let client = Client::open(&geometry, Nop, ClientConfig::default()).await?;
let mut builder = client.datagram_builder();builder.push(SetGpioOut { outputs: [ GpioOut::PatternBank, GpioOut::Thermo, GpioOut::PwmOut(0), GpioOut::Off, ],});let frames = builder.build()?;for frame in &frames { client.send_checked(frame).await?;}
client.close().await?;import asyncio
from autd3 import Client, ClientConfigfrom autd3.commands import GpioOut, SetGpioOutfrom autd3.geometry import Autd3, Geometryfrom autd3_link_nop import Nop
async def main() -> None: geometry = Geometry([Autd3([0.0, 0.0, 0.0], [1.0, 0.0, 0.0, 0.0])]) client = await Client.open(geometry, Nop(), ClientConfig())
builder = client.datagram_builder() builder.push( SetGpioOut( outputs=[ GpioOut.PatternBank, GpioOut.Thermo, GpioOut.PwmOut(0), GpioOut.Off, ] ) ) frames = builder.build() for frame in frames: await client.send_checked(frame)
await client.close()
asyncio.run(main())using System.Numerics;using System.Threading.Tasks;using AUTD3;using AUTD3.Link;using Nop = AUTD3.Link.Nop;
var geometry = new Geometry(new[] { new Autd3(Vector3.Zero) });var client = await Client.OpenAsync(geometry, new Nop(), new ClientConfig());
var builder = client.DatagramBuilder();builder.Push(new SetGpioOut(new[]{ GpioOut.PatternBank, GpioOut.Thermo, GpioOut.PwmOut(0), GpioOut.Off,}));var frames = builder.Build();foreach (var frame in frames){ await client.SendCheckedAsync(frame);}
await client.CloseAsync();