コンテンツにスキップ
これは開発版のドキュメントである. 内容は次のリリースまでに変更される可能性がある. 最新のリリース版は 0.14.x を参照.

SetPulseWidthTable

SetPulseWidthTable は, 強度 (0–255) から PWM のパルス幅への変換テーブルを設定するコマンド.

SetPulseWidthTable { table };
フィールド 型 説明
table [PulseWidth; PWE_TABLE_SIZE] 強度インデックス (0–255) ごとのパルス幅 (256 要素)

PulseWidth は PulseWidth::new(u16) (1 周期 512 刻みのパルス幅) か PulseWidth::from_duty(f32) (デューティ比) で作る.

デフォルトのコマンドは arcsin 形状のテーブルを設定する. これは出力音圧が強度に対して (理論的に) 線形になるようなテーブルであり, デバイスが起動時に持つテーブルと同じである.

SetPulseWidthTable::default();

empty_table は全要素が 0 のテーブルを返す.

let table = SetPulseWidthTable::empty_table();
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?;