Adapting Code from Itsy Bitsy M4 to Arduino Uno

I'm doing a group project from school, and none of us have done anything with Arduinos before. The only microcontroller any of us have used is the PIC used in out embedded systems class.

Our project is to build a device for... "Optogenetics and Photobiology," whatever those are. Anyway, it needs to apply light individually to each well of a 96-Well PCR Plate. And each well needs a UV LED, a RGB LED, and a dedicated green LED, on top of the green LED that's part of the RGB LED, for some reason. Any, you know, the LEDs need to be programable for whatever intensities and patterns the biologists want to use.

Long story short, we need to cram 3 x 96 = 288 LEDs into a 72 mm x 108 mm area. And we need 5 x 96 = 480 channels to control them all. The driver chips also need to fit in the 72 mm x 108 mm area. We thought it would be nice to use 48-channel drivers, so we'd only need 12 of the chips. We went with the TLC5957, and it would be nice if we didn't have to change that.

We found this code to run the drivers. It's also available in the Arduino online IDE, but I can't figure out how to link to a particular library in there. The code is written for the Itsy Bitsy M4. I'm told that board can run circuit python, but I don't believe this particular program is in circuit python.

Our group was given an Arduino Uno to use for our project. What is involved in adapting this code from the Itsy Bitsy M4 to the Arduino Uno? Is it just a matter of renaming all the references to the pins? Or is there something more subtle we should be altering?

Any advice would be appreciated. I'm told I can post two links, so I'll make the second one a link to the last time I asked the internet for help on this project. It includes three pictures related to the project, which is more than I'm allowed to post here.

Thanks everyone.

I'm not familiar with the TLC5957 but you should look at this driver.

IMHO, An Uno doesn't have enough memory to control 480 channels.
I mean, it MIGHT, but you'll have to be very careful.

The library you linked doesn't look like it has any blatant M4 dependencies. But I bet it's not "very careful" WRT memory consumption. uint64_t and calloc(); oh my!

That's only 960 bytes of data for 16-bit PWM. That leaves over half the RAM free! :slight_smile:

I think they are going to need a custom circuit board. The cells are on 9mm centers in an 8x12 array.

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.