 And welcome to the show. It's me, John Park, and this is JP's product pick of the week, and we are here once again to have a little look at a cool new product. Are you ready for it? I think I'm ready. Here we go. When I say we, I'm mostly talking about me, but also all the fine people over in our chat. So we've got people over in the Discord chat as well as YouTube, and I want to say hi to you all. Hi you all. Thanks for stopping by. Let's see. I think it's time to just kick this thing into overdrive, shall we? So one thing I like to do right away is tell you with a bit of a hint as to what the product is going to be that if you want to go and get a discount on the product, you're going to want to head here. In the product page we have a 50% off discount. We have this video playing right inside of there. I dare not press that, or I'll get sucked into a Vortex. But if you want to go there, go. Go there. That's the URL. That'll take you right there. It's 50% off during the live stream. This is the QR code, point a device at that, and off you'll go. And this is the URL if you're traditional and you like to type in uniform resource locators. That'll take you there. We have Andy Calloway warning people it is time to get ready for a quick costume change. That's right. I've got at least three quick costume changes coming up in the next few moments. But first, what I'm going to do is have Lady Aida tell us all about this week's product pick. Take it away, Lady Aida. This is the AW 9523. We actually sell this on Reddit. You know, Reddit's good for some things, not just buying stocks, but also getting some chip recommendations. So this is the AW 9523. So we're going to just look at this one picture for a bit because I've got to explain what's going on here. So this is an I-squared-C expander. What that means is you send I-squared-C commands in on the left or the right using the STEM QT connectors or the breakout at the bottom and you can control 16 different IOs. Now you're not going to control them as fast as if they were on the chip, you know, the microcontroller you're using, but maybe you've got something like a QTiPi and you want to control 16 LEDs. If it doesn't have 16 pins on it, how would you do that? You could use this expander. So this expander has 16 inputs and outputs. So each of these things labeled 0, 1, 2, 3, 4, 5, 6, 7, 15 can be either an input or an output or, and this is kind of weird, it can be a constant current LED sync, which is unusual. Most expanders don't have that capability to do constant current with dimming. So if you are, you know, you can use this for buttons. You can use this for, you know, whatever you want to do expanding expansion to you. But if you're using with the LEDs, it's particularly good because you can dim the LEDs 8 bits and there's no PWMs. You don't get no flicker. It's a constant current, like perfectly smooth linear dimming. And second, you don't need a resistor because it's constant current and that's why you see, like, there's the VIN pads along the IO. You can just connect your LED from the VIN to the GPIO pad and, like, Bob's your uncle, you can dim the LED no resistor required. So I think it's really great for LEDs. That said, it also can be used as an input or for any other thing that needs IO expansion. Just note that it's not PWM, it's a constant current sync output. Okay. So here I've got everyone's favorite. That's the QDPI. So again, if you want to drive 16 LEDs, you can't. It doesn't have 16 pins, but it does have the Stemix U-key connector. And then over here, and this is kind of neat, I just took an RGB LED and I'll unplug this so you can see. I connected the power pin of the LED, the anode, to VIN and these are GNB to three different GPIOs. Let me just focus a lot so it's super clear. And then again, no resistors required. And then let me plug this in. Oh, wow. I just, like, magically started working again, which is impressive. And then it drives in with constant current and then you've got this beautiful RGB light. And what's cool is, if I shake it, there's no jitter, like you don't see when you normally use PWM, you'll see the LED turning on and off, especially when you wave it. You're not going to get that because it's constant current. There's only one thing that is a little annoying about this expander is it doesn't have the ability to do built-in pull-ups or pull-downs. So if you use it as an input, you're going to have to add an external pull-up or pull-down. That's the only thing, though. And again, for LEDs, you don't need those and it's totally worth it. I think it would be great for driving a large number of LEDs with the address jumpers as well. You can connect up to four of them on one bus. OK, and with that is New Parks for the Week. All right. So you know what I want to do is I want to go over to my Cabinet of Wonders and Mysteries, which is actually hidden behind this. I'm not using the retro reflective green screen today, but I still have it up there. Let me go over there. Hang on. Yes, that's right. This week's product pick of the week is this AW 9523. And it is an expander for 16 pins of either pull-up or pull-down using external resistors so that you can do digital inputs and outputs, buttons, and for constant current LED driving. So let me, first of all, let me show it to you nice up and close. I'm going to jump to this down shooter here. So there you can see, I've got that prepared to go on my Stemma QT board. There you can see this has 16 pins arrayed around the top and the bottom. There's, I think, 11 on the top and five on the bottom there. And all those pins are in pairs because they each have very, very conveniently and thoughtfully of Lady Aida to design it this way. They all have that V in for the voltage. So with this, we can plug in a whole lot of buttons or we can plug in a whole lot of LEDs. And you may see a suspicious red glow coming from behind my finger here. Every once in a while, my finger started to turn red. And the reason for that is I have a little demo here. So let me, let me set this up and show you. So this is going to be a little bit bright. But what I've got are 16 little three millimeter red LEDs plugged into the board. And as you can see, I'm doing some different little fades and lighting them in some sequences, turning them on and off. Right now they're getting brighter, brighter, brighter, and then they'll drop down. I think I'm taking it at a max to about, we'll look at the code here, but I think I'm taking it to a value of about 32 for the current. And the max is 255. So it gets crazy bright. I'm not going anywhere near that or we just wouldn't see anything for days. And this is really cool. I like it in this use because as you can see, let me try to show you how I have this set up. I've got some header sockets plugged in there. And then I've just plugged in all those LEDs into the voltage rails and the GPIO expansion LED driving rails there. This is fun for just a demo, but of course you could run wires out to your project. So for example, a project where I think this would be really useful is doing any kind of arcade button setup where you're using lighted LEDs, lighted arcade buttons that have an LED in them. And you need to add a whole bunch of buttons and a whole bunch of LEDs. Well, since these are I squared C and use the little STEMA QT connectors, you can plug in up to four of these on one microcontroller. And then you'd be able to run buttons, LEDs, galore. The one note and Lady Aida mentioned this about buttons is that you will need to use an external pull up or pull down resistor for those is not built into the chip. But I think if you consider how many extra pins you get for this, what is that 64 possible extra GPIO or LED pins if you add four of these in a row, it's pretty spectacular. Before I get ahead of myself, a little reminder, if you head on over to the product page for this, this is product ID 4886. And that'll take you right there. So adafruit.it slash 4886. That's the quick way to get there, quick URL. You'll see this is half off. Normally this is $4.95, not bad for expansion for adding that many pins. And right now it's half off, which is crazy. So $2.48 and you can get a maximum of 10 of these right now during the live stream only. So this is the special price right now during the show. So I'm not sure what you're waiting for. What are you waiting for? If you take a little perusal through the web page here, you'll get some of the interesting facts about it, some ideas on use, as well as, of course, we have a learn guide. We don't want to just send you out on your own trying to figure this thing out. So we've written libraries in circuit Python and Arduino. And you can find out how to use them just by clicking this learn link here. That'll take you to this page. We have the overview, we have the pinouts. One interesting thing about this chip is that you can, I believe, get different boot behavior depending on which address on I squared C you're using and these, I believe that's with these two little jumpers on the front are A0 and A1, I haven't used them, but you can change some of the boot behavior so that I believe the chip will automatically be in LED constant current mode or pull up mode or a button mode for reading buttons, digital in, digital out for writing out. So I didn't need to use those because I'm just using the library to set the behavior when I started up. But that is an interesting feature and I think I have an idea of why. We'll take a look at the data sheet. If you scroll down on the left side of the learn guide here and click on downloads, that'll take you to this page. Here is the data sheet. And if you look at some of their applications, they mentioned using it in cell phone, PDA, MP3, they always say that. But look at these, LED backlight. So I suspect this is used in devices, PDAs, cell phones, things like that, to be a driver for the backlight. And it, I think they probably also in monitors and TVs, also function LED plus keyboard IO extended. So there's some ideas here on using it, I believe, in a keyboard to do maybe the under lighting if it's not an RGB keyboard, not a NeoPixel type of keyboard, but just lighting or not lighting. Backlight, different levels, because if you think of traditional keyboards that have a little bit of under lighting, you can usually, like on your laptop, press a button to dim the LEDs or brighten them back up. So I suspect that's what this is about and having that constant current LED sure looks a lot nicer than the sort of low grade flickering that's probably subconsciously bothering you with a PWM. I know it's probably subconsciously bothering us all. There's some application notes about using it to drive 32 LEDs with a couple of the chips and on and on. And it talks about this use of I squared C to adjust the boot behavior. So I believe that's probably to make things a little easier on the application if you're embedding this into some hardware so that it will boot the way you want it to boot. So let's take a look at the code that I've got running on this and I can throw that little demo down there. So this is some code I hacked up last night just to play around with this cool board in LED mode. I didn't even try it for buttons yet, input, digital in or digital out. But you can see here in the code, I am importing some libraries, including the AW 9523 library. I'm setting up the I squared C bus because again, note, this is just plugged in over the I squared C through the STEM a QT cable there. And I happen to be running it off of a metro board here, but you can run it off of pretty much any microcontroller, particularly ones with a little STEM a QT nub on there are really nice. The next thing we do is we instantiate the sensors, this AW equals Adafruit AW 9523 on the I squared C bus. And then these are these little bit mask codes that you can do to just write to the chip and say, here's how I want to configure the ports. So I'm just setting all the ports to be in this constant current LED mode so that we can dim and brighten easily without flickering, without PWM, pulse width modulation, no, this is actual smooth linear current curve, and the direction of the pins which is out so that they're writing and not reading. The pins are arrayed across the board if you look here in a, I don't know if you can see that, but if you look at the data sheet or if you look at, I think we have a fritzing object for this, you'll see. In fact, yeah, let's look at that in the learn guide. That'll be a little easier. Let's jump back here to the learn guide. And I think if we click on these docs, okay, so you can see there. Zoom in on there. There's this nice little fritzing diagram shows you the usage. So you'll notice just based on where the pins are located on the chip itself, routing them in order probably would have been nightmarish or impossible. So the pin order you'll see goes from the bottom 0, 11, 10, 9, 8, and then the top 1, 2, 3, 4, 5, 6, 7, 12, 13, 14, 15. So I decided in code to make my life a little easier by building this list, which is arranging them in the same physical order as you see. I've got mine plugged in there. There are two, the pin spacing is 0.1 inch and these are 3 millimeter LEDs. So I couldn't just stick them all in a row. I had to stagger them. And so I've got this little list here to mimic in software the physical layout that I have. And that means if I iterate through those starting at the zero index of that array and running through to the 15, the 16th one, that will essentially run these in order, which is what you can see here as I light these up. I'm not sprinkling them around randomly, although that looks cool. I'm instead running through these in little rows. I set the number of pins that I have to 16. I'm actually the maximum current I'm drawing in maybe all of these cases is 10 out of 255. So you can imagine it's really, really bright when you go to 255. Also, I'll repeat something that Lady A had mentioned, which is no resistors are needed to put the LEDs in line, which is terrific. You can just feather in how much current you want to send to them, but you don't need to worry about putting a resistor on every LED, which is nice. It's kind of convenient. You could if you wanted to, but you don't need to. And then step is a value that I was noodling around with, which is just how much am I increasing or decreasing the current every iteration through. As you can see, that one that just happened there kind of faded up. And that was adjusting the current by a value of one of possible 256. Then I've got these little functions. So I have all pins, and that just allows me to turn them all to some value. So if I say all pins 10, they just all go up to the current value 10. Sweep is, I believe, my little run through all of those one at a time. Singles up is one at a time, one at a time. The sweep was actually the gradation of current. And then I just run all of those down here. So that's really, it's really easy to use this right here. This line that you see right here that I've highlighted, that's the secret sauce. That's the key to everything I'm doing here, which is AW, set constant current. And then you pick a pin number and you pick a value. So you could say AW set constant current, zero for the first pin and 255. And it would light it up to full maximum brightness. So these are really cool. One application I thought could be interesting for this is I've been working on, you may have seen this green screen, blue screen, retro reflective chroma key light ring to put in front of a camera. And one issue that you can face using video and something that has PWM based LEDs is scanning flickers, depending on how things line up between the scan rate and shutter speed of your camera versus that frequency of the LEDs blinking, very subtly blinking. So constant current LED would be terrific for that. So you could set up an array of 16 LEDs in a ring, hand build them, use this kind of a driver or maybe even get an SMD PCB where they're laid down on there. So an interesting thought, one possible application. Let's see. So I think that is everything I wanted to show about it. It's a really cool device. Let me, let's go to the full screen of this again. Let me get these out of the way. Put this off axis a little and you can see them. Right now they're just sort of brightened, brightened, brightened, got I think to the full brightness I wanted to give them. So you could program much more interesting patterns with these, but I just thought it would be a fun demo. So I think that's going to do it today. So that's my product pick of the week. It's the AW9523. It's a GPIO expander and LED driver. It's easy for me to say. Let me say that again. That's the product pick of the week this week. It's the AW9523. It is a 16 pin GPIO expander on I squared C and LED drivers that use constant current. That's going to do it for this week's JP's product pick of the week. Thank you all so much for stopping by. Don't forget, if you head to this URL right now, while the show is still live, you can throw some in your cart for the astonishing value of $2.48 per board up to a maximum 10. You can chain four of these together just so you know. So you won't be able to chain all 10 if you go totally bonkers and fill your cart with them. But you can do some pretty interesting things with these. So we look forward to seeing what you build. And that is going to do it. So thank you so much. I will see you next time. Bye-bye.