11-24-2021, 08:43 PM
Hello,
For the Rust developer, I show the gpio led blinking program code for RockPro64.
You can use GPIO pin number or BCM number.
In project
cargo build --release
sudo target/release/gpio
LED connected Pin 16 blinks.
cargo.toml
------------------------------------
[dependencies]
sysfs_gpio = "0.6"
------------------------------------
main.rs
-----------------------------------------------------------------------------------
use sysfs_gpio::{Direction, Pin};
use std::thread:leep;
use std::time:uration;
// Define GPIO arrays
static BOARD_TO_ROCK: &'static [u8] = &[0, 0, 0, 52, 0, 53, 0, 152, 148, 0, 147, 54, 120, 50, 0, 33, 36, 0, 149, 40, 0, 39, 153, 41, 42, 0, 45, 43, 44, 155, 0, 156, 124, 125, 0, 122, 126, 121, 123, 0, 127];
static ROCK_VALID_CHANNELS: &'static [u8] = &[52, 53, 152, 54, 50, 33, 40, 39, 41, 43, 155, 156, 125, 122, 121, 148, 147, 120, 36, 149, 153, 42, 45, 44, 124, 126, 123, 127];
static BCM_TO_ROCK: &'static [u8] = &[43, 44, 52, 53, 152, 155, 156, 45, 42, 39, 40, 41, 124, 125, 148, 147, 124, 54, 120, 122, 123, 127, 33, 36, 149, 153, 121, 50];
fn main() {
let my_pin_num = 16;//gpio number: 36
let my_led = Pin::new(BOARD_TO_ROCK[my_pin_num].into()); // Pin 16 GPIO1_A4 gpio number 36 depends on chip, etc.
//let my_bcm_num = 23;//gpio number: 36
//let my_led = Pin::new(BCM_TO_ROCK[my_bcm_num].into()); // Pin 16 GPIO1_A4 gpio number 36 depends on chip, etc.
my_led.with_exported(|| {
my_led.set_direction(Direction::Out).unwrap();
loop {
my_led.set_value(0).unwrap();
sleep(Duration::from_millis(100));
my_led.set_value(1).unwrap();
sleep(Duration::from_millis(100));
println!("Blinking GPIO1_A4(36) Pin 16");
}
}).unwrap();
}
-------------------------------------------------------------------------------------------------
For the Rust developer, I show the gpio led blinking program code for RockPro64.
You can use GPIO pin number or BCM number.
In project
cargo build --release
sudo target/release/gpio
LED connected Pin 16 blinks.
cargo.toml
------------------------------------
[dependencies]
sysfs_gpio = "0.6"
------------------------------------
main.rs
-----------------------------------------------------------------------------------
use sysfs_gpio::{Direction, Pin};
use std::thread:leep;
use std::time:uration;
// Define GPIO arrays
static BOARD_TO_ROCK: &'static [u8] = &[0, 0, 0, 52, 0, 53, 0, 152, 148, 0, 147, 54, 120, 50, 0, 33, 36, 0, 149, 40, 0, 39, 153, 41, 42, 0, 45, 43, 44, 155, 0, 156, 124, 125, 0, 122, 126, 121, 123, 0, 127];
static ROCK_VALID_CHANNELS: &'static [u8] = &[52, 53, 152, 54, 50, 33, 40, 39, 41, 43, 155, 156, 125, 122, 121, 148, 147, 120, 36, 149, 153, 42, 45, 44, 124, 126, 123, 127];
static BCM_TO_ROCK: &'static [u8] = &[43, 44, 52, 53, 152, 155, 156, 45, 42, 39, 40, 41, 124, 125, 148, 147, 124, 54, 120, 122, 123, 127, 33, 36, 149, 153, 121, 50];
fn main() {
let my_pin_num = 16;//gpio number: 36
let my_led = Pin::new(BOARD_TO_ROCK[my_pin_num].into()); // Pin 16 GPIO1_A4 gpio number 36 depends on chip, etc.
//let my_bcm_num = 23;//gpio number: 36
//let my_led = Pin::new(BCM_TO_ROCK[my_bcm_num].into()); // Pin 16 GPIO1_A4 gpio number 36 depends on chip, etc.
my_led.with_exported(|| {
my_led.set_direction(Direction::Out).unwrap();
loop {
my_led.set_value(0).unwrap();
sleep(Duration::from_millis(100));
my_led.set_value(1).unwrap();
sleep(Duration::from_millis(100));
println!("Blinking GPIO1_A4(36) Pin 16");
}
}).unwrap();
}
-------------------------------------------------------------------------------------------------