 Welcome to the show, it's me, JP. And here we are again, ready for JP's product, Pick of the Week. Are you with me? All right, let's do this. So thanks everyone for stopping by. I see we've got some people over in the Discord as well as the YouTube chats, hi everyone. If you're wondering where the chat is and you're in one of the other places like LinkedIn or Facebook or Periscope or Twitch, head on over to the Adafruit Discord. It's at adafruit.it slash discord. You can join in. We have a live broadcast channel where a lot of the chat is going on over here. In fact, I'll show it to you. Look, that's what it looks like right there. I can't see any of that without my reading glasses on, good grief. Hey, Xenia is $2 away from getting a Promo Proto. All right, well maybe we can push you over that mark today with an extra goodie. So what I'm gonna do is tell you if you're interested in checking out today's product pick from within the product page so that you're ready to buy it, it's gonna be 50% off. All you have to do is go to that QR code or head to this URL right down here and that's gonna take you into the product page. In fact, I'm gonna head there right now. Let's check out in my Chrome. I know I'm giving a lot away but if I refresh this, look, boom, half price. So I didn't show you that. Let's get out of there. All right, so before I go any further, what I'll do is have Lady Aida tell us about this product pick of the week. So please, Lady Aida of a couple of weeks ago, take it away. The Neo Key Feathering has two kale sockets and two Neo Pixels in it. They're wired up directly to pins like five, six and nine and it's just like two key switches and they're on a feathering. You can turn it into a little keyboard if you want. You can make it into a mini controller or HID or really anything you like. So this is just plugged on top of a feather. It's a standard feathering shape. It'll fit on any feather we have. You can plug in any MX compatible switch you like and you can see there's a nice bright Neo Pixels that shine through and we use kale sockets and there's a little reset button as well so you can reset the board. You can also change which pins the Neo Pixel and the switches are connected to. If you wish, there's little jumpers on the bottom. I'll plug this so you can show you. There's a little jumper. You can cut this and rewire if you want to but I kind of picked what I thought were pretty good defaults and then you put whatever keypad you want on top and you're good to go. And then the Neo Pixels are tied together in a row so it just looks like an LED strip of like two Neo Pixels basically. They're not even though like it only turns off when I don't press it. They're not actually connected. That's reading the key presses and changing which ones are lit. So they're independent elements. I wanted to make that clear. Yeah, that's right. This is the product pick of the week. It is the Neo Key 2 Feather Wing and it is a feather wing for adding two mechanical key switches to a feather project and it has underlit Neo Pixels so that you get that nice glow through action and you can address those Neo Pixels to do anything you want, blinking, animations, color shifts, that sort of thing. And these are socketed. So what that means is I can take a couple of my favorite mechanical key switches. Here I've got some clicky, oh no, these aren't the clicky ones, these are linear reds. I can take a couple of mechanical key switches and press those to the sockets in here. No soldering required. That means that you can pull them off and use different key switches anytime you want to change something out. What I want to do actually is just show you the kind of assembly that you'll go through putting this together, first thing. So I'm gonna switch to a down shooter here and I'll just go up in the corner there myself. Okay, so here you can see, I've got it upside down, this comes with header pins that you'll solder in. So there is that soldering required. Once we get those headers soldered in though, this will set down into a feather. I'll show you that in a second. But here you can see we have these reverse-mounted Neo Pixels that shine up through the board. These are the little kale socket switches or switch sockets that allow you to press your mechanical key switch into there. And you can see we've got a little mounting post hole there and then the two contacts that this goes into. So I'm gonna push that through like that and it just kind of gets grabbed by the little sort of spring clips inside of the socket. And now it's in there pretty good. You can mount this a little more securely if you need to. I've actually got a switch plate that I'm using in one instance to kind of give the keys support from each other. And here we'll go ahead and put this second one into place. The only thing you have to be careful about, in fact, I'm putting on my glasses for this, the only thing you have to be careful about is not bending these little legs here. So you do wanna line them up nicely before pressing that in there. So you can see that'll press into place and that's in there pretty snugly now. You'll notice also this has a STEMA QT port on it so that you can add other things. It actually allows you to then add on a rotary encoder or a display or something like that without needing to stack the feathers. So that's kind of nice. It lets you add other peripherals right there. And in this case, I've got a Feather NRF 52840. This is a Bluetooth Feather. And I have, you can see I've got a little battery on there, this thing's still running. I probably shouldn't do this, but I'm gonna cause I have an active Bluetooth connection going that I wanna preserve. So I've pressed this in here. I probably, yeah. We'll get it to light up just by starting it up there. Boy, those are bright. Let me tilt those down a little bit. This is a demo you may have seen me do before. So what's happening here is I'm using these to trigger MIDI over Bluetooth. So here you can see I've got, these are actually sending over here to, let me make this window a bit bigger, this iPad that I have hanging out right here. And so this is an entirely wireless with Bluetooth. It has charging, of course, cause it's a Feather and that's something Feathers do. So it's a neat little, we can play them both at once. Get a little chords. This can do more than just play a couple of notes of course, depending on how you code it. You could start and stop a MIDI sequence with it or do other modifications. This one's needed, this application Animoog from Moog has a little pitch bend on it so we can at least eke out six total notes. So we've got, yeah, that's a lot of fun. And this actually frees you up because this is a, unless you change the LFO modulation on there. So you've got a little touch screen you can use while you're playing your keys on here. And so the sort of more direct, that's kind of an interesting use of it but really one of the more direct uses of this is to create a little macro keypad. So I wanna show you a little demo I put together right here, let me line this up a little better and let's connect those keys. So here I've got a little Feather Quad breakout. So that allows me to have four Feather type things on one board. I've got this Feather, this is the RP2040 right here. Then I have a Feather OLED 128 by 64. And then over here I have a little MIDI breakout which I'm not using for anything. And what you see here is when I press these I am triggering a different sort of illustration over here of this little bongo cat on my OLED. And you will see I'm doing a little bit of a neopixel color change there just to indicate that it's pressed. And these are actually being used right now to send out the numbers one and four. And the reason I picked those is that in my broadcast software here, if I hit the four key, that's a hot key to bring up one of my images. So that's the feather wing itself. And this will switch me back over to my camera view. So you can see this works as kind of a neat little macro key camera switcher right there. And I get my little bongo cat to ping, ping, ping, ping, ping, ping, ping, ping, ping, ping, ping, ping. I probably should have had that for the music demo, but I didn't. And so I wanted to show you, take you kind of through the code of that, how that works. So let's bring up Adam and I can bring up these two little views here so you can still see, see these. It's of course gonna switch my camera if I use it so I won't actually use it. All right, so if we take a look here at this code, the things that matter is a lot going on because I'm doing HID, I'm doing the OLED display, I'm reading the keys, I'm doing Neopixel. But if you break it down into its little constituent parts, it's nothing too tricky. What I do is I import some libraries, including time board, so I get the pin definitions, bus IO, so I can do some I squared C stuff. That's how this screen, this little OLED display is triggered or is controlled from the feather is over I squared C. I'm importing the debouncer, which is a really nice way to use the keys. And then USB HID, so I'm sending the keyboard commands over my USB cable. And the HID for keyboard and key code, which allows me to either type in numbers, space bar, control kind of anything that's a key code on your keyboard. And then I'm also bringing in display IO, terminal IO, Neopixel, so I can control the colors there. The display, the display driver and image load. And that's how I'm doing this little bongo cat thing. If you watch on my screen right now, I'll add a little comment code right there. When I press these keys, since this has focus right now and not my broadcast software, you'll notice the camera isn't changing, but I am using it just to type in a one and a four. So those could be set up to do anything you want pretty much with HID, including more complex things like keyboard combos. So you could have a command, option, control, shift, number, and all of those could be grouped into a single key press, which is how macro pads are often used. Let's see, so next thing I'm doing is setting up the display, I'm setting up the keys. And this is how you'll see I'm using the feather wing, the Neo Key 2 feather wing. It has the keys on buttons, pins D5, digital five and digital six. So you can see I set those up as a digital input with pull up internal pull up resistor. And then the debouncer is set as an object called key A and key B. And then we'll check for those with little debouncer updates in the bulk of the program. I'm setting up the Neo Pixels. And again, here you can see this is just controlled over pin D9. So pin D9 effectively has a two Neo Pixel strip connected to it. And so those are zero and one, those two Neo Pixels right there. And you can see I've set them to a pretty low brightness. It doesn't take much, I've got them at 0.15. And then I'm setting them initially to red and blue. And then I'll be toggling that. You can see I toggle to sort of white color, a little dimmer white. It's a little bluish on this camera, but you can see those are changing when they get pressed. Let's see, then we set up I squared C and I'm setting this up a little trick from Todd Botte. He said, hey, you know, you can go with the default 100 megahertz or you can go with a 400 megahertz on the I squared C bus. So you might get better performance out of that display. And it did, it did improve the Bongo cat animation speed there, which was nice. Continuing to set up the display there. Sorry, it's overheating in here. I'm gonna turn on the, turn on the air. The next thing I'm doing is setting up my bitmap. And so I've essentially got three images, the cat with its hands up with the right hand down and the left hand down or pause. So those are three images that I've actually put into one sprite sheet. So when we're displaying the different images, it's essentially just sliding the sprite sheet with the tile grid. And here's the tile grid set up. You can see there it sets a width of three tiles by one tile high. And I'm saying each tile is that 128 by 64 dimension, which means it just slides to the appropriate one when it needs it. And it does it very quickly. Initially I show just the both hands up, which is tile grid zero. Then let's see, we're creating some more of the hierarchy of the display and then showing it. And then I print a little message to myself in the serial port. And then this is all that happens right here. This is the entire loop of the main loop of the program, which is using the debouncer. We just check for updates on key A and key B just to see has it gone from high to low or low to high or is it just sitting still? So this measures, it's an edge detection. It measures a change. And that's that moment when you press a key. That's when I'm changing to this sort of whitish color, this 111111 sort of a dim white. I show the neopixel change. Then I send the key code. So here this says key code one. That's why it types a one when I press this one. We could change that to something else. So for example, let's do left arrow with that key and we'll do right arrow with the other key. I'll hit save. Hopefully that worked. And now we should see I can use these as arrow keys, which is great for certain types of like two button rhythm games for maybe controlling the position of a video edit playhead or a music edit playhead if you're trying to sort of precisely move around or shift something pixel by pixel. That's kind of a nice little dedicated pad for that. And you can also do more sophisticated things like have a control C, so just a one button copy and a control V for one button paste. You can do a lot with just a couple of buttons, which is nice. I believe you could also get a little more sophisticated with it and check for both buttons being pressed at once. So you could have kind of a third state that's different from the two. And then there's other inputs that you could add to it but the two on their own work pretty nicely. And then you can see this is how I'm shifting the image. I shift from zero to one every time I press that we go to the other sort of position on that sprite sheet. And let me save this so we'll get our ones and our fours back and that is it. And then we do the same for the B key. So if I come back over here to my broadcast software now those keys change my two camera views there or image views. Let's see. So if we wanna take a look back over inside of Chrome here you can see this is, here's the product page for it. It's $49.79. And right now it is a half price, so $2.25. We have a good number of them in stock but if you wanna get one or a couple of them I would go ahead and do it. The discount price of $2.25 it's terrific. It's quite a low price. And that'll be good during this show only during this live stream. So of course the other thing that you'll need is some key switches and we have, I think they're not in stock right now but we have some Kale, K-A-I-L-H brand box switches. These are some linear ones, these red ones here. You can see if I pull off this key cap there's a little linear red key cap the ones on my overhead view here. If we drop down, these are, pull that key cap off of there. These are the box whites which are kind of like a Cherry MX blue. And press that again there, it's still working. Let's jump back over there. Oh there we go, that's a good view. And key caps. So we have a couple of different kinds of key caps in the store as well. Again, those might not be in stock right now but you can sign up to get alerted when they are. There's a picture of some of the key caps. Got the little kitty paw key caps as well which are kind of fun. And let's see, if you want to use these you can just kind of head to the circuit python essentials and look up using key caps there or any of our other key cap or key switch learn guides. So I think if we look up key switch there should be some code for this Trinkie I believe is a learn guide for that one out and the code will be very similar but rather than use board switch you'll use board what I say D5 and D6 I think it is. So this is the OLED I'm using if you'd wondered 128 by 64 OLED works really nicely. Here's a little bit about the tile grid if you look up Carter Nelson's circuit python display support using display IO that's where I got some of the code for doing this tile grid thing sliding around a sprite sheet essentially. And there's the feather I'm using it's the RP2040. These are out of stock right now too is a real popular they're very inexpensive for what they are especially being a feather with charging and all the other features that are on there. So this is probably worth hitting the out of stock or put your email in there and you'll find out when those are in. But the nice thing is this will work with pretty much any feather you could see this is the case of having it stacked on top or we can use any of these doublers or quadruplers or triplers to put them on to a single level. One other thing I wanted to show which I haven't had time to print one of these myself but one of the inspirations for this type of project is find the right camera views that work here. There we go is this little guy this is the 2% milk 2% keyboard. So this is a macro keyboard that's been popular for a few years in the mechanical keyboard DIY community. You can see it looks like a little carton of milk and this one has a dedicated board so I think it's probably an Atmel 32U4 style running QMK might be an STM I'm not sure what but it's kind of an all in one board but the thing you'll notice is that that's really similar size and form factor to a feather with a stack on it like that. So if you expanded that case a little bit or went with lower profile headers you might be able to sort of retrofit one of these little cute milk carton cases into use with our feather wing. Maybe I can convince the Ruiz brothers to build a model of that that would be a lot of fun cause I don't think that this one here would work for it but maybe someone should check and see if there's space in the bottom then maybe it could hang out from there. And one of the nice things about this is that it does secure the keys because you'll notice these can wobble if you kind of push on on sideways. So you wanna secure them and the way I've done it on this board down here is I reused one of my, this is just temporarily, reused one of the plates that I laser cut for my Pico macro keyboard. So that gives these guys a little bit more stability because they're sort of linked to each other so they don't have that sideways wobble there because they're sort of clicked into that plate and the whole thing just popped out though cause there's a bunch of extra weight on it. But generally speaking, this is a hot swappable thing cause that's just a switch either making contact or not. So all right, well, I think that's gonna do it for today. So let me know is over in the discord, I'll check in. I haven't in a while to see if there's any questions. Doctor likes the kale white switches kind of close to the Cherry MX blue for sure. Don't cry over spilled milk. Thank you, Mr. Certainly, the puns are strong and let's see, any other, how about over in YouTube? Yeah, Keith Schlotauer asked, when are you gonna do something with the NeoPixels? Hopefully this answered your question just some of the color change that I'm doing there. I did a demo a few weeks ago with this here which is some of our individual breakouts and these I had, it's a series of five NeoPixels as one strip. So this I did some of the animation LED library stuff in there so that it had pulsing and glowing and shifting colors and stuff. So you can do a lot with those NeoPixels. All right, well, I think that's gonna do it then we'll wrap it up. Thank you so much for coming by. That is my product pick of the week. It is the NeoKey 2 featherwing. It is a mechanical key switch featherwing with underlit NeoPixels. We're out of space, we're just gonna double it up. Thanks everyone and I will see you next time. Bye-bye.