From 6d3d0fee0fc36e41a363acee4a4074f09c54508f Mon Sep 17 00:00:00 2001 From: Jared Burce Date: Tue, 13 Oct 2020 11:44:02 -0700 Subject: [PATCH] Register button presses --- Cargo.toml | 1 + src/main.rs | 25 ++++++++++++++++++++++++- 2 files changed, 25 insertions(+), 1 deletion(-) diff --git a/Cargo.toml b/Cargo.toml index a329479..238410d 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -7,3 +7,4 @@ edition = "2018" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [dependencies] +rppal = "0.11.3" diff --git a/src/main.rs b/src/main.rs index e7a11a9..3c1ef60 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,3 +1,26 @@ +use std::thread::sleep; +use std::time::Duration; + +use rppal::gpio::{Gpio, Trigger}; + +const BUTTON_PIN: u8 = 26; + fn main() { - println!("Hello, world!"); + let gpio = Gpio::new().expect("gpio init"); + let mut pin = gpio.get(BUTTON_PIN).expect("pin init").into_input_pulldown(); + + pin.set_interrupt(Trigger::RisingEdge).expect("set interrupt"); + + let mut count = 0; + loop { + match pin.poll_interrupt(true, Some(Duration::from_secs(5))) { + Ok(Some(_)) => { + count += 1; + println!("pushed: {}", count); + sleep(Duration::from_millis(25)); + }, + Ok(None) => println!("time"), + err => { err.expect("poll"); } + } + } }