diff --git a/README.md b/README.md new file mode 100644 index 0000000..4fc890b --- /dev/null +++ b/README.md @@ -0,0 +1,22 @@ +# Slideshow + +This project is a relatively simple slideshow running on the Adafruit Feather +328P (an ATmega328p-microcontroller) using a simple button and a 240x240 LCD +display with the ST7789-driver over +[SPI](https://en.wikipedia.org/wiki/Serial_Peripheral_Interface). + +This project is written on Rust and uses a very minimal amount of libraries with +the most significant being [`atmega-hal`](https://github.com/Rahix/avr-hal), a +hardware abstraction layer for ATmega-microcontrollers. Images are stored in the +[program memory](https://en.wikipedia.org/wiki/Flash_memory) of the device and +manually read using the `lpm`-instruction using inline-assembly because Rust +itself does not produce this instruction in any scenario. The images are stored +in the [QOI-specification](https://qoiformat.org/qoi-specification.pdf) to save +space, and they are decoded on-the-fly when rendering the images. Communication +between the display and the microprocessor is done manually using a [minimal +SPI-utility](https://rahix.github.io/avr-hal/atmega_hal/spi/type.Spi.html) +within the `atmega-hal` crate. + +## Demonstration + +![demonstration](./demonstration.mp4) \ No newline at end of file diff --git a/demonstration.mp4 b/demonstration.mp4 new file mode 100644 index 0000000..4311c5d Binary files /dev/null and b/demonstration.mp4 differ