Crate sevseg_3642bs
source ·Expand description
Driver crate for the 3642BS 4 digit 7 segment display
How to use
Create a new display object by calling .new()
and passing
the GPIO pins the display is connected to. It is necessary for your HAL to use embedded_hal::digital::v2::OutputPin
let mut display = SevenSeg::new(
pins.gpio16.into_push_pull_output(), // Segment A
pins.gpio17.into_push_pull_output(), // Segment B
pins.gpio18.into_push_pull_output(), // Segment C
pins.gpio19.into_push_pull_output(), // Segment D
pins.gpio20.into_push_pull_output(), // Segment E
pins.gpio21.into_push_pull_output(), // Segment F
pins.gpio22.into_push_pull_output(), // Segment G
pins.gpio26.into_push_pull_output(), // Dots segment
pins.gpio15.into_push_pull_output(), // Digit 0 common anode
pins.gpio14.into_push_pull_output(), // Digit 1 common anode
pins.gpio13.into_push_pull_output(), // Digit 2 common anode
pins.gpio12.into_push_pull_output(), // Digit 3 common anode
delay // Your HAL's delay object
);
Once the display has been defined, the other methods can be called, for example:
display.clear().unwrap();
display.number(1234).unwrap();
display.hex(0xAB12).unwrap();
.number()
, .hex()
and .time()
Will return a DisplayErr
result
which can be matched:
if let Err(err) = display.time(13, 37) {
match err {
DisplayErr::PinFail => info!("Failed to write to a pin!");
DisplayErr::OutOfRange => info!("One of the numbers is too large!")
}
}
You can make your own custom charcaters by specifying which segments should turn on on a bitwise or operation:
let letter_c = SEG_A | SEG_F | SEG_E | SEG_D;
let letter_o = SEG_G | SEG_C | SEG_D | SEG_E;
let letter_l = SEG_F | SEG_E | SEG_D;
(The segment names are indicated on the datasheet)
.custom()
takes an array with 4 values, each corresponding to one digit. The
following example demonstrates how to write CooL
to the display:
let text_cool = [letter_c, letter_o, letter_o, letter_l];
display.custom(text_cool).unwrap();
Structs
- To use the display you’ll need to pass the microcontroller’s pins and the delay object in your HAL.
Enums
Constants
- Will turn on the segment A when used in
.custom()
. Can be used in combination with other segment constants combining them with the or (|
) operator - Will turn on the segment B when used in
.custom()
. Can be used in combination with other segment constants combining them with the or (|
) operator - Will turn on the segment C when used in
.custom()
. Can be used in combination with other segment constants combining them with the or (|
) operator - Will turn on the segment D when used in
.custom()
. Can be used in combination with other segment constants combining them with the or (|
) operator - Will turn on the segment E when used in
.custom()
. Can be used in combination with other segment constants combining them with the or (|
) operator - Will turn on the segment F when used in
.custom()
. Can be used in combination with other segment constants combining them with the or (|
) operator - Will turn on the segment G when used in
.custom()
. Can be used in combination with other segment constants combining them with the or (|
) operator - Will turn on the two dots when used in
.custom()
. Can be used in combination with other segment constants combining them with the or (|
) operator. Note that only one of the common anodes connects to the two dots.