Most of us are aware that printf() is one of those functions that is considerably more complex under the hood, and capable of far more, than it may appear to be. But did you know that it is capable of Turing-complete computation?
[Nicholas] clearly steps through the theory, so give it a read. In short, a maze of arguments handles the logic of the game while an embedded scanf() reads user input, and printing the game board is always preceded by an escape code to clear the screen.
The mini-mobile phone [Jim Yang] got his hands on deserves a bit of background. Palm had the concept of a companion mobile phone, and this manifested itself in late 2018 as a cute palm-sized smartphone that one could carry around when one didn’t wish to haul along their “real” phone. This smaller and simpler phone was originally intended to share the same mobile number as one’s primary phone (though it has since been made able to work as a standalone device.)
Palm’s companion phone idea hasn’t really caught on in a commercial sense, but in a way, [Jim] is validating the concept. After getting it up and running, he attached it to his bike with a custom mount to enjoy the benefits of having a mobile phone along without actually risking his primary device.
After going through all the trouble of printing a part in resin, discovering it feels sticky or tacky to the touch is pretty unwelcome. Giving the model some extra ultraviolet (UV) curing seems like it should fix the problem, but it probably does not. So, what can be done?
The best thing to do with a sticky print is to immediately re-wash it in clean isopropyl alcohol (IPA) before the UV present in ambient light cures stray resin. If the part remains sticky after it is dry, more aggressive steps can be taken.
Test and programming fixtures are great time-savers for anyone who needs to deal with more than a handful of PCBs. Instead of plugging in connectors (or awkwardly holding probe tips or wires) to program some firmware or run tests, one simply pops a PCB into a custom fixture with one hand, and sips a margarita with the other while a program decides whether everything is as it should be. Test fixtures tend to be custom-made for specific board layouts, meaning one tester is needed per board or device type, but this work is easily justified by the huge time savings they offer.
The test unit looks like pretty familiar stuff at first glance: some hardware responsible for running the test program, laser-cut acrylic jig to hold a test PCB in a consistent position, spring-loaded pogo pins to make temporary electrical connections, and LEDs to clearly indicate PASS and FAIL states. The clever part is the way the fixture is designed to accommodate multiple board designs, and how it uses several 74LVC4066 quad bilateral switch ICs to take care of switching which pogo pins are connected and to where.
As mentioned, to be compatible with multiple boards there must be common design elements to exploit. In Sparkfun’s case, the through-hole connections on their breakout boards are all in a row with standard 0.1″ spacing. By using the aforementioned pogo pins and 4066 ICs, different pinouts can be accommodated and multiple board types can be used without any need to swap to different test hardware.
It all started when [Damien Walsh] got his hands on some surplus LED boards. Each panel contained 100 mini-PCBs hosting a single bright LED that were meant to be to be snapped apart as needed. [Damien] had a much better idea: leave them in their 20×5 array and design a driver allowing each LED to be controlled over WiFi. He was successful (a brief demo video is embedded down below after the break) and had a few interesting tips to share about the process of making it from scratch.
The first hurdle he ran into was something most of us can relate to; it’s difficult to research something when one doesn’t know the correct terms. In [Damien]’s case, his searches led him to a cornucopia of LED drivers intended to be used for room lighting or backlights. These devices make a large array of smaller LEDs act like a single larger light source, but he wanted to be able to individually address each LED.
Eventually he came across the IS32FL3738 6×8 Dot Matrix LED Driver IC from ISSI which hit all the right bases. Three of these would be enough to control the 100-LED panel; it offered I2C control and even had the ability to synchronize the PWM of the LEDs across multiple chips, so there would be no mismatched flicker between LEDs on different drivers. As for micontroller and WiFi connectivity, we all have our favorites and [Damien] is a big fan of Espressif’s ESP32 series, and used the ESP32-WROOM to head it all up.
The other issue that needed attention was wiring. Each of the LEDs is on its own little PCB with handy exposed soldering pads, but soldering up 100 LEDs is the kind of job where a little planning goes a long way. [Damien] settled on a clever system of using strips of copper tape, insulated by Kapton (a super handy material with a sadly tragic history.) One tip [Damien] has for soldering to copper tape: make sure to have a fume extractor fan running because it’s a much smokier process than soldering to wires.
A 3D-printed baffle using tracing paper to diffuse the light rounds out the device, yielding a 20 x 5 matrix of individually-controlled rectangles that light up smoothly and evenly. The end result looks fantastic, and you can see it in action in the short video embedded below.
xorSprite() plots an 8×8 sprite, moveSprite() moves a given sprite by one pixel without any flicker, and hitSprite() checks a sprite for collision with any screen elements in a given color. That is all it takes to implement a simple game, and [David] makes them easy to use, even providing a demo program in the form of the rolling ball maze shown here.
More people are making sourdough at home than ever before, and while it may not take a lot of effort to find a decent recipe, it’s quite another thing to try using recipes to figure out how and why bread actually works. Thankfully, [Makefast Workshop] has turned copious research and hundreds of trials into a dynamic sourdough (and semi-sourdough) bread recipe chock-full of of drop-down options to customize not just ingredients, but baking methods and other recipe elements as well. Want to adjust quantities or loaf styles? Play with hydration or flour type? It’s all right there, and they even have quick-set options for their personal favorites.
In order to do all this, [Makefast Workshop] needed to understand bread at a deeper level than is usually called for. During research, they observed that the format of recipes was often an obstacle to understanding how good bread actually gets made. The reason for this is simple: recipes are presented as standalone documents describing a fixed process; a set of specific steps that, when followed, yield a particular result. What they do not normally do is describe the interplay and balance between ingredients and processes, which makes it difficult to understand how and why exactly the recipe produces what it does. Without that knowledge, it’s impossible to know what elements can be adjusted, and how. The dynamic recipe changes all that.
[Makefast Workshop] performed hundreds of tests, dialing in parameters one by one, to gain the insights needed to populate their dynamic recipe. It’s got clear processes and drop-down options that dynamically update not just the recipe steps, but also the URL. This means that one can fiddle the recipe to one’s desire, then simply copy and paste the URL to keep track of what one has baked.