 All right Hello to everyone and happy Friday. Good afternoon. Good evening. Good morning if it's morning wherever you're at. Hope you're having a nice day Let's get a couple of these windows shuffled around here, and then I think we are Gonna be ready to get this show on the road. So Looks like I've got sound to OBS. So check on that. I did Press the live on YouTube, I think. Yes. Yes, we have pressed the live on YouTube. We should be good there Okay, let me just get the chats around over here How's it going DJ Devin put this one we're just gonna turn off the preview on that There we go see Grover has it going love the factory Olaf from Colorado. How's it going? Nice to see all of you this evening Evening again, it's evening in my time. I should say well, it's actually kind of late afternoon But anyway, it doesn't really matter what time it is. So hello to everyone Especially hello to anybody that might be new. My name is Tim. If you have never caught this before I go by foam a guy on github and discord This is deep dive live stream program during this program During this live stream, I should say we are working on things related to circuit python If you are in fact brand new and you have never caught any of these streams before and you don't know what circuit python is You can learn more here at circuit python.org. This is the main website for the project basically though circuit python is a version of python that runs on these tiny computers called microcontrollers and When you plug this computer into your well when you plug this microcontroller into your computer with a USB cable it will show up like a thumb drive and then circuit python allows us to just edit a code file that's on that thumb drive Save it and it will automatically run on that device And these microcontrollers they come in all sorts of different shapes and sizes different built-in peripherals all sorts of different things You know capabilities and things that they have in particular today. I'll be Working with this feather rp2040, which is one of these microcontrollers that run circuit python This one has an rp2040 as the main, you know sort of brain That's the main microcontroller the the CPU if you will And then you know, it's a feather form factor. So it's got battery charging built-in. It's got an LED It's got a stem a cable You know boot select button down there a couple other things. It's a relatively relatively bare bone One, but it makes it a good sort of test candidate Let's see so that's yeah circuit python org like I said, that's where you can learn more The other thing I would encourage you to do if you're new is head over to the discord which is linked down below I believe a da fru.it slash discord you can go there and there is a circuit python dev channel There's also a help with circuit python channel. So if you want to either get help with a circuit python project or help developing You know some code to run on circuit python or something like that Or if you'd like to you know get involved with the actual development of the project and the libraries itself You can join us over on discord And just like you know say hey, hey, I'm new I'm interested in getting involved and somebody will help point you to some of the You know the best stuff to get into for new folks. So That is circuit python and me how's it going Devo desa over on YouTube nice to see you this evening as well I will say circuit python is an open-source project Everybody is allowed to use it on their own boards You're allowed to make your own hardware and then have it run circuit python. You don't have to pay any money for that As a project the circuit python project. It is funded by this company Adafruit. This is their website Adafruit comm So they are actually paying the team of folks who work on the project. There's a small team that works on the project full-time There's a another team of folks or a larger team of folks who work on the project part-time like myself And Adafruit is the one that's actually paying all of us to do so So definitely, you know, of course huge. Thank you to Adafruit for doing that And then I'll just say thank you to everybody who wants to purchase hardware from Adafruit That's another way that you can help You know contribute to the the longevity and the health of the project is just by purchasing hardware For Adafruit you can get yourself microcontrollers that run circuit python You can also get yourself breakouts and sensors and lights and beepers and buttons and all kinds of things that you can Hook up to your microcontrollers to interact with So thanks to folks who purchased from them it really does help out the project as a whole so today Jumping in I am looking at testing out this frame buff PR This one I have seen this one This has come by my desk a couple of times and I've hesitated jumping on it because I don't have the hardware for it But it definitely deserves a look. It's been about a month So I do want to give it a look and this person did they popped up in the discord Like I was talking about before they popped up in the discord and just said hey Can can somebody take a look at this so it has been a little while Probably should have tried to get to it sooner But we're gonna we're gonna take a look today. I'm gonna do what I can I don't actually have the exact hardware that I would need to test this so basically what this PR is about is adding if I understand it at least this is about adding support for the bi-color LED matrices so if I Hop back over to Adafruit for just a second these bi-color. I mean this is a different kind of one that's a similar thing but More like this or maybe this Well this one has the whole breakout I don't know you may be able to use this one without I don't know about that one This is this one though. I think is what it's for These eight by eight LED matrices. You might be familiar with these things You know, there's lots of different ones of these floating around, you know different sizes Some of them have dots some of them have squares But you know, these are relatively common thing Especially I'll say that mono color ones. I feel like are pretty common This one is a bit more rare at least in in my neck of the woods I don't recall ever seeing one of these in person and I don't own any myself I'm sure they're not, you know that rare, but it's not something that I've ever Interacted with personally these ones though instead of being monochrome. They actually have I'm assuming just two LEDs inside of each little square One of them is green. One of them is red. Therefore, it can either Turn the green one on turn the red one on or turn them both on and you end up with this sort of yellow ish amber orange Uh color how's going hosade dive eat good afternoon Uh, DJ Devon think I'm gonna think I'm going with the mp3 encoder and sd card module I think I can work with that catch up here. Did I miss one? I see I did miss one You're interested in pursuing the transformer approach the itc audio coupling. I got you Have an extra transformer that's yours for the asking I got you trying to smooth out some mp3 playback Sounds like um, so I don't actually have the hardware if I understand right though This is the piece of hardware that this pr is trying to add support for it's trying to add it as support inside the frame buff library um For folks that don't know the frame buff library. This is like an older um an older api for displaying stuff On displays or in this case even displaying stuff on a matrix, you know Basically pretending a matrix is a display in order to display stuff on it um, if we pull up the examples we should be able to find There's not a lot in there is there okay, so I guess let's hit the simple test Yeah, it's not the best example truthfully this one is This one's almost more of a test than a uh than a uh example Hopefully it's like just printing stuff out This this is uh, it's not actually hooking up to a display in this one Let's find one that hooks up to a display Uh ssd 1306 is one I think I have on one of these tabs or maybe not I don't know there it is okay ssd 1306 This is the and so frame buffer Well frame buff It is like a precursor to display. Oh, uh, this is an older way to display thing This is my understanding of it at least. Um, I was not around Uh and involved when frame buff was created So I could have it wrong, but this is kind of my you know what I understand about it or at least think I understand about it It's an older way to display It was this was the way to draw on displays Before display io became a thing In I want to say circuit python maybe four or five um Was when display io was created and then that kind of became the new way to draw on displays and it's certainly the way that I do much more frequently um But this was an older style for some devices for a couple of devices like this ssd 1306 There's actually uh, both you can use the display io driver, which is here. This is the one Um, you know that I would probably use if I were sitting down to to use one of these devices today You can also though come back and use this old frame buff um Library as well if we look in the examples here, I think this will provide a little bit better Of a look at kind of what this library does or or the way that the display works And if you've ever done displays on Arduino, I suspect it's probably similar to this uh low level so You know create your i2c bus Initialize your display super easy. Just give it the i2c bus give it the size height and width And then you've got a couple of these methods for interacting with the display so you can fill it Uh with a certain color Um, and in this case, I think it's a mono color display. So it's like, you know, each pixel is either on or off I think is this one so you can uh fill it with zero, which I assume would turn all the pixels off um Show will actually refresh it, you know always call show after changing the pixels to make it update um And then you so fill is one method that you have for your uh painting, you know painting stuff putting stuff on the display Pixel is another method you say x y and then you say The uh, you know the color that you want or in this case like the zero or one since it's mono color um, and then I want to say there's also maybe like I think there's a couple of more um There's maybe like a draw Okay, draw a box Uh fill wrecked there's one fill wrecked There are set pixel pretty much is what we saw fill wrecked I don't see a text one. I might have been wrong about the text one Pixel H line v line circle can even draw a circle wrecked Line Blit not yet implemented though scroll To shift everything Text there is a text. Okay image Although I don't We you probably could not use this in circuit python. This would be more of a blink a thing. I think if you need a python imaging library uh Unless bitmap unless our bitmap happens to be the same. I don't know if it is but I think that's for c python probably There's a there's a bitmap font here, which is interesting could this use Could this use bitmap font the library? I don't know it'd be interesting I guess no because this is like bin file fonts. Anyway, the frame buff driver It provides these very low level ways to interact with the The display, you know paint all the pixels fill them all in paint a specific pixel Uh paint a rectangle of pixels paint a circle of pixels align Some text shift over or up or down or whatever by a certain amount These are the kinds of things that this driver allows you to do In contrast with display. I oh where you can have like a group and you can add, you know A label and an image both into one group and then you can scale it or move it around You know, I guess the shift is kind of similar to moving it around but like In this way, you don't really have the groups and the tile grids and the bitmaps and all that stuff Instead, you just have this display object with its, you know, four or five Functions that allow you to draw stuff onto it. So That's what frame buff is that is the library where this pr is at In particular it's made for the matrices more so than the displays Like I said, I don't actually have any of the the bi color matrices though So I'm not going to be able to test out the actual new functionality What I am going to do though is this person left this sort of Emulation script type thing This script is able to Essentially use frame buffer. Well use frame buff use the library But it doesn't require the hardware. It's just outputting into the terminal I understand right And so this kind of serves as a test in a way of of the frame buff library interesting May skip. I guess it just prints in addition to Updating the actual display maybe seems like it will visualize in the terminal. Yeah, yeah address The pixels are in the incorrect order I'm not sure what that is. That's I guess that's probably something like it depends like when you have those actual matrices Uh, there's there's sometimes different pinouts So maybe this is about like swapping the pins if they end up not Not lining up the first time. I'm not sure My best guess so it looks like we should be able to run this Locally We're gonna try this and then we're gonna basically Try some of the hardware that I do have that also uses the frame buff library Just to try to verify that there's no Regressions or anything going on. So we just want to make sure that the existing hardware Which I do have in can test is not affected by the new stuff Um, and as long as that's good to go, it I don't know exactly when or if we'd be able to find somebody with the dual color one. So as long as Emulation seems to work fine and as long as the other hardware Is not interrupted by the new functionality, then I'm inclined To kind of probably approve it and merge it and then like That way it's at least in and whenever if ever we do get somebody who can I don't really want this in here. I guess actually I think we want this actually in other Do we I yeah, I think we do So we'll test it out as best we can in this case. We don't have the actual hardware But we'll do the best we can with what we do have and uh Just try to get it in if we can if there's no uh regressions or anything then We want to go back up to other I've never seen anything like this in there before. I guess that's probably pointing at their branch Basically the same branch from the pr. I would assume Where was the example that just said how to run it by itself? There it is, okay Numbers to start with maybe So right now I don't I don't um, I mean this probably should just fail because I'm missing libraries That's I think what I'm expecting the first time Then we'll get the libraries installed We'll try it with the released version. We'll try it with the new version actually Numbers I don't do we want to run it in here. Maybe we should run it in its own terminal So I do have frame buff installed, but it is the currently released one, which of course doesn't have the The pr in it yet. So what we're gonna do is we're just gonna go open frame buff This is probably out of date. I would guess rgb 565 Check out main. I noticed that said origin get remote dash v. Let's see. Who's our origin aida fruit get remote rename origin aida fruit oops fetch date the hpr list The hpr check out 50 and then We want to I want to uninstall I want to uninstall the current one I'm going to go pip Just uninstall Oh, right, right python dash m So now it should fail Even more perfect And then we should be able to go back to here and go python dash m pip install dot It's a little confused about the versions, but That's fine Oh, still no actually interesting Did it not successfully? Oh It's not only confused about the versions. It is like confused about the Everything That's not ideal. It's something like did anything actually really get installed. I don't know it does Uh, I don't know why that didn't work. Usually that's um Really, that's how you can install from the repo Um, it says unknown here. I guess I could be part of the mystery That part of the repo is it though? Oh, it's yellow. So it's in get ignore Um It's weird. Why did it? So there's also I think like dash e Had to use before That's somehow related Oh, yikes, there's a thing called install. That's not good. Probably because I guess we want I have no idea Doesn't even look like there is a dash e actually I don't know why I was thinking that I thought there was a dash e Color uses future use decorate Those weird Uh Install from repo Okay, that looks familiar. That's basically what that's basically what person did I've done a local one before too though. I I think Let me just try with the dot again. I I swear. That's how I've done it before. Let's just maybe we Maybe that unknown thing was already existing. Maybe somehow that threw us off. I deleted that so let's try again. We're definitely inside aterford circuit python frame buff Which is where this is at high project toml which has This inside which says name Which should be that nope still did it again. It knows right here But it gets to unknown I never actually had a problem with that before get plus get plus file after repo does it need to be a A full path No run successfully That does not appear to be to get repository I probably have the path wrong Oh the slash at the end. Maybe it's the slash at the end Still says unknown That is so weird Our troubleshooting head-on Not necessarily expecting this part Trip me up. So I am gonna first thing I'm gonna do is just Hit us with another one. Do we have touch screen? Hmm I feel like I've even done this like recently Hmm All right. Well, I don't know how to install it then I mean, I guess I install it the same way they did I suppose I don't know why this I really would prefer this worked though. Honestly like why did I want to know how to do it this way This used to work Is it Does that require setup pie? Maybe this only worked when we had setup pie They're not shouty unknowns Okay, it's closed. So fingers crossed. There's a solution or a workaround or something helpful Oh, don't do that to me, please I mean, I guess we could make a VM Is it? No, it still says this though. Oh, that's the name of the project Updating pip Running from a container Yeah I feel like it's I probably it's probably this I probably have a weird version of something that's old and not actually being used Properly is the current one or something It's all automatic I need to reinstall it This thing now has that Oh A logical name pip Well, does that know I'm gonna In sevens just hit the store nice That tip for anybody who's interested for sure Oh boy. I It's not expecting to have a problem with this part of it at all and I really don't know Exactly what to do about it To be honest, am I on the environment? No difference. Oh, that did not end up here. Anyway, actually That's weird. That went back out to there Why just quick to play Gosh, that's kind of frustrating. I don't know how we Need to make it work I swear, I Just did this not that long ago though, which is the part that's really wiggin me out about this is like I don't Think anything should have changed In a major way like this to a be a vm So I guess technically that didn't Technically that last test didn't work because we're not inside the vmf here Now we're actually in there Worked All right. Well shame on me for not using virtual environments. I guess This is the universe's way of telling me that I really should be using virtual environments But I really don't want to I really think it's a lot more convenient In the vast majority of cases That I personally run into Have a bunch of stuff installed all in one But we made it so we have frame buff so we now need to get our We need to get The thing that we run this in To that other virtual environment Which is now inside the frame buff repo So we're gonna go The environment got numbers What were the other ones? Was numbers it was corners was one outline fill Lincoln lights corners of Each eight by eight display I think so this is like a mock-up of four eight by eights opposite corners are Red or yellow Pretty cool fill with green This is the only one that goes over time The other ones that seem like just kind of drew and then we're done So it actually keeps going as you Put it around here And that looks like that's another Essentially a mock-up of the four eight by eights Wondering why they removed coupons makes sense now to next next gen mcu is here couldn't help It I checked out immediately and got That mp3 decoder too. They only made 100 m7s in the first batch. Yeah yeah I uh, I will At some point try to figure out What that is doing because I would really rather It work to the base, but that can be a problem for a different day Um, this is pretty cool though. I do actually really like the way that they have made these um Like emulation scripts basically like This makes it possible to test The changes without actually having the hardware and I'm actually kind of curious could we Let's see if we could Love pixel. Let's see if we could dumb this down a bit further. Could we somehow Could we I'd like to get it I'd like to get it out of needing to like run this thing with its own animations I'd like to get it to a point where we can kind of do a sort of Something similar to whatever's in the simple test here Like maybe if we could hook up this buffer To be outputting in the terminal I'd like to try to get some more just basic code that's not this like full Blink in lights thing if we can just mix frame buffer from a Buffer and width and a height and a color So when we call numbers It calls frame buffer dot text But how does it make it output? Is it calling log? calls draw passes the panel This takes the animation It calls log actually, okay So initialize the frame buffer Do stuff on the frame buffer Call log on the frame buffer I want to just try to get it down to the absolute basics So I'll take log put log there And then I think I don't want pretty much any of the rest of any of these helper functions. I think I want to just Hard code Create this buffer Terminal we'll need to figure out we're going to change some of these actually I'll I guess I'll uh height eight width 32 colors at three or Import this from here Same thing is this actually, but it didn't work I want to fill in That's where it's going to find it though Code is here. This is not finding it correctly for some reason. That's fine though log Oh, wait, we didn't catch this log that Anything else? Nope just that. Okay log that so let's run this Python typing. Okay. This is not I see Term Is the macbook m1 mac still enough for coding? I Probably am not suited to answer that question at all. I've never really used a mac personally Um, I will be right back. I gotta I'm gonna run and wipe the nozzle on the 3d printer real fast I just heard it finished so brb one second Okay It will save me a bunch of time when I go to start the next print I'm gonna write so we still never solve that. What is terminal? Well, whoa, whoa, whoa terminal Is this not spelled that way? You know 13 in stock 80 or whatever m7 with airlift You got me. You got me on the FOMO What are we doing? Yo, we are we're buying an m7 is what we're doing actually But then we're coming right back to using this driver But I do kind of want to have one of those devices Okay, I'm one of the lucky 13 Anybody who's watching that wants one you probably got to act quick comes from We need int probably not right we might not I think we're not using int Or if this just does this one With the imx with host How's it going axl? Okay, perfect. So obviously at this point, there's nothing drawn on it But I believe that that's outputting so we should be able to go like my frame buffer And then now we have all the all of the methods that we talked about so something like fill Fill one and run Should show all of them green and I'm assuming I mean, I guess you just do two right? red and then I Three seems like the next logical choice, right? Yes, okay three for both on So then you can also do stuff like Let's go log there and then let's go four i and range width Let's do height also. Oh, well Yeah, range. Well, let's do height on the outside range with pixel x y So we're currently yellow. I'm gonna switch it back to For green actually which was I think one And then we're gonna go log and then we're gonna go I'm gonna sleep a little bit because I think that's gonna go really fast in the 10 This negates me a couple nice should walk man so it's Tough because it's just printing a new one every time instead of updating How did that animation one update right that animation one was updating? How did that work? I think in lights Doesn't call log again. Do you not have to keep calling log? Okay, I don't think it matters too much I'm a little curious Outworked but not Enough to spend too much time. I don't think All of these yield the frame buffer Yeah, I don't Wait, I don't see how it How it does the updating rather than the printing new right? Because this one's not scrolling at all. It just stays on that one So the only difference is I can see this so draw would get called from Here so it goes We're not raspberry pi. So we're just gonna come to here go panel none. We have animations That's a dictionary pointing to those functions All of which yield frame buffer, which I feel like is probably part of the magic here That's a dictionary. It goes random animation Choose a random one then it goes If it came from argv then use it Else do the random one Also checking the length of the arguments how many arguments got passed then animations The animation this is going to become a function. This is going to become one of these functions Then this is going to say four frame in animation Anel frame buffer If raspberry pi which is false for me Then it's going to go draw Anel frame chosen animation frame in animation Anel frame buffer So it's actually calling draw over and over again rather than log But of course inside of here it calls log Clear the terminal Draw yep c-graver. I think you got it draw sends a clear. Yep down to 10 And a nine inventory is very accurate. Yeah. Yeah, their their counts are like on top of it It's pretty crazy I forget what a device it was but I remember watching a deep dive with scott Where like a couple hundred or whatever things went into the store and then they just dwindled dwindled down throughout the course of the uh The one and if I recall right, there was one where scott Like tried to buy it real quick before he said anything about it or something To make sure that he got one which is pretty funny Okay, so I think that should do it. Let's try running that one again that's uh actually clearing After 27, why would that be? interesting Should we put it somewhere else? interestingly this says Print that then print chosen animation Then call log We don't actually see it printing Okay, there's actually we do have chosen animation I guess I mean this shouldn't affect it, right? This is not like It's kind of a tangent, right? This isn't necessarily Isn't necessarily the circuit python side of things got to turn in now. Thanks Tim. Yep. Uh, take it easy. Dave. Hope you have a nice night Um, this is not necessarily like a python related or anything but See this is seeing notice is not portable by three I don't know like it's uh Why would it be any different than? I guess it could be any different, right? Like that's literally working inside of This one Does that we're not Raspberry Pi so it just returns so none of this stuff happens Then it would just loop back around and call draw again next time Quite why the I don't quite get why that does anything different What if log had that in it? Is that bad? Doesn't seem to be working anyway though. That one does still work like that. Okay I don't know I think we'll just call that one let it remain a mystery for now I guess okay because my brain really likes to solve problems So we're gonna try one more thing, but then I swear I'm moving on after this if we don't get it I'm just gonna try os dot system os dot system CLS clear the screen like that, right? No, it's called clear in linux Term environment variable not set doesn't work for some reason. I don't know It's really neat. It's updating in your terminal window with the with the colors Maybe create the function for the green square and yield Get the function for the green square and yield like put this into a function Does the does the loop go outside or I don't quite know how to set it up the same way to be honest Would we yield after the whole thing or we'd have to yield each time I think right yield But uh, they're not I'm pretty sure our loop. I don't think I'm doing it, right? Honestly, I think our loop is in the wrong spot Honestly, I don't I'm not very I don't have really hardly any experience with yield. I think Oh goodness That doesn't work the same way Okay, it finished. Okay. Well, that's because it uh never called do something But that's only going to do one frame at a time Because it yields So I think it would have to be in a loop Hey, whoa, I was using that So now it's still running, but it's not I think it's Yeah, I don't know It's not updating I think it's just doing this the first iteration over and over again or something like I don't actually know Um, anyway, though, I apologize, but I got to step away for just one more second and run to the restroom and then come right back Come my afternoon coffee and it's Gone right through me as they say Updating the terminal wish list are technically best way to go one click save certs. Oh save carts I still have cookie issue with firefox where I have to log out and log in In pc and updated carts wish list avoid that Usually if I do an order I spend a long time searching for other stuff to order Simultaneously in the inventory. Oh, no. Yeah, I've had I've had that happen as well on new stuff sometimes I go looking around for other stuff and then by the time I check out it's gone actually I'm late, but you're looking to clear the terminal. Did I try I have not but I will Uh, I think let's go back to Let's go back to not this one. I'll tell you what I'll keep this and we'll just not call it for now We won't yield and then we'll try this So the the weird thing There's there no copy The weird thing is so I tried the one I did try was um this one character 27 plus bracket 2j The thing is like the super weird thing is when I run This blink in light script, it's working properly Because this is not scrolling and I guess I'm not following the code correctly a hundred percent, but It seems to me like the only thing that's making that happen is The fact that they print This There's really nothing else special, but for whatever reason when I try that same way it doesn't seem to Be sure my cat is like trying to get into the dryer right now He hopped in the dryer after we got done with the load the other night And he was like rolling around in there having all sorts of fun with it not turned on obviously And now he is down there. I think messing with it trying to get the door open There's no clear in repel. I'm not sure So clear's supposed to work like like clear like Clear the the linux command or whatever I did try that that had a different error for me. It said something about Terms something not defined environment variable That one is also still does not clear for me in this case Uh, it is it's in it's not no. Yeah, it's not in repel. It's in It's in c python running a script on the pc So os yeah, see here is where I tried clear it says term Environment variable not set but that one means something with ansy escapes What's building? Uh, we are testing a pr for these by color led matrices So we're not necessarily building anything. We're just testing a thing that somebody else built this case Um, anyway, I think the clearing it doesn't matter too much. I my brain would be Real happy if I could figure it out because it's super weird to me that it works fine in this one And it seems like the same thing that we're doing Obviously somehow there's something different going on Not quite catching on to it yet. It's probably not all that complex. It's probably something relatively simple that I'm just not Not seeing right now But that's okay. I don't think that really matters too much the ability to test frame buffer is still there This does seem to be working fine We position this thing just right and we ignore the fact that there's like up and down motion Then we can pretty much pretend like it's working It's good enough for me and it does it is working exactly how I thought it would so we are able to kind of like Make a frame buffer and then manipulate it do stuff with it Um And everything does seem to be working. It just runs all the way to the end And then I guess if we wanted to be let's go Little faster Now it's filling up with green and then it will fill up with red. Oh, no, that's yellow Oh, right, right, right, right, right Wrong number You adjust the size. Yeah Yeah, pretty much it does it still has that's like motion It's got some like zoomies going on there That you can see when it scrolls off, but it's good enough. I think Man youtube on the phone Not so great for listening to music I'm honest It's like pausing a lot. There's a billion ads Usually do you not have that much trouble on the pc um Okay, that's really about all that we can test the new functionality So the other stuff we want to do is just make sure the old functionality is fine as well So we're just going to test some things that use the library um One of them will be this thing over I really opened all these tabs so far today. My goodness. Okay, so this thing Uh featherwing matrix Thing It's one of these basically So if I understand correctly, that means inside of this htk Inside of this library ht16k Either this this thing So either this will extend frame buff or there should be an example Maybe that uses it one of the two This one does not Okay, this one uses frame buff so it creates the matrix Uh, it initializes the matrix here. I should say clear it Fight array create a frame buffer here where it's using these colors And then it's using fb.txt. Let's get this plugged in this is Probably on a Probably on a very old version Not really actually But we will go ahead and update to the current released Please don't be frozen Honestly, I feel like that resetted as soon as I pressed boot select I don't I think that's supposed to happen as far as I know But maybe I am misremembering or maybe I accidentally pressed the other one before I realized it I heard the doodaloo before I pressed reset though and I got worried internet testing So then this one were basically just Said itself again. Oh because I saved but I know I haven't saved yet. Hmm Interesting Okay Yeah, guys starting to get some weirdness got me worried a little bit, but we're gonna try to power through I wonder if we need to have two Because we oh no 16 by 8. Yeah. No, that's what we have never mind. Okay, so Uh, yeah, um Use board.itc. I don't think it matters I fails for repo. Nope. Actually, we uh, we actually did succeed I can find the I have so many things open again. Oh my goodness hip rabbit hole This wreaked havoc on my tabs All right, so it's upside down the light is not doing us any favors But it is working Hello Blinka It's uh It's a bit blinky and it doesn't quite appear the exact same through the camera as it does to the naked eye But that has to do with the refresh rate of the screen and the refresh rate of the camera and all kinds of stuff It is rendering the text and scrolling it though successfully. I will say this is not the updated version. So we still want to go back We want to delete frame buff This should fail Because no library then we put back the Modified frame buff to close some of these. I don't need touch screen. I don't need shapes. That was also. I don't need this that was also part of the also part of the hip rabbit hole Confusing myself with the lefty righty here perfect all good That is really the main thing we wanted to see on this one I'll take a quick peek through. Are there any other examples In this repo That use frame buff There's bicolor, which I don't have animation Nope, that one's not using frame buff Simple test. I think is probably not Yeah Multi display No frame buff there either. Okay, so yeah the text one the scrolling one is really the main one With frame buff in it for that. Okay, and that's all good So another thing that uses frame buff is the 1306 or something SSD 1306 Which is the display that's on this Which I have one of here That is true. That is Not I won't say a hundred percent of the time there are occasionally times where I dive into something and it Doesn't become a complete rabbit hole, but Definitely the vast majority of time you think we could run this with this should we try it? Do we dare do them both or both i2c? This is 3c. Do they use the same address? Let's try it. Why not? Why not? matrix panels for the matrix panels the dual frame buff does help sometimes Oh results. I think it's the end of results SSD 1306 and this is the non-displayio driver. So this is the driver that uses frame buff And so in this case, it's not importing frame buff directly, but what it's doing is it's importing this class It's initializing this class And that class actually does extend frame buff There's an i2c one and a spy one. We're gonna be using i2c But the root one does do frame buff so as long as This still works as expected then that's another You know kind of piece of evidence that this change is not problematic for anything basically a simple test so I already have the bus We could take just this part And i'm gonna put it here And then it will just display some stuff on the display And then it will start going to the matrix Doing the same stuff. It's already doing on the matrix. I'll be it may be slower since it's now also doing the display Oh, we don't have uh, we should have display or release displays Also that failed. Okay. Yeah. Yeah, we don't have the We don't have the library. We probably are missing a These displays honestly that actually this doesn't say release displays It's gonna fail after the first time, right? Oh, but it ah, maybe not because it's i2c Maybe not actually. Yeah, I guess spy the reason it fails is because Tries to initialize the bus again. I mean Well Technically this is trying to initialize the bus again as well actually matrix and screen Get all of that copy this paste it Just try it by itself too many tabs Again, ready And then that fails Oh, that succeeded Okay, the reason it failed on the last one is not because I did not have the library at all It's because I did not add the import. Actually. Yeah That makes sense It's not display. Oh Uh, that's true We are this one is not not display. Oh, it's intentional In this case because we're trying to test frame buff If we go down a rabbit hole in a deep dive are those sea rabbits or does it become a deeper dive? Ocean faring rabbits Sea rabbits do sound pretty adorable. It's like an alternative version of a seahorse I'd be pretty down with that So it does this and it does run It does just keep running because It doesn't get the repel. Oh, that's why you said it's not display. Oh, yes. Yes. Yes. Yes I am caught up again. Thank you And you are correct. Obviously it doesn't do the repel because that's a display. Oh thing Which means obviously we don't have to do to release displays because that's also a display Oh thing that shows you how much more I use display. Oh than frame buffer Yeah, that makes total sense actually that we don't need to do that So this doesn't do much. It's just painting these pixels. Um, just go like, uh X I'm going to do I Manatees our nickname sea cows That's true. I have her at sea cow. I feel like there's a play on words for the pie cowbell It's actually quite slow Okay That seems fine So yeah, our real problem was not actually I assumed it was I assumed that our problem was that we Did not add the library to the uh board, but that's not actually the case really the problem was just we did not import the library. I think I'm gonna take that for loop because I do actually want to try to run them both if we can. I'm kind of curious So for now, we'll just let it do the pixels, I guess And then also do the matrix thing, but it will need to import Why is there no red on this? I wonder. Oh, there is okay far enough So we got our three dots. We also got our frame buff here. This is also upside down. Obviously. Uh, I think there's rotation anybody rotation Right, it's actually all right. It's upside down. It's fine. Uh, let's do updating them both So we have that loop. Let's go take this It's not quite the same. Like let's let's just uh What is this using frame buffer text result we want inside of here Buddy come here. Hey, come here Say hello to stripey cat stripey cat. Say hello to everybody Octopus Just trying to stop him from going to the garage Like watershed down For her to watershed down sounds adorable. Tire society of rabbit culture That's rice robot rabbits. I mean Like the book's gonna be full of analogies and symbolism You cat. Yeah, thank you Tell him that all the time So I'm gonna just go like her x and then I'm just gonna kind of cheat this into its own loop or or into this other loop as we go here basically Do we want to inside of this? Let's do it like that. Her x started on zero Draw the pixel do the show increment that increment that like that the way that we actually increment if this is Greater or equal to The width then just put it back to zero but also Do display dot fill zero So that will make it fill up this line and then once it gets full It'll go back and then fill it up again And our three diagonal dots there should disappear when it fills up the second time I believe All while scrolling the text here as well I'll be it slower now since it's Doing two things instead of one It does appear to be working. So well, I'm gonna let it get to the end and reset just to make sure that that's working And then consider this one good nice So we're all good there. Uh, the only let's see. What else do I have to test? I have a, uh I have this one Seven by five no seven by 15 led matrix unplugged that Uh, this is also i2c. I think Yeah, I forgot about man here The subtle nod Hey, hey, hey, hold on hold on I got you buddy. Hold on Come here. Uh, uh slowly slowly Okay Minor cat emergency not really an emergency but he got his little Little pause stuck on this carpet that he really shouldn't have been On his closet too, but he does sometimes Uh, okay Got here. Sorry about that Apparently I need to start doing the old cat warning I'm gonna put the light back on I don't know what color mine is, but I'm pretty sure it's one of these things Please tell me that's not coming through the stream It doesn't appear to be What on earth is making that sound? Are you serious right now? Is that this? It's on this page Something on this page has like white noise in it Like but it's not this But this is the only like moot. Oh, that didn't work That didn't work. I paused it Let's stay paused though Oh, but now it does I don't think that's it, right? Is it what is it? Is it these? Those are videos Say muted Does anybody else want to do me a favor and like You go to this page With like sound on like your speaker's playing or whatever like do you hear that? The white noise or whatever. I don't know. It's like That's what is it this thing? Well, we're gonna click that to stop it. I don't know something on that page Is making sounds I don't know what it is I actually usually hate using this thing I didn't even know this thing existed until recently and then I kept hitting it accidentally a bunch of times This is actually I think the first time I've used it in a way intentionally Don't hear anything interesting Did you get Did you get the same ones of these at the bottom or did you get different ones of these? That's like my Be a tiny bit of a hiss. Okay. Maybe mine is Probably playing pretty loudly. Yeah, mine's playing loudly because of Some weirdness with my stuff Yeah, it is actually it's pretty quiet Actually the way my thing was it cranked it up quite a bit It is definitely playing You not hear anything Weird. Do you have the same uh, did you get the same ones of these four down here? Related guides That's the only thing I could think is if it's like but these aren't videos Not only one of them is a video You know, it feels like it would be this but that says unmute That thinks it's muted and it doesn't even let me unmute see any other media. Anyway This asset's playing on my end Playing sound different ones. Okay But those must be they're like probably related to the person also Or just random I guess too That's all right You're nothing if I usually blocks audio from auto-playing That is true and mine does usually Is usually do that as well It's weird how these resume themselves after I do pause like that But and now it's like playing again, which is weird or no Anyway, it does not it does not matter too much. Let's go back to matrices Even though they're obviously two different matrices, but my own purposes. I'm going to call the script that we're going to delete that We're going to delete all this stuff This And to here we'll shoot too much. Hold on. No, we want that we want that just this stuff There we go. And then we get rid of this stuff Save that for now So we have our one matrix. We want to get our second matrix Which hopefully don't have the same C address Suppose we'll find out I already have itc And do this here. I'm going to call this one charlie charlie I'm going to call it charlie matrix also since it's not really a display Although I guess it did put that as display. That's fine early matrix Then we should be able to just draw on it. So I guess maybe we should have kept that stuff Use some parts of the Well, let's just paint something real quick. I guess so charlie charlie matrix dot pixel Let's go zero zero one Then maybe like 331 But we're not in codepie. So we copy that we go to codepie we put it there Seems like it's doing anything Oh, I didn't call show. I think maybe Call show Oh, it did actually it did do something just the light overpowered it So it happens to be blue as well and my light was too much for it couldn't see him But they are actually there. So we could now make this Do this loopy thing like this one was kind of doing charlie matrix Pixel cur pixel we can't do 20 because there's not actually 20. Let's just do like two Uh, we will do one. We Don't need that. I guess because I didn't call that before curax plus one that will be charlie matrix dot width Zero Should exist there Doesn't wait very long on the last one there. Oh That's super fast iteration. That was interesting Most of them are like About like that. You know what it is. It's when the when there's no letters there after blinca After blink it ends You get a really fast iteration or two out of this one Interesting because it's not spending time with the letters Huh, that's kind of cool You usually get to see so clearly like cpu being used on something else Are we we're like ever so slightly lighting up the one below Feels like we're lighting up the one below there Is this wrong? Oh, yeah, yeah, yeah, no And I actually seem to make a difference which is odd, but it might just because it's so fast like I know would have to catch it just right at the end there. I guess Uh weird It's playing audio in mine, but not on the page linked but when I click through to that link you get the static noise loop Okay. Yeah, that's got to be the same thing. So you get it on that page That is fascinating. Yeah, I did not get it on this one But I did on the guide page It's one of the videos on the page has audio in it and aren't animated gifts. That was my thought That was my initial thought, but I tried pausing all of them and it didn't seem to make a difference Bottom of the page. There's related guides. Yeah, I did I did that thought crossed my mind as well related guides It's the warm white. It's the only one out of the colors that actually has audio embedded The one below lights up when it reaches the middle. It does. Yeah, it seems like it It's like it's not lighting up all the way though. It's like Definitely more faint than the other ones Yeah, it's kind of like Right, it's like that one pretty consistently. I think Doesn't do it without row It does with this one It's almost just like bleed over or something now. It's kind of doing it on the last two or three You can actually see it a lot better through this camera than you can with the naked eye It's doing it to these last couple ones here It's almost just like it's like bleeding over a little bit of the power or something um, what I'm gonna do is just Go back to the stock version of the library and make sure that that's not Make sure it behaves the same because I don't I really don't think that is um Coming from our new pr version at all But we can double check and then I think I'm probably gonna wrap it up pretty quick after this We did not make it into display ios stuff spent a bit longer on pi pi And uh on the emulator side trying to clear the terminal and a couple of things so Not make it quite into display ios, so I'll probably be picking that stuff up tomorrow So if anybody's interested in display io the newer Of the display apis tomorrow morning, um on my own stream Which will be back here on the discord so you can check in the live broadcast chat if you want to join along I'll put the links in there when I get going, but I'll be working on updating examples for new api So uh, so website report feedback on it taking care of nice Uh the one below. Oh, yeah, that was before But I'll be working on updating examples for the new display io apis Display.show has changed over to display.root group equals We're gonna start the long and winding road of uh changing those over tomorrow. I think doing some testing on it Just make sure Uh, we want to get it from I guess we could just go circ up, right? Same behavior on this one. I can see it ever so faintly right inside there Pretty much same exact thing. I wonder if it's Something to do with using both of them or if it's like only that by itself. I don't know Definitely doesn't seem related to the new stuff though. So I will leave a review on this and then I think wrap it up for the night Um It seems fine to me like said at the top. I don't have the real hardware so I cannot actually test the The actual new behavior with that new matrix Um, although while earlier when I got that m7 I did actually throw one of the bi-color ones of the i2c, uh, Stemma ones in my cart too. So I'll have one of those on the way. Maybe we can test it out a little while later um But I'm inclined to say this seems fine to me. It doesn't seem to interrupt the existing use cases Um, as far as I can tell it just implements another format anyway. So as long as you aren't using the new format Uh, I don't believe it should change anything With your code. So all the old stuff should still be working the exact same. This is the only change that looks Even remotely functional, but even that's not actually a functional change, right? That's just going from f-string Uh vice versa going from dot format over to f-strings Seems fine to me Added that to a statement there guessing that's some kind of like auto figuring out the format or whatever Or based on the format. It's initializing the correct thing. I guess yeah I cannot offer any insight to this don't actually understand why we right shift to yeah, maybe but I do not know I think through different color recordings. They probably just forgot to mute the audio during export Notice the video doing a buzz sound and the learned guides once took notes Even I wanted to report the bug why would I forgot I also have issues with animations playing even though It's disabled sometimes still playing when switching pages or something. It's weird I don't know if it's javascript dynamically switching pages like youtube does instead of loading a new page from scratch Or a firefox thing Our fox iPad doesn't even load the images sometimes iOS reloads common random only happens like once a week One m7 left 99 gone in two hours Um, I will say also I do think it'd be cool for them to add their terminal output I don't it's another thing like I don't think we need to hold up this pr for it But maybe if they want to open a new pr With their terminal output it might be cool if they're willing to like I don't know What is it licensed was a license in that repo if they're like Willing to license under mit or the same thing we have this one Doesn't actually say All right Thank you to Jed Jedahan Eda han jedahan. Thank you to jedahan for this functionality super cool Go here. We will release this It'll go 160 I think right because that's new functionality Who's that inside? Uh by color matrix by color matrix Support okay, I just said thank you to them, but I also don't actually remember their name specifically my apologies friend That right jedahan it is. Yeah, sometimes github fills these in automatically when you get close and sometimes they don't it's weird like Started typing a bunch of this but it still didn't fill in They even have the beginning of it there And it's gone is that is this the and it's gone and it's gone And it's gone Okay, that is in that is what we are gonna have time for tonight even about 15 minutes over time usually I go about two hours So, um, I will wrap it up for now. I do hope everyone has a good rest of your evening Um, like I said before if anyone is interested in following along further, I'll be back tomorrow morning on my own channel um Working on that display. Oh api updates just updating examples for the new version of display. Oh api So, uh, I'll be back then that'll be at 10 a.m. Central time tomorrow. I'll drop links in the live broadcast chat on the discord Um, other than that, uh, just thank you to jedahan This was a cool functionality in this frame buff library. Uh, even though I don't have the Fact hardware to test it. I think it's still a pretty sweet thing Um, so thank you to them Thank you to everybody for hanging out in the chat and helping and offering up suggestions and ideas and questions and comments and everything else Appreciate it all of you. Uh, and yeah, I will see you all later. Thanks everybody