infrared_sensor/
infrared-sensor.rs

1extern crate ev3dev_lang_rust;
2
3use ev3dev_lang_rust::sensors::{BeaconSeeker, InfraredSensor, RemoteControl};
4use ev3dev_lang_rust::Ev3Result;
5
6fn main() -> Ev3Result<()> {
7    let sensor = InfraredSensor::find()?;
8
9    remote(sensor)?;
10    // seeker(sensor)?;
11
12    Ok(())
13}
14
15#[allow(dead_code)]
16fn remote(sensor: InfraredSensor) -> Ev3Result<()> {
17    let remote = RemoteControl::new(sensor, 1)?;
18
19    loop {
20        remote.process()?;
21        println!(
22            "Button: {:?},{:?},{:?},{:?},{:?}",
23            remote.is_red_up(),
24            remote.is_red_down(),
25            remote.is_beacon(),
26            remote.is_blue_down(),
27            remote.is_blue_up(),
28        );
29
30        std::thread::sleep(std::time::Duration::from_secs(1));
31    }
32}
33
34#[allow(dead_code)]
35fn seeker(sensor: InfraredSensor) -> Ev3Result<()> {
36    let seeker = BeaconSeeker::new(sensor, 1)?;
37
38    loop {
39        println!("Button: {:?}", seeker.get_heading_and_distance());
40
41        std::thread::sleep(std::time::Duration::from_secs(1));
42    }
43}