Just wondering if there was ever a solid solution to LED Shims that make poor contact, short of soldering (my soldering skills are terrible)? I bought 2 when they first came out and one ended up in a drawer for half a decade! The gist from the old, related, posts here seems to be that there was some manufacturing adjustments to prevent out-of-tolerance shims but I’m guessing, since mine are so old, I might have gotten one of those rare ones from back then.
I did futz a fair bit, trying a few Pis, and I was finally able see it with i2cdetect on my Pi4 (neither of 2 Pi3s would recognize it at all), but still get errors when I try to communicate with it (a Remote I/O Error, as was mentioned years back on these boards). I really like the LED shims and am hoping some simple hack will get this almost forgotten one working…
The two I have I soldered headers too. In my case I wanted them orientated vertically next to a Unicorn HD display. I had no choice but to remote mount them with wires etc.
One thing you can try is plugging a female header in on top of them. Sometimes works, it holds the GPIO pins in place and keeps the shim flat.
Another option is to push something non conductive down between the two rows of GPIO pins. Spreading them slightly. This pushes the pins up against the contact areas on the shim. A rolled up piece of paper or piece of cardbaord should be fine. Just be careful of electrostatic discharge when pushing it in place. Touch the metal cover on the USB jacks first to ground yourself.
Aside from poor soldering skills, I like that the shims can be combined with a hat/phat, adding a colorful strip of lights whatever capabilities the hat itself provides. I’ll futz a bit more - the fact it’s showing up in i2cdetect gives me some hope, but maybe my code is the real problem!
Keep in mind that you can’t have two devices on i2c with the same address. I’m not saying that’s what’s happening, its just something to watch out for. That will crash your code for sure.
Post your code and I’ll have a look. I’m no expert in Python but I have used it a lot and can usually find my way around in it.
I realized the “bad led shim” is much looser than the good one and used a rubber band to put some pressure on and it almost works - two LEDs don’t light up correctly. The code works consistently with my other led shim, as well as an adafruit bonnet that uses the same LED controller chip (address 0x74 instead of 0x75, so the good led shim works fine with the all-blue bonnet at the same time). My code is crufty old C, but I think it’s okay…
Yeah, sounds like your code is OK. I couldn’t help you with C anyway. There are only 5 pins out the 40 used.
LED SHIM at Raspberry Pi GPIO Pinout
That extra ground on pin 20 caught me out at first. Mine wouldn’t work at all until I wired that one up to ground.
My ability to make good connections is unreliable, but it’s less loose on the Pimoroni hammer header I pounded on to a Pi Zero W: the 2 bad leds are still bad tho’ (maybe I broke something in all my futzing)
I’m going to buy a couple more from Adafruit (I’m in the states, so that’s my go-to): I’m really delighted by the programmability of the IS31FL3731 controller to offload the bit-banging I currently do for the Blinkt from the CPU - the “breathe” effect is very close to what I implemented in a status server using the Blinkt, but much, much smoother. I just discovered that the shim stays “live” after a shutdown from RPi OS, and setting animation to loop forever it continues after the OS has halted, which is pretty cool. So I’ll upgrade my status server from the Blinkt to the LED shim; should be very cool!
OTOH, there are some fancy DMA tricks that might drive the Blinkt without so much CPU intervention; more stuff to play with!