これは開発版のドキュメントである. 内容は次のリリースまでに変更される可能性がある. 最新のリリース版は 0.14.x を参照.
SetPulseWidthTable
SetPulseWidthTable は, 強度 (0–255) から PWM のパルス幅への変換テーブルを設定するコマンド.
SetPulseWidthTable { table };SetPulseWidthTable(table)new SetPulseWidthTable(table);| フィールド | 型 | 説明 |
|---|---|---|
table |
[PulseWidth; PWE_TABLE_SIZE] |
強度インデックス (0–255) ごとのパルス幅 (256 要素) |
PulseWidth は PulseWidth::new(u16) (1 周期 512 刻みのパルス幅) か PulseWidth::from_duty(f32) (デューティ比) で作る.
デフォルトのコマンドは arcsin 形状のテーブルを設定する. これは出力音圧が強度に対して (理論的に) 線形になるようなテーブルであり, デバイスが起動時に持つテーブルと同じである.
SetPulseWidthTable::default();SetPulseWidthTable()new SetPulseWidthTable();empty_table は全要素が 0 のテーブルを返す.
let table = SetPulseWidthTable::empty_table();table = SetPulseWidthTable.empty_table()var table = SetPulseWidthTable.EmptyTable();Example
Section titled “Example”use autd3_rs::commands::{Clear, SetPulseWidthTable, Synchronize};use autd3_rs::geometry::{Autd3, Geometry};use autd3_rs::Client;use autd3_rs::udp::TransportOption;use autd3_rs::value::PulseWidth;
let geometry = Geometry::new(vec![Autd3::default()]);let option = TransportOption::default();let mut client = Client::open(&geometry, &option).await?;client.send(Clear).await?;client.send(Synchronize).await?;
let mut table = SetPulseWidthTable::empty_table();for (width, i) in table.iter_mut().zip(0..) { *width = PulseWidth::new(i)?;}
client.send(SetPulseWidthTable { table }).await?;import asyncio
from autd3 import Client, TransportOptionfrom autd3.commands import Clear, SetPulseWidthTable, Synchronizefrom autd3.geometry import Autd3, Geometryfrom autd3.value import PulseWidth
async def main() -> None: geometry = Geometry([Autd3()]) with await Client.open(geometry, TransportOption()) as client: await client.send(Clear()) await client.send(Synchronize())
table = SetPulseWidthTable.empty_table() for i in range(len(table)): table[i] = PulseWidth(i)
await client.send(SetPulseWidthTable(table=table))
asyncio.run(main())using System.Threading.Tasks;using AUTD3;
var geometry = new Geometry(new[] { new Autd3() });using var client = await Client.OpenAsync(geometry, new TransportOption());await client.SendAsync(new Clear());await client.SendAsync(new Synchronize());
var table = SetPulseWidthTable.EmptyTable();for (var i = 0; i < table.Length; i++){ table[i] = new PulseWidth((ushort)i);}
await client.SendAsync(new SetPulseWidthTable(table));