Current section
Files
Jump to
Current section
Files
src/eensy@ssd1306.erl
-module(eensy@ssd1306).
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch]).
-export([transmit_bytes/3, init_display/2, start/3, reset_position/3, close/1]).
-file("src/eensy/ssd1306.gleam", 14).
-spec transmit_bytes(bitstring(), integer(), integer()) -> nil.
transmit_bytes(Bytes, I2c, Address) ->
case eensy_ffi:i2c_begin_transmission_with_result(I2c, Address) of
{ok, _} ->
case eensy_ffi:i2c_write_bytes_with_result(I2c, Bytes) of
{ok, _} ->
nil;
{error, Reason} ->
erlang:display(Reason)
end,
gleam_erlang_ffi:sleep(100),
case eensy_ffi:i2c_end_transmission_with_result(I2c) of
{ok, _} ->
nil;
{error, Reason@1} ->
erlang:display(Reason@1)
end,
nil;
{error, _} ->
nil
end.
-file("src/eensy/ssd1306.gleam", 33).
-spec init_display(integer(), integer()) -> nil.
init_display(I2c, Address) ->
_pipe = <<16#00,
16#AE,
16#20,
16#20,
16#00,
16#B0,
16#C8,
16#00,
16#10,
16#40,
16#81,
16#7F,
16#A1,
16#A6,
16#A8,
63,
16#D3,
16#00,
16#D5,
16#F0,
16#D9,
16#22,
16#DA,
16#12,
16#DB,
16#20,
16#8D,
16#14,
16#A4,
16#21,
0,
127,
16#22,
0,
7,
16#AF>>,
transmit_bytes(_pipe, I2c, Address).
-file("src/eensy/ssd1306.gleam", 5).
-spec start(integer(), integer(), integer()) -> integer().
start(Address, Sda, Scl) ->
I2c_bus = i2c:open([{sda, Sda}, {scl, Scl}, {clock_speed_hz, 1000000}]),
_ = init_display(I2c_bus, Address),
I2c_bus.
-file("src/eensy/ssd1306.gleam", 88).
-spec reset_position(
integer(),
integer(),
{integer(), integer(), integer(), integer()}
) -> nil.
reset_position(I2c, Address, Matrix) ->
_pipe = <<16#00,
16#21,
(erlang:element(1, Matrix)),
(erlang:element(2, Matrix)),
16#22,
(erlang:element(3, Matrix)),
(erlang:element(4, Matrix)),
16#AF>>,
transmit_bytes(_pipe, I2c, Address).
-file("src/eensy/ssd1306.gleam", 109).
-spec close(integer()) -> {ok, nil} | {error, gleam@dynamic:dynamic_()}.
close(I2c) ->
eensy_ffi:i2c_close_with_result(I2c).