A simple DIY status display with an 8x32 RGB LED

Yeah. poorly explained. I am using four of these: Ws2812 8x8 (aliexpress). And oriented like in that picture above. Here is result if i rotate 90/270 agree.

There are probably LEDs mapped differently on the modules. I don’t use individual modules but a whole block of 8x32 LEDs and that works fine.

Well, this is part of the addressable light component and the pixel_mapper option. You have to try it by your self. As a startingpoint take a look at this code sample:

display:
  - platform: addressable_light
    id: ehmtx_display
    addressable_light_id: ehmtx_light
    width: 32
    height: 8
    pixel_mapper: |-
      if (x % 2 == 0) {
        return (x * 8) + y;
      }
      return (x * 8) + (7 - y);
    rotation: 0°
    update_interval: 16ms
    auto_clear_enabled: true
    lambda: |-
      it.line(0, 0, 3, 0);
      it.line(8,0,11,0);
      it.line(16,0,19,0);
      // id(rgb8x32)->tick();
      // id(rgb8x32)->draw();

with the right pixel_mapper it should look like this:
IMG_1880

Exciting news.

Using an ESP32 with an I2S audiomodule makes the display to a media player.

In my case i use this:

media_player:
  - platform: i2s_audio
    name: "$devicename media"
    id: ehmtxaudio
    dac_type: external
    i2s_lrclk_pin: GPIO33
    i2s_dout_pin: GPIO22
    i2s_bclk_pin: GPIO19
    mode: mono

Sadfully combining ehmtx with bluetooth proxy doesn’t work, at least with wifi. I will test it with a wired ESP32 and report later.

2 Likes

There is a new video on how to setup my display:

2 Likes

Can you make an English version please?

Sorry, this was made by a german youtuber not by me. But the documentation on github is in english.

Do you use a 3-d printed case or similar to house your LEDs? I really like how it looks with the diffusers in front of the lights.

i can’t find my model anymore. But this is the next one i will try Model

Mine is similar with a printed diffusor.

But if you like to buy a ready made hardware search for ulanzi TC0001. My software works with that hardware (mostly see my repo).

Try this:

    pixel_mapper: |-
      return ((int) (x/8 * 64)) + x % 8 + y * 8;
1 Like

After updating esphome version 2023.11, yaml ehmtx version 1 cannot be compiled.
It stops on error

Failed config

api: [source /config/esphome/led-8x32.yaml:61]
  services: 
    - service: alarm
      variables: 
        icon_name: string
        
        [text] is an invalid option for [variables].
        text: string

I can fix it somehow?

Corrected. I changed the text to texts because it conflicts with the new text component that was added in the ESPHome version 2023.11

1 Like

You need to change both the variables and the lambda

1 Like

I’ve already found out, thanks

This project looks really interesting. One question - is it possible to toggle between using the panel as a light (all pixels in a block of the same colour) vs as a clock / information display?
Thanks

Yes, of course ;-), but it is not yet in the documentation. There is a service call:

service: esphome.m5stamp_color_screen
data:
  lifetime: 2
  screen_time: 10
  r: 100
  g: 45
  b: 140

Similar to the other service calls, you can set the whole screen to one color.

1 Like