Compare commits

..

1 Commits

Author SHA1 Message Date
puffaboo d09bcb6f96 puffidle 2022-07-15 00:53:34 +01:00
65 changed files with 110 additions and 8 deletions

BIN
puff/puffidle-0.bmp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.6 KiB

BIN
puff/puffidle-1.bmp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.6 KiB

BIN
puff/puffidle-10.bmp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.6 KiB

BIN
puff/puffidle-11.bmp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.6 KiB

BIN
puff/puffidle-12.bmp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.6 KiB

BIN
puff/puffidle-13.bmp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.6 KiB

BIN
puff/puffidle-14.bmp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.6 KiB

BIN
puff/puffidle-15.bmp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.6 KiB

BIN
puff/puffidle-16.bmp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.6 KiB

BIN
puff/puffidle-17.bmp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.6 KiB

BIN
puff/puffidle-18.bmp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.6 KiB

BIN
puff/puffidle-19.bmp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.6 KiB

BIN
puff/puffidle-2.bmp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.6 KiB

BIN
puff/puffidle-20.bmp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.6 KiB

BIN
puff/puffidle-21.bmp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.6 KiB

BIN
puff/puffidle-22.bmp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.6 KiB

BIN
puff/puffidle-23.bmp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.6 KiB

BIN
puff/puffidle-24.bmp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.6 KiB

BIN
puff/puffidle-25.bmp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.6 KiB

BIN
puff/puffidle-26.bmp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.6 KiB

BIN
puff/puffidle-27.bmp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.6 KiB

BIN
puff/puffidle-28.bmp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.6 KiB

BIN
puff/puffidle-29.bmp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.6 KiB

BIN
puff/puffidle-3.bmp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.6 KiB

BIN
puff/puffidle-30.bmp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.6 KiB

BIN
puff/puffidle-31.bmp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.6 KiB

BIN
puff/puffidle-32.bmp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.6 KiB

BIN
puff/puffidle-33.bmp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.6 KiB

BIN
puff/puffidle-34.bmp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.6 KiB

BIN
puff/puffidle-35.bmp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.6 KiB

BIN
puff/puffidle-36.bmp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.6 KiB

BIN
puff/puffidle-37.bmp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.6 KiB

BIN
puff/puffidle-38.bmp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.6 KiB

BIN
puff/puffidle-39.bmp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.6 KiB

BIN
puff/puffidle-4.bmp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.6 KiB

BIN
puff/puffidle-40.bmp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.6 KiB

BIN
puff/puffidle-41.bmp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.6 KiB

BIN
puff/puffidle-42.bmp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.6 KiB

BIN
puff/puffidle-43.bmp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.6 KiB

BIN
puff/puffidle-44.bmp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.6 KiB

BIN
puff/puffidle-45.bmp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.6 KiB

BIN
puff/puffidle-46.bmp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.6 KiB

BIN
puff/puffidle-47.bmp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.6 KiB

BIN
puff/puffidle-48.bmp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.6 KiB

BIN
puff/puffidle-49.bmp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.6 KiB

BIN
puff/puffidle-5.bmp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.6 KiB

BIN
puff/puffidle-50.bmp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.6 KiB

BIN
puff/puffidle-51.bmp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.6 KiB

BIN
puff/puffidle-52.bmp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.6 KiB

BIN
puff/puffidle-53.bmp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.6 KiB

BIN
puff/puffidle-54.bmp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.6 KiB

BIN
puff/puffidle-55.bmp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.6 KiB

BIN
puff/puffidle-56.bmp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.6 KiB

BIN
puff/puffidle-57.bmp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.6 KiB

BIN
puff/puffidle-58.bmp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.6 KiB

BIN
puff/puffidle-59.bmp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.6 KiB

BIN
puff/puffidle-6.bmp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.6 KiB

BIN
puff/puffidle-7.bmp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.6 KiB

BIN
puff/puffidle-8.bmp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.6 KiB

BIN
puff/puffidle-9.bmp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.6 KiB

BIN
puff/puffidle.gif Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 221 KiB

6
puff/resize.sh Executable file
View File

@ -0,0 +1,6 @@
#!/bin/sh
for image in $(ls puffidle-*.bmp); do
# echo $image
convert $image -define bmp:subtype=RGB565 -alpha off -resize 64x64 $image
done

View File

@ -3,7 +3,7 @@ CONFIG_ESP_MAIN_TASK_STACK_SIZE=20000
# Use this to set FreeRTOS kernel tick frequency to 1000 Hz (100 Hz by default). # Use this to set FreeRTOS kernel tick frequency to 1000 Hz (100 Hz by default).
# This allows to use 1 ms granuality for thread sleeps (10 ms by default). # This allows to use 1 ms granuality for thread sleeps (10 ms by default).
#CONFIG_FREERTOS_HZ=1000 CONFIG_FREERTOS_HZ=1000
# Workaround for https://github.com/espressif/esp-idf/issues/7631 # Workaround for https://github.com/espressif/esp-idf/issues/7631
#CONFIG_MBEDTLS_CERTIFICATE_BUNDLE=n #CONFIG_MBEDTLS_CERTIFICATE_BUNDLE=n

BIN
src/emilis.bmp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

View File

@ -2,14 +2,14 @@ use std::{error::Error, thread::sleep, time::Duration};
use embedded_graphics::{image::Image, pixelcolor::Rgb565, prelude::*}; use embedded_graphics::{image::Image, pixelcolor::Rgb565, prelude::*};
use esp_idf_hal::{ use esp_idf_hal::{
gpio::{Gpio16, Gpio17, Gpio18, Gpio23, Gpio5, Output}, gpio::{Gpio12, Gpio14, Gpio16, Gpio17, Gpio18, Gpio23, Gpio5, Input, Output},
prelude::{Hertz, Peripherals}, prelude::{Hertz, Peripherals},
spi::{self, Master, Pins, SPI3}, spi::{self, Master, Pins, SPI3},
}; };
// If using the `binstart` feature of `esp-idf-sys`, always keep this module imported
use esp_idf_sys as _; use esp_idf_sys as _;
use rand::Rng; use rand::Rng;
// If using the `binstart` feature of `esp-idf-sys`, always keep this module imported use ssd1331::Ssd1331;
use ssd1331::{DisplayRotation::Rotate0, Ssd1331};
use tinybmp::Bmp; use tinybmp::Bmp;
fn secondary() -> Result<(), Box<dyn Error>> { fn secondary() -> Result<(), Box<dyn Error>> {
@ -28,7 +28,9 @@ fn secondary() -> Result<(), Box<dyn Error>> {
let sclk: Gpio18<Output> = pins.gpio18.into_output()?; let sclk: Gpio18<Output> = pins.gpio18.into_output()?;
let reset: Gpio5<Output> = pins.gpio5.into_output()?; let reset: Gpio5<Output> = pins.gpio5.into_output()?;
// // Set up SPI interface and digital pin. These are stub implementations used in examples. let read: Gpio12<Input> = pins.gpio12.into_input()?;
let write: Gpio14<Output> = pins.gpio14.into_output()?;
let spiman = let spiman =
spi::Master::<SPI3, Gpio18<Output>, Gpio23<Output>, Gpio5<Output>, Gpio17<Output>>::new( spi::Master::<SPI3, Gpio18<Output>, Gpio23<Output>, Gpio5<Output>, Gpio17<Output>>::new(
spi3, spi3,
@ -45,7 +47,7 @@ fn secondary() -> Result<(), Box<dyn Error>> {
dma: spi::Dma::Disabled, dma: spi::Dma::Disabled,
}, },
)?; )?;
let mut display = Ssd1331::new(spiman, dc, Rotate0); let mut display = Ssd1331::new(spiman, dc, ssd1331::DisplayRotation::Rotate180);
display.init().unwrap(); display.init().unwrap();
display.flush().unwrap(); display.flush().unwrap();
@ -56,11 +58,16 @@ fn secondary() -> Result<(), Box<dyn Error>> {
let eye = Bmp::from_slice(include_bytes!("./eye.bmp")).expect("Failed to load BMP image"); let eye = Bmp::from_slice(include_bytes!("./eye.bmp")).expect("Failed to load BMP image");
let eye_closed = let eye_closed =
Bmp::from_slice(include_bytes!("./eye_closed.bmp")).expect("Failed to load BMP image"); Bmp::from_slice(include_bytes!("./eye_closed.bmp")).expect("Failed to load BMP image");
let emilis = Bmp::from_slice(include_bytes!("./emilis.bmp")).expect("Failed to load BMP image");
print_image(emilis, &mut display, h as u32, w as u32);
sleep(Duration::from_secs(3));
display.clear();
puff_idle(&mut display, h as u32, w as u32);
loop { loop {
print_image(eye, &mut display, h as u32, w as u32); print_image(eye, &mut display, h as u32, w as u32);
sleep(Duration::from_secs(rng.gen_range(1..10))); sleep(Duration::from_secs(rng.gen_range(2..8)));
print_image(eye_closed, &mut display, h as u32, w as u32); print_image(eye_closed, &mut display, h as u32, w as u32);
sleep(Duration::from_millis(400)) sleep(Duration::from_millis(190))
} }
} }
@ -85,6 +92,95 @@ fn print_image(
display.flush().unwrap(); display.flush().unwrap();
} }
fn puff_idle(
display: &mut Ssd1331<
Master<SPI3, Gpio18<Output>, Gpio23<Output>, Gpio5<Output>, Gpio17<Output>>,
Gpio16<Output>,
>,
h: u32,
w: u32,
) -> ! {
let raw = get_puff_raw();
let mut frames = Vec::<Bmp<Rgb565>>::new();
for raw_image in raw {
let frame_bmp = Bmp::from_slice(raw_image).unwrap();
frames.push(frame_bmp);
}
loop {
for frame in &frames {
print_image(*frame, display, h, w);
sleep(Duration::from_millis(1));
}
}
}
// Manually unrolled because im gay
fn get_puff_raw() -> Vec<&'static [u8]> {
let mut raw = Vec::<&[u8]>::new();
raw.push(include_bytes!("../puff/puffidle-0.bmp"));
raw.push(include_bytes!("../puff/puffidle-1.bmp"));
raw.push(include_bytes!("../puff/puffidle-2.bmp"));
raw.push(include_bytes!("../puff/puffidle-3.bmp"));
raw.push(include_bytes!("../puff/puffidle-4.bmp"));
raw.push(include_bytes!("../puff/puffidle-5.bmp"));
raw.push(include_bytes!("../puff/puffidle-6.bmp"));
raw.push(include_bytes!("../puff/puffidle-7.bmp"));
raw.push(include_bytes!("../puff/puffidle-8.bmp"));
raw.push(include_bytes!("../puff/puffidle-9.bmp"));
raw.push(include_bytes!("../puff/puffidle-10.bmp"));
raw.push(include_bytes!("../puff/puffidle-11.bmp"));
raw.push(include_bytes!("../puff/puffidle-12.bmp"));
raw.push(include_bytes!("../puff/puffidle-13.bmp"));
raw.push(include_bytes!("../puff/puffidle-14.bmp"));
raw.push(include_bytes!("../puff/puffidle-15.bmp"));
raw.push(include_bytes!("../puff/puffidle-16.bmp"));
raw.push(include_bytes!("../puff/puffidle-17.bmp"));
raw.push(include_bytes!("../puff/puffidle-18.bmp"));
raw.push(include_bytes!("../puff/puffidle-19.bmp"));
raw.push(include_bytes!("../puff/puffidle-20.bmp"));
raw.push(include_bytes!("../puff/puffidle-21.bmp"));
raw.push(include_bytes!("../puff/puffidle-22.bmp"));
raw.push(include_bytes!("../puff/puffidle-23.bmp"));
raw.push(include_bytes!("../puff/puffidle-24.bmp"));
raw.push(include_bytes!("../puff/puffidle-25.bmp"));
raw.push(include_bytes!("../puff/puffidle-26.bmp"));
raw.push(include_bytes!("../puff/puffidle-27.bmp"));
raw.push(include_bytes!("../puff/puffidle-28.bmp"));
raw.push(include_bytes!("../puff/puffidle-29.bmp"));
raw.push(include_bytes!("../puff/puffidle-30.bmp"));
raw.push(include_bytes!("../puff/puffidle-31.bmp"));
raw.push(include_bytes!("../puff/puffidle-32.bmp"));
raw.push(include_bytes!("../puff/puffidle-33.bmp"));
raw.push(include_bytes!("../puff/puffidle-34.bmp"));
raw.push(include_bytes!("../puff/puffidle-35.bmp"));
raw.push(include_bytes!("../puff/puffidle-36.bmp"));
raw.push(include_bytes!("../puff/puffidle-37.bmp"));
raw.push(include_bytes!("../puff/puffidle-38.bmp"));
raw.push(include_bytes!("../puff/puffidle-39.bmp"));
raw.push(include_bytes!("../puff/puffidle-40.bmp"));
raw.push(include_bytes!("../puff/puffidle-41.bmp"));
raw.push(include_bytes!("../puff/puffidle-42.bmp"));
raw.push(include_bytes!("../puff/puffidle-43.bmp"));
raw.push(include_bytes!("../puff/puffidle-44.bmp"));
raw.push(include_bytes!("../puff/puffidle-45.bmp"));
raw.push(include_bytes!("../puff/puffidle-46.bmp"));
raw.push(include_bytes!("../puff/puffidle-47.bmp"));
raw.push(include_bytes!("../puff/puffidle-48.bmp"));
raw.push(include_bytes!("../puff/puffidle-49.bmp"));
raw.push(include_bytes!("../puff/puffidle-50.bmp"));
raw.push(include_bytes!("../puff/puffidle-51.bmp"));
raw.push(include_bytes!("../puff/puffidle-52.bmp"));
raw.push(include_bytes!("../puff/puffidle-53.bmp"));
raw.push(include_bytes!("../puff/puffidle-54.bmp"));
raw.push(include_bytes!("../puff/puffidle-55.bmp"));
raw.push(include_bytes!("../puff/puffidle-56.bmp"));
raw.push(include_bytes!("../puff/puffidle-57.bmp"));
raw.push(include_bytes!("../puff/puffidle-58.bmp"));
raw.push(include_bytes!("../puff/puffidle-59.bmp"));
raw
}
fn main() -> Result<(), Box<dyn Error>> { fn main() -> Result<(), Box<dyn Error>> {
sleep(Duration::from_secs(1)); sleep(Duration::from_secs(1));
Ok(secondary().unwrap()) Ok(secondary().unwrap())