Code Monkey home page Code Monkey logo

ht16k33's People

Contributors

ethankhall avatar gferon avatar jasonpeacock avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

ht16k33's Issues

add local persistence (temp file/toml) for `i2c_mock`

The i2c_mock implementation supports local development and simulates a basic HT16K33 device, but it does not persist values across invocations.

Add some sort of persistence - local /tmp files? TOML format?

Exit criteria: Values written to HT16K33 are able to be read back on later invocations when using the i2c_mock implementation.

support different SOP package types

The HT16K33 is available in different size SOP package types, each has a different number of pins available for ROW, COMMON, etc.

Currently, the library only supports the largest, the 28-pin SOP package.

Exit Criteria: Support all HT16K33 SOP package types.

Reinmplement DisplayDataAddress as a c-like enum

Currently the DisplayDataAddress is implemented as a bitflags struct when it does not need to. It does not need to implement bitwise operations.

It would make more sense as to implement it as an c-like enum. If implemented with num_enum traits we would also gain the ability to convert from primitive numbers back and fourth to DisplayDataAddress with methods ::TryFrom(..) and syntax as row as u8.

Expose ability to write to single address.

I have (re)discovered that you can write to a single address on the ht16k33 chip, but thought nothing of it until now. It would clearly be useful to have this feature, but I think that there is more to this. I have not checked if you can continue to write more than one buffer but I suspect its true. This technique is clearly used in the set_led method. The method signature would be some kind of range of buffer addresses and a return type of Result<(), E>. An example pub fn write_address(&mut self, address: Range) -> Result<(), E>

    pub fn set_led(&mut self, location: LedLocation, enabled: bool) -> Result<(), E> {
        // TODO Validate `address` parameter.
        self.update_display_buffer(location, enabled);

        self.i2c.write(
            self.address,
            &[
                location.row.bits(),
                self.buffer[location.row_as_index()].bits(),
            ],
        )?;

        Ok(())
    }

way of writing something to display

I can't find the way of printing letters and numbers to the display. Are those methods not present at all? Or are they low level functions? I can't find any examples in the documentation.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.