 because each one is dyed protected. And then each one also has a through hole, sorry, a reverse mount neopixel. So this little neopixel is reverse mounted. So it shines out the top. And that's controlled by a single neopixel input line. And the neopixel input line snakes its way around through the entire grid. And using a resistor to kind of do a feed-through thing, if you snap it apart, like if I snapped this out, it would still work because it would just shunt down this way instead of going all the way around. Just trust me, it works. Only need one neopixel input, and you can control any part of the rectangular grid that you design. If you want to have it be non-rectangular, like if you want like a triangle, you can do that. Just be aware that you're gonna have a lot of like weird, like row, he, like the row and column math, they're gonna have to figure it out. And the neopixels, you might have to kind of do a couple jumper wires. So I recommend doing rectilinear. And then of course it's a rotatable. So, you know, in this case, because I have a north-facing LED button, sorry, it's like a glow-through button, you know, you'd want to be upside down. It doesn't matter because it's fully symmetric either way. The only thing that's directional is the neopixel input. You want it to be at the little arrows on the back. So you want it to be at the input of the arrows. And these little arrows that snake through, just go into the input and you can make like your own custom macro pad or ortho keypad or split keyboard of whatever size and design you'd like. And just use any matrix keypad library code for this. We've got an Arduino library and of course circuit python has support as well. Up, so hang on while I run right over there, we're right back. Hey, look, it's the product pick of the week. This is the NeoKey five by six ortho snap apart. It is a PCB with hot swap sockets for MX compatible mechanical key switches. Underlit NeoPixels, it is diode matrix. It's easy to work with. And I'm gonna go ahead and demo it for you. So let's, first of all, I'll say, I know the YouTube channel apparently for some people wasn't streaming for a little while, something got goofed up. So if you're wondering where to go and grab one for 50% off right now, head to this URL that you see right here or head to that QR code and you'll find them for 50% off maximum two per customer, which is kind of ideal if you're looking to do yourself a little split key ortho keyboard. That's one way people like to use these. So what I'm gonna do is I'm gonna jump to the overhead. Let's take a look here and let's put a little me in the corner there. Let's head this off to the side a little bit. There you can see it. So what you can see here is I've gone ahead and plugged in a bunch of key switches into here and I've put key caps on some of them. And then I have some simple demo code running right now which just lights up keys when I press them and it'll set them green when they're pressed down, set them back to red when they're released. And you can see you can press a bunch at once. It'll register pretty much all of these at once. You can't quite see it because my hands are in the way. And that is actually in this case running over the rows and columns as well as power ground and neopixel over to a feather board that I have these plugged into just on a breadboard for this one. And let's take a look at what this code looks like. So I'm gonna switch to this view here and let me jump over to Adam. So this is some really simple demo code that I'm running here just to do the basic functionality. This one in fact is not sending. Is someone sending HID? I don't think I am. Oh, this is the wrong code. Hey, hold on, let me reopen. I can get some different code there. Let's see, jump down here. There we go. Okay, so here's some real simple code. All I'm doing is importing board for some pin definitions, keypad, which is the very cool keypad library that we have for circuit Python and then neopixel. In this case, I'm using six columns and five rows. So we set that up with these values, create our neopixels on one of the pins, in this case, D5, and I'm setting 30 neopixels. So it acts like one strip that kind of snakes back and forth. And this is the setup here of the key object, so I'm calling it keys, and it's a key matrix that has these row pins, so D4, A3, A2, A1, and A0, are the rows that I'm using on the microcontroller and then the columns, D13, 12, 11, 10, nine, and six. And those are not going to anodes, so we set that to false. Then there's a little bit of a function here used to just correlate the different key event numbers to the neopixels since they snake around and they're not arranged the same physically as the diode matrix is. I'm setting all the pixels off, and then while true, this is keypad at its best. I can say key event equals keys.events.get, and that function goes and just checks to see if anything happened. If there is a key event, I print the name of that key event, and then if it is a key being pressed, I set that event numbers pixel to green and then when it's released, I set it to red. So if I go ahead and take a look inside the REPL here, you'll see as I press keys, we get the event number being listed there. So I'm not doing anything in particular interesting with these right now, but you can imagine it's really easy to set that up to be an HID or MIDI or other type of device, but HID keyboard is really, really useful because then you can have it send off macros, set it to actually be a sort of alphanumeric typing keyboard. You can set it up with fancy things like layers and function keys and modifiers and control and shift and those sorts of things. So there's a lot you can do with it. And one of the really cool features is that you can snap these apart. So if I take this one out of the way here for a second and I'll show you another one I'm working on, that's one right there where I've snapped apart some of it and rearranged things. So let's take a look here at a large scale overview. So what you'll see here is that I actually have still got these five columns for row one. Row two is actually only four columns. Row three, five, row four, four and row five is four. So those are sort of a rearrangement of things because I wanted to have some non one unit standard spacing. So these are actually two unit spacing to do this typical numpad style of equal enter and plus the rest are one U. So it actually fits nicely in a grid, but we've got to get some weird spacing there. So in order to do that, you can see I've done a little bit of soldering here where I am running power where it's needed, ground where it's needed. I run the row pin horizontally and I run the column pin vertically and then I'm tying together the ground as well down here and the neopixel right there. So that allows it to still treat it as a matrix. We have to do some funnier things inside of code and I'll show those later in the week. Actually I'm working on this as a main project. So we'll take a look at this on John Park's workshop on Thursday. But once this is all plugged up and running, let me go ahead and give that power. If you take a look in the REPL down here, I'm gonna unplug the other one. So this one is actually gonna try typing things. So I'll go ahead and let me open up the Adam view for you and bring this back here. So this one, I'll go ahead and place a, this is the code I'm running. I'll go ahead and place a comment block there. So now you see this one's actually acting as a number pad, one, two, three, four, five, six, seven, eight, nine, this is a delete, this is numpad slash star plus this is a enter key or equal. So these are all working and can be assigned different things both inside of the circuit Python code running on here as well as you can use some macro software to capture things and do other interesting things with them such as Karabiner on Mac OS allows you to do some really sophisticated things with that or Quicksilver to do really big macros opening applications and things like that. So if you look underneath here, you can see we are still able to light up the NeoPixels. I'm actually using some opaque keys here so you don't see that so much from the top. It's more of a glow through happening around the letters there so you can see those change colors as they get pressed there. So that's one of the real powers of this and you can see after snapping apart that one I'm left with some goodies here, right? So I've got some leftover chunks of PCB from the mounting at the top but I have now a little three and a little five macro strip. We could connect those together if we want to, do a weird shape for some reason, snap them apart fully. So really, really versatile, very easy to work with and we've got a nice webpage that'll show you how to do all this in this learn guide. Let me jump over here to Chrome. So here's the product page. If you head here and scroll down you will find a link to primary guide. So head on over to the primary guide here. Thank you, Katnie, for putting this together. This tells us the pinouts, a little bit of how to work with it. If we take a look, you'll see how each of these little individual units is laid out. This diagram here shows what the Neopixel snaking around looks like. So this starts at zero and ends at 29, zero indexed. And then this tells you which things to wire up if you're trying to connect columns and you're trying to connect pins, trying to connect the Neopixels voltage and ground. And then there's some examples in Circuit Python here for keypad and Neopixels, which is how you can use those. And I'll also probably upload the code for my numpad here once I get that working as a full blown project as an example of something that you can do once you break these apart and start having fun with them as a sort of non grid, which I think is really cool. Typically you'll do this sort of thing with hand wiring if you're trying to full blown custom PCV for the shape and layout you want. This lives in a nice spot in the middle where you can lay things out and still connect them very easily. And these are still hot swap sockets so I can pull a key switch out of there and then pop in a different style if I want to for that. So you just wanna make sure that those have a little either translucent body or a LED hole for shine through of the LEDs. So let's see, any questions over in the chat? Let's see, in the Discord chat, which is where people are hanging out. Mostly, you like the green and red? Thank you Talldark and Weirdo, nice to see you by the way. Yeah, the green and red, I like those. You can see them really well on camera too compared to some of the subtleties of magentas versus pinks versus lavenders and purples. All right, so is that gonna do it? I think it is, so don't forget, head over to that URL if you wanna pick one of these up for 50% off. Let's see, hopefully we still have some in stock. We have 29 left in stock, great. So head on over there if you've been thinking of doing a keyboard project. I have had some really nice success using the Feather RP2040 with this project. It's a nice one and since we need, I don't know what is it, about 11 GPIO pins, you can't use some of the smaller boards for that. So you'll need 11 GPIO just for the diode matrix if it's the full size board, fewer if it's smaller, and then neopixel as well as ground and voltage or what you'll plug into. So let's see, I think that's gonna do it for today, thanks everyone for stopping by. This has been my product pick of the week. It is the Ortho 5x6 Neo-Key Snap-A-Part PCB. And rather than hang that whole thing from my pegboard, I'm just gonna take this nice little remnant that has the title there, set that right on there. And you'll also notice I finally got some more pegs over the weekend, so we have some space back again. Might have to rearrange things to be a little tighter in the future. All right, well, I think that's gonna do it. Thank you everyone for stopping by and I'm gonna see you on Thursday and please don't forget to stop by tomorrow morning for 3D Hangouts with Noe and Pedro as well as show and tell. A little later tomorrow and ask an engineer. We got a lot of great shows for you coming up. Thanks everyone and I'll see you next time. Bye bye.