1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
use crate::cli;
pub use cli::Error;
pub use crate::pin;
pub use crate::pin::Pin;
pub struct Arduino {
board: firmata::Board
}
impl Arduino {
pub fn new() -> Result<Arduino, Error> {
let port = cli::query(cli::Query::Port)?;
let arduino = Arduino { board: firmata::Board::new(&port[..]) };
Ok(arduino)
}
pub fn digital_write(&mut self, pin: &Pin, state: &pin::State) {
self.board.digital_write(pin.value(), state.value());
}
pub fn analog_write(&mut self, pin: &Pin, level: pin::Level) {
self.board.analog_write(pin.value(), level as i32);
}
pub fn set_pin_mode(&mut self, pin: &Pin, mode: &pin::Mode) {
self.board.set_pin_mode(pin.value(), mode.value());
}
}