README.md

# ExLCD

[![Hex.pm](https://img.shields.io/hexpm/v/ex_lcd.svg)](https://hex.pm/packages/ex_lcd)
[![Hex.pm](https://img.shields.io/hexpm/dt/ex_lcd.svg)](https://hex.pm/packages/ex_lcd)
[![Hex.pm](https://img.shields.io/hexpm/l/ex_lcd.svg)](https://hex.pm/packages/ex_lcd)

**ExLCD** is a Hex package providing an API and support for character matrix LCD displays in your Elixir and nerves projects. It uses [elixir_ale](https://github.com/fhunleth/elixir_ale) for hardware IO.

The hardware interface and the user API are separate modules providing relative hardware independence. This provides you with the ability to change displays without significant changes your application code.

**Disclaimer:** This is still under heavy development and probably isn't suited for production use. Please consider testing and contributing to improving the project.

## Documentation

Project and API documentation is available online at [hexdocs.pm](https://hexdocs.pm/ex_lcd/)

## Examples

Example applications using ExLCD are available in the [cthree/ex_lcd_examples](https://github.com/cthree/ex_lcd_examples) Github repository.

## Contributing

If you wish to support a new type of display module, fix or report a bug, add a feature or otherwise contribute to the project please [open an issue](https://github.com/cthree/ex_lcd/issues) to discuss your issue or idea. I'm happy to accept suggestions, bug reports, pull requests and other help. Driver modules for unsupported displays is especially appreciated.

## Acknowledgements

Many thanks to [@tmecklem](https://github.com/tmecklem) for inspiration and encouragement. ExLCD started as his **elixir_lcd** package.

## License

Licensed under the [Apache-2.0](https://choosealicense.com/licenses/apache-2.0/) license. Please see the [LICENSE file](https://github.com/cthree/ex_lcd/blob/master/LICENSE.txt) included in the repository if you are unfamiliar with the terms and conditions.

## Installation

**ExLCD** [is available in Hex](https://hex.pm/docs/publish), the package can be installed as a dependency of your project:

  1. Add **ex_lcd** to your list of dependencies in `mix.exs`:
  ```elixir
      def deps do
        [{:ex_lcd, "~> 0.4.0"}]
      end
  ```

  2. Ensure **ex_lcd** is started before your application:
  ```elixir
      def application(_target) do
        [mod: {MyApplication.Application, []},
         extra_applications: [:ex_lcd]]
      end
  ```