SetPulseWidthTable
SetPulseWidthTable は, 強度 (0–255) から PWM のパルス幅への変換テーブルを設定するコマンド.
SetPulseWidthTable { table: &table };SetPulseWidthTable(table)new SetPulseWidthTable(table);| フィールド | 型 | 説明 |
|---|---|---|
table |
&[u16; PWE_TABLE_SIZE] |
強度インデックス (0–255) ごとのパルス幅 (256 要素) |
SetPulseWidthTable::default_table() は arcsin 形状のデフォルトテーブルを返す.
これは出力音圧が強度に対して (理論的に) 線形になるようなテーブルである.
Example
Section titled “Example”use autd3_rs::commands::SetPulseWidthTable;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 table = SetPulseWidthTable::default_table();
let mut builder = client.datagram_builder();builder.push(SetPulseWidthTable { table: &table });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 SetPulseWidthTablefrom 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())
table = SetPulseWidthTable.default_table()
builder = client.datagram_builder() builder.push(SetPulseWidthTable(table=table)) 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 table = SetPulseWidthTable.DefaultTable();
var builder = client.DatagramBuilder();builder.Push(new SetPulseWidthTable(table));var frames = builder.Build();foreach (var frame in frames){ await client.SendCheckedAsync(frame);}
await client.CloseAsync();