feat(blink): 闪..闪..发..亮。
This commit is contained in:
parent
eb8d30afa1
commit
64f88adf4b
@ -17,6 +17,8 @@ pio = ["esp-idf-sys/pio"]
|
||||
|
||||
[dependencies]
|
||||
esp-idf-sys = { version = "0.31", features = ["binstart"] }
|
||||
esp-idf-hal = "0.36.0"
|
||||
embedded-hal = "1.0.0-alpha.8"
|
||||
|
||||
|
||||
[build-dependencies]
|
||||
|
47
src/blink.rs
Normal file
47
src/blink.rs
Normal file
@ -0,0 +1,47 @@
|
||||
use embedded_hal::digital::blocking::OutputPin;
|
||||
use std::thread;
|
||||
use std::time::Duration;
|
||||
|
||||
pub struct Blink<T>
|
||||
where
|
||||
T: OutputPin,
|
||||
{
|
||||
state: bool,
|
||||
pin: T,
|
||||
stopped: bool,
|
||||
}
|
||||
|
||||
impl<T> Blink<T>
|
||||
where
|
||||
T: OutputPin,
|
||||
{
|
||||
pub fn new(pin: T) -> Blink<T> {
|
||||
return Blink {
|
||||
state: false,
|
||||
pin,
|
||||
stopped: false,
|
||||
};
|
||||
}
|
||||
|
||||
pub fn toggle(&mut self) -> Result<(), T::Error> {
|
||||
self.state = !self.state;
|
||||
if self.state {
|
||||
self.pin.set_high()
|
||||
} else {
|
||||
self.pin.set_low()
|
||||
}
|
||||
}
|
||||
|
||||
pub fn play(&mut self) {
|
||||
loop {
|
||||
if self.stopped {
|
||||
break;
|
||||
}
|
||||
self.toggle().unwrap();
|
||||
thread::sleep(Duration::from_millis(50));
|
||||
|
||||
self.toggle().unwrap();
|
||||
thread::sleep(Duration::from_millis(950));
|
||||
}
|
||||
}
|
||||
}
|
1
src/lib.rs
Normal file
1
src/lib.rs
Normal file
@ -0,0 +1 @@
|
||||
pub mod blink;
|
24
src/main.rs
24
src/main.rs
@ -1,9 +1,31 @@
|
||||
use esp_idf_sys as _; // If using the `binstart` feature of `esp-idf-sys`, always keep this module imported
|
||||
use esp_idf_sys as _;
|
||||
use std::thread;
|
||||
use ups_esp32c3_rust::beep;
|
||||
use ups_esp32c3_rust::blink;
|
||||
|
||||
fn main() {
|
||||
// Temporary. Will disappear once ESP-IDF 4.4 is released, but for now it is necessary to call this function once,
|
||||
// or else some patches to the runtime implemented by esp-idf-sys might not link properly.
|
||||
esp_idf_sys::link_patches();
|
||||
|
||||
let peripherals = esp_idf_hal::peripherals::Peripherals::take().unwrap();
|
||||
|
||||
thread::spawn(move || {
|
||||
let mut blink = blink::Blink::new(
|
||||
peripherals
|
||||
.pins
|
||||
.gpio5
|
||||
.into_output()
|
||||
.expect("Failed to set GPIO5 as output"),
|
||||
);
|
||||
blink.play();
|
||||
});
|
||||
|
||||
beep::Beep::new(peripherals
|
||||
.pins
|
||||
.gpio5
|
||||
.into_output()
|
||||
.expect("Failed to set GPIO6 as output"),);
|
||||
|
||||
println!("Hello, world!");
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user