A simple DIY status display with an 8x32 RGB LED

That fixed it! Thanks for looking into this!

Hey. I have this problem. My display direction is different. What i need to change to match my display rotation? Here is picture:

It is not clear from the picture what you mean, but if I understand correctly, the display shows it in portrait. The only thing I can think of is to change the position.
In the esp configuration look for:

display:
    rotation: 0°

You can change 0, 90, 180, 270

EsphomeMaTrix uses the addressable_light display from esphome. There are multiple configuration options. The easiest one to fix is the rotation, but if the order or the layout of your LEDs is different, you can configure it via a pixel_mapper: Addressable Light — ESPHome

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