Skip to content

alexiob/scenic_driver_waveshare

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Scenic render and input driver for Waveshare display HAT for Raspberry PI

A library to provide a Scenic framework driver implementation for the display HAT for Raspberry PI from Waveshare. Inspired by Inky driver and Bonnet driver.

Currently supports:

This driver only runs on RPi devices as far as we know as it is based on the scenic rpi driver generating a frame buffer we can use.

Installation

The package can be installed by adding scenic_driver_waveshare to your list of dependencies in mix.exs:

def deps do [ {:scenic_driver_waveshare, "~> 0.8.2"} ] end

Run mix deps.get to get the new dependency.

Usage

This library provides the Scenic.Driver.Nerves.Waveshare driver module.

An usage example is provided in alexiob/sample_scenic_driver_waveshare.

The driver configuration, to be placed in config/target.exs:

config :waveshare, :viewport, %{ name: :main_viewport, default_scene: {Waveshare.Scene.Main, nil}, # Match these to your display size: {128, 128}, opts: [scale: 1.0], drivers: [ %{ module: Scenic.Driver.Nerves.Waveshare, opts: [ # only :sku138191 at the moment device_sku: :sku138191, # :color18bit (default) | :color16bit | :color12bit color_depth: :color18bit, # :rgb | :bgr (default) color_order: :bgr, # :l2r_u2d | :l2r_d2u | :r2l_u2d | :r2l_d2u | :u2d_l2r | :u2d_r2l (default) | :d2u_l2r | :d2u_r2l scan_dir: :u2d_r2l, # :ppm | :rgb24 (default) | :rgb565 | :mono | :mono_column_scan capture_format: :rgb24, refresh_interval: 50, spi_speed_hz: 20_000_000, # remapping input keys input_mappings: %{ button_3: "button_3_text" } ], name: :waveshare } ] }

I strongly suggest to use the default values provided above.

For development on host, we recommend just using the glfw driver for Scenic.

The HAT inputs generate Scenic :key events:

def handle_input( {:key, {key, action, _something}} = event, _context, _state ) do Logger.debug( "handle_input: received event #{inspect(event)} state=#{inspect(state)}" ) case {key, action} do {:joystick_1_up, :press} -> ... {:joystick_1_down, :press} -> ... {:joystick_1_right, :press} -> ... {:joystick_1_left, :press} -> ... {:joystick_1_button, :press} -> ... {:button_1, :press} -> ... {:button_2, :press} -> ... {:button_3, :press} -> ... end end

About

Scenic render and input driver for Waveshare display HAT for Raspberry PI

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages