button/
button.rs

1extern crate firmata;
2
3use firmata::*;
4use std::thread;
5
6fn main() {
7    let mut b = firmata::Board::new("/dev/ttyACM0");
8
9    println!("firmware version {}", b.firmware_version);
10    println!("firmware name {}", b.firmware_name);
11    println!("protocol version {}", b.protocol_version);
12
13    let led = 13;
14    let button = 2;
15
16    b.set_pin_mode(led, firmata::OUTPUT);
17    b.set_pin_mode(button, firmata::INPUT);
18
19    b.report_digital(button, 1);
20
21    loop {
22        b.decode();
23        if b.pins[button as usize].value == 0 {
24            println!("off");
25            b.digital_write(led, 0);
26        } else {
27            println!("on");
28            b.digital_write(led, 1);
29        }
30
31        thread::sleep_ms(100);
32    }
33}