Segment/FiniteLoop
Segment
Modulation
, Gain
, FociSTM
, GainSTM
のデータ領域にはそれぞれ, Segment
が2つ用意されている.
特に指定しない限りは, Segment::S0
が使用される.
データを書き込むSegment
を変更する場合は, WithSegment
を送信する.
use autd3::prelude::*;
fn main() {
let _ =
WithSegment {
inner: Static::default(),
segment: Segment::S1,
transition_mode: transition_mode::Immediate,
};
}
#include<autd3.hpp>
int main() {
using namespace autd3;
WithSegment(Static{}, Segment::S1, transition_mode::Immediate());
return 0; }
using AUTD3Sharp;
using AUTD3Sharp.TransitionMode;
using AUTD3Sharp.Modulation;
new WithSegment(
inner: new Static(),
segment: Segment.S1,
transitionMode: new Immediate()
);
from pyautd3 import Segment, Static, transition_mode, WithSegment
WithSegment(
inner=Static(),
segment=Segment.S1,
transition_mode=transition_mode.Immediate(),
)
transition_mode
には, Segment
の切り替え条件を指定する.
-
遷移先セグメントが無限ループ時にのみ使用可能
Immediate
: 直ちに切り替えるExt
: 直ちに切り替え, 拡張モードにする (各Segment
のデータを出力後, 自動でSegment
を切り替えるモード)
-
遷移先セグメントが有限ループ時にのみ使用可能
SyncIdx
: 遷移先のSegment
のデータインデックスがになったときに切り替えるSysTime(DcSysTime)
: 指定した時刻になったときに切り替えるGPIO(GPIOIn)
: 指定したGPIOピンに信号が入力されたときに切り替える
NOTE:
Gain
はImmediate
のみサポートしている.
遷移先のループの挙動を指定する場合は,
FiniteLoop
を参照されたい.
データの書き込みのみを行い, Segment
を切り替えたくない場合はtransition_mode
にLater
を指定する.
Segmentの切り替え
Segment
を切り替えたいだけの場合は, SwapSegment
を送信する.
use autd3::prelude::*;
fn main() {
SwapSegmentModulation(Segment::S1, transition_mode::Immediate);
}
#include<autd3.hpp>
#include<autd3/link/nop.hpp>
int main() {
using namespace autd3;
SwapSegmentModulation(Segment::S1, transition_mode::Immediate());
return 0; }
using AUTD3Sharp;
using AUTD3Sharp.TransitionMode;
new SwapSegmentModulation(Segment.S1, new Immediate());
from pyautd3 import Segment, SwapSegmentModulation, transition_mode
SwapSegmentModulation(Segment.S1, transition_mode.Immediate())
FiniteLoop
Modulation
とFociSTM
, GainSTM
はWithFiniteLoop
を送信することでループの挙動を制御できる.
ループ挙動の指定は, セグメントを切り替えたときにのみ有効であることに注意.
use std::num::NonZeroU16;
use autd3::prelude::*;
fn main() {
let _ =
WithFiniteLoop {
inner: Static::default(),
loop_count: NonZeroU16::new(1).unwrap(),
segment: Segment::S1,
transition_mode: transition_mode::SyncIdx,
};
}
#include<autd3.hpp>
int main() {
using namespace autd3;
WithFiniteLoop(Static{}, 1, Segment::S1, transition_mode::SyncIdx());
return 0; }
using AUTD3Sharp;
using AUTD3Sharp.TransitionMode;
using AUTD3Sharp.Modulation;
new WithFiniteLoop(
inner: new Static(),
loopCount: 1,
segment: Segment.S1,
transitionMode: new SyncIdx()
);
from pyautd3 import Segment, Static, transition_mode, WithFiniteLoop
WithFiniteLoop(
inner=Static(),
loop_count=1,
segment=Segment.S1,
transition_mode=transition_mode.SyncIdx(),
)