Struct Device

Source
pub struct Device {
    pub display: Display,
    pub joystick: Joystick,
    pub button_controller: ButtonController,
}
Expand description

§Device

the Device struct offers an organized way to access various componenets on the Waveshare OLED Display Hat. It has three fields, display, joystick and button_controller

  • The display field is an instance of the Display struct that let’s you initialze and control the display
  • The joystick is an instance of the Joystick struct that let’s you initalize and read input from the joystick on the device.
  • The button_controller field is an instance of the ButtonController Struct that let’s you initalize and read input from the three buttons on the device

§Usage

use ws_oled_driver::Device;
let mut device = Device::new()?.initialize_components()?;

Fields§

§display: Display§joystick: Joystick§button_controller: ButtonController

Implementations§

Source§

impl Device

Source

pub fn new() -> Result<Self>

Creates a new Device. It returns Result<Device, anyhow::Error>.

Examples found in repository?
examples/display_fill.rs (line 6)
5fn main() -> Result<()> {
6    let mut device = Device::new()?;
7    device.initialize_components()?;
8    
9    gfx::fill(&mut device.display, 0xFF);
10    device.display.render()?;
11
12    Ok(())
13}
More examples
Hide additional examples
examples/display_line.rs (line 6)
5fn main() -> Result<()> {
6    let mut device = Device::new()?;
7    device.initialize_components()?;
8    
9    gfx::draw_line(&mut device.display, (0, 0), (127, 63));
10    device.display.render()?;
11
12    Ok(())
13}
examples/button_control.rs (line 6)
5fn main() -> Result<()> {
6  let mut device = Device::new()?;
7  device.initialize_components()?;
8
9  loop {
10    if let Some(button_state) = device.button_controller.read() {
11      match button_state {
12        State::Key1 => println!("Key1 pressed"),
13        State::Key2 => println!("Key2 pressed"),
14        State::Key3 => println!("Key3 pressed"),
15      }
16    }
17    else {
18      println!("Nothing Pressed!")
19    }
20  }
21}
examples/joystick_control.rs (line 6)
5fn main() -> Result<()> {
6    let mut device = Device::new()?;
7    device.initialize_components()?;
8
9    loop {
10        if let Some(joystick_state) = device.joystick.read() {
11            match joystick_state {
12                joystick::State::Up => {
13                    println!("You Pressed Up");
14                }
15                joystick::State::Down => {
16                    println!("You Pressed Down");
17                }
18                joystick::State::Left => {
19                    println!("You Pressed Left");
20                }
21                joystick::State::Right => {
22                    println!("You Pressed Right");
23                }
24                joystick::State::Click => {
25                    println!("You Clicked!");
26                }
27            }
28        }
29    }
30}
Source

pub fn initialize_components(&mut self) -> Result<()>

Intializes components - display, joystick & buttons.

Examples found in repository?
examples/display_fill.rs (line 7)
5fn main() -> Result<()> {
6    let mut device = Device::new()?;
7    device.initialize_components()?;
8    
9    gfx::fill(&mut device.display, 0xFF);
10    device.display.render()?;
11
12    Ok(())
13}
More examples
Hide additional examples
examples/display_line.rs (line 7)
5fn main() -> Result<()> {
6    let mut device = Device::new()?;
7    device.initialize_components()?;
8    
9    gfx::draw_line(&mut device.display, (0, 0), (127, 63));
10    device.display.render()?;
11
12    Ok(())
13}
examples/button_control.rs (line 7)
5fn main() -> Result<()> {
6  let mut device = Device::new()?;
7  device.initialize_components()?;
8
9  loop {
10    if let Some(button_state) = device.button_controller.read() {
11      match button_state {
12        State::Key1 => println!("Key1 pressed"),
13        State::Key2 => println!("Key2 pressed"),
14        State::Key3 => println!("Key3 pressed"),
15      }
16    }
17    else {
18      println!("Nothing Pressed!")
19    }
20  }
21}
examples/joystick_control.rs (line 7)
5fn main() -> Result<()> {
6    let mut device = Device::new()?;
7    device.initialize_components()?;
8
9    loop {
10        if let Some(joystick_state) = device.joystick.read() {
11            match joystick_state {
12                joystick::State::Up => {
13                    println!("You Pressed Up");
14                }
15                joystick::State::Down => {
16                    println!("You Pressed Down");
17                }
18                joystick::State::Left => {
19                    println!("You Pressed Left");
20                }
21                joystick::State::Right => {
22                    println!("You Pressed Right");
23                }
24                joystick::State::Click => {
25                    println!("You Clicked!");
26                }
27            }
28        }
29    }
30}

Auto Trait Implementations§

§

impl Freeze for Device

§

impl !RefUnwindSafe for Device

§

impl Send for Device

§

impl !Sync for Device

§

impl Unpin for Device

§

impl !UnwindSafe for Device

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.