Led Backpack Super Dim Strange Behaviour

Yesterday I hooked up the ‘1.2" 7-Segment LED HTk16K33 Backpack’ up to a ESP32 S3 Zero.
I solder wires between the backpack and esp32 as per:
Vio → 3.3V
Vin → 5V
SDA → 6
SCL → 5
GND → GND
I uploaded a simple sketch using the Arduino IDE 2 with my macbock pro 14".

#include <Wire.h>
#include <Adafruit_GFX.h>
#include <RTClib.h>
#include "Adafruit_LEDBackpack.h"

#define DISPLAY_ADDRESS   0x70

Adafruit_7segment clockDisplay = Adafruit_7segment();


void setup() {
 // Setup Serial port to print debug output.
 Serial.begin(115200);
 Serial.println("Clock starting!");
 
 Wire.begin(6, 5);
 clockDisplay.begin(DISPLAY_ADDRESS, &Wire);
 clockDisplay.setBrightness(255);

}

void loop() {
 clockDisplay.print(1224, DEC);
 clockDisplay.writeDisplay();
 delay(1000);
}

Everthing worked fine and the 7 segment displayed everything as it should. I played around some displaying different things BUT then I decided to upload a BLE Midi sketch and the seven segment which was displaying the characters 5000 suddenly got dimmer with the 5 still remaining bright. Concerned I uploaded the previous sketch I had tested with no issues and this time it did not work.

I tried testing the above code and found when I disconnect the Vin wire it shows but extreamly dim. I connected it to an arduino uno with and without Vin pin connected but nothing seems to change the exreamly low brightness.

Is this a fault of the backpack or am I doing something wrong?

Any help would be much appreciated.

2 Likes

Can you provide a diagram of your wiring - I can’t see from the ADAFruit diagrams where VIN on the backpack is. If this is actually from an external supply then you are missing either the corresponding GND connection or the GND connection from the ESP to the backpack.

1 Like

You can see the red wire isn’t connected to anything here but there is no change if I connect it to the yellow wire or put it in the Vin terminal on the Arduino uno.


The esp23 was connected like this with the same coloured wires going to the same location on the backpack.

1 Like

The documentation for this device is very difficult to use, but AFAICT the VIN lead (the red wire in your images) should be connected to 5V. It is possible that connecting it to VIN on the Arduino damaged the 5V supply on the module (VIN on the Arduino is an input - it would have loaded the VIN pin on the module - I don’t know what might happen when a power input is loaded like that). What is not clear is whether 3.3V should be connected when VIN is used, or whether connecting both might cause a problem. The descriptions simply say that it runs as a 5V device, with inputs at either 5V or 3.3V level, regardless of the supply.

I can’t pick anything from your ESP example because I can’t identify that module.

that looks right to me. Vio is to set the logic level, so 3.3v for ESP32
Vin should be the led driver voltage, so from what I could see if the pdf, needs to be 5 V to work as it has 2 leds in series.
src: https://cdn-learn.adafruit.com/downloads/pdf/adafruit-led-backpack.pdf
about page 98

I’m a little confused in your ESP32 photo as to the other wires.
(green on the bottom and black/yellow at the top)
I am assuming its getting it power from the USB port ?

I would double check all the soldering and check the 5V is getting to the board and driver chip; also as above ensure ground is working.

The esp board is the “ESP32 S3 Zero”, I have checked the wires for continuity and the seem fine the ground is ground.

The other black and yellow wires were to power an led and the other green for a switch.

From what I read, the dimming is driven (via PWM) from the driver chip on the display board. Does it respond to updated display values and just dim, or is it not updating.
Im wondering if the comms to the chip are working at all.

It would be interesting to confirm goes is getting to the driver chip.
Most of the time I have seen something work, then not or partly working will either be from a faulty component somewhere or a dry solder joint.
e.g. If the 5v rail is not getting into the chip it wont have enough power. If the comms is not getting into the driver chip, nothing will work… and so on… as such trace the tracks from your 5 pin connection to the chip checking at each point. Then check the pad on the PCB and the pin in the driver chip. if there is a V at the pad but not on the pin, reflow that pin.

I tested the joints and reflowed them and they seem good. I wrote a script that would set each individual segment on one by one gradually getting brighter.

Summary
/*************************************************** 
  This is a library for our I2C LED Backpacks

  Designed specifically to work with the Adafruit LED 7-Segment backpacks 
  ----> http://www.adafruit.com/products/881
  ----> http://www.adafruit.com/products/880
  ----> http://www.adafruit.com/products/879
  ----> http://www.adafruit.com/products/878

  These displays use I2C to communicate, 2 pins are required to 
  interface. There are multiple selectable I2C addresses. For backpacks
  with 2 Address Select pins: 0x70, 0x71, 0x72 or 0x73. For backpacks
  with 3 Address Select pins: 0x70 thru 0x77

  Adafruit invests time and resources providing this open source code, 
  please support Adafruit and open-source hardware by purchasing 
  products from Adafruit!

  Written by Limor Fried/Ladyada for Adafruit Industries.  
  BSD license, all text above must be included in any redistribution
 ****************************************************/

#include <Wire.h> // Enable this line if using Arduino Uno, Mega, etc.
#include <Adafruit_GFX.h>
#include "Adafruit_LEDBackpack.h"

Adafruit_7segment matrix = Adafruit_7segment();

void setup() {
#ifndef __AVR_ATtiny85__
  Serial.begin(9600);
  Serial.println("7 Segment Backpack Test");
#endif
  matrix.begin(0x70);
}

int idx[] = {0, 1, 3, 4, 2};
void loop() {
  matrix.setBrightness(0);
  matrix.clear();
  matrix.writeDisplay();
    // Serial.println(((float) analogRead(A1))/(1023/5));
    for (int i = 0; i < 5; i++) {
      for (int j = 0; j < 8; j++) {
        matrix.writeDigitRaw(idx[i], 1<<j);
        matrix.writeDisplay();
        delay(100);
      }
    }

    for (int k = 0; k < 5 * 7; k++) {
      for (int i = 0; i < 5; i++) {
        int j = (i+1)*7 < k ? 0xFF : 0xFF >> ((i+1)*7 - k);
        matrix.writeDigitRaw(idx[i], j);
      }
      matrix.writeDisplay();
      delay(100);
    }


    for (int i = -255; i < 255; i++) {
      matrix.print(1111, DEC);
      matrix.setBrightness(255 - abs(i));
      matrix.writeDisplay();
      delay(20);
    }
}

It did respond to the communication and was lighting up each segment but the brightness did not change. The segments were lit up in equal brightness but the decimals where twice as bright (I guess because they only have one led). The more segments I tried to light up at the same time the dimmer they all got, when I tried to light up every segment only the decimals could be seen (at this point the backpack would sometimes become unresponsive to the comms and just halt until power had been removed completely).
The voltage at the led’s seems to be around 3.2V.
Is this a faulty board, is there a way I could get a replacement for free?

I will leave it to the store to comment on a replacement. To me it sounds like the 5v is not getting to where it needs to go. Based on the document it stated it needs 5v as there are two leds. So while i dont know 100% ot seems to me that 3.3v at the led does not seem right. When running does the 5v header pin measure 5v ?

Hi All

This suggests to me the power source has not got the current capability to drive the LEDS or there is something drastically wrong between said power source and display like the introduction of some unwanted resistance.

I would first try a separate 5V supply for the LEDS and make sure this has enough current capability. Allow for ALL LEDs to be on at the same time (worst case). Remembering you have 28 segments plus decimal dots. This could add up. Like if they require 10mA per segment you have 280mA plus dots just to light up LEDs.
Cheers Bob

As it seemed to be power related I did try different power supplies. Firstly I went from the esp32 power supply to an arduino uno’s 5v supply and finally a completely seperate power supply with an output of 5V @ 2.5A.
The change in power supply had no effect on the brightness of the leds but changing the logic voltage did effect the brightness.

Hi Gabriel
A bit strange. Sounds like the logic is trying to drive the display and the external 5V is doing nothing.
It is extremely unlikely the logic would be able to drive more than 1 segment without strain or failure of the whole thing. That is the symptoms you are describing.
Are you able to measure the current the external 5V is supplying with different displays driven. That should provide a clue.
Any chance of a schematic that will show more detail than photographs or at least a sketch showing ACCURATE connections.
Cheers Bob

Hi Gabriel,

Would it be possible to test with the Uno in the following configuration and code? Arduino Wiring and Setup | Adafruit LED Backpacks | Adafruit Learning System

From the schematic doing this test might have fried the driver IC, without Vdd = 5V the power might have flowed through the I2C pins

Liam

1 Like