What makes a game a game? Like, how do we know that we’re looking at a variation of PONG when confronted with one? And how do we know how to play it? [Bertho] sought to answer this question as he designed what is probably the smallest-ever 1-D PONG game. His answer involves charlieplexing LEDs, using a voltage divider to save I/O pins, and a couple of AAAs that should last for a long, long time.
[Bertho]’s Minimum 1-D PONG, or m1dp for short, puts an ATTiny85 through its paces as gameplay quickly progresses from ‘I got this’ to ‘no one could possibly keep this up’. This state machine sleeps until one of the two buttons is pressed, at which time a wait animation starts. The action begins with the next button press.
Game play across only five LEDs makes for some pretty intense action, too. Fortunately, the buzzer is a big part of the experience. It sounds one tone for each LED when the ball is in play, and a different tone to confirm button presses. [Bertho] saved so many I/O pins with charlieplexing that he added a green LED that lights up when it’s OK to return the ball. If we were playing, we’d keep our eye on this LED instead of trying to watch the ball. We’re serving the demo after the break point, so don’t let it get past you.
For a study in minimalism, there sure is a lot going on here with all the different tones and animations. If you’d prefer maximalist 1-D PONG, there’s always LED strips. If dungeon crawlers with satisfying hardware are more your thing, you really need to check out Twang.
Continue reading “Minimum Viable 1-D PONG”
Everyone recognizes Tetris, even when it’s tiny Tetris played sideways on a business card. [Michael Teeuw] designed these PCBs and they sport small OLED screens to display contact info. The Tetris game is actually a hidden easter egg; a long press on one of the buttons starts it up.
It turns out that getting a playable Tetris onto the ATtiny85 microcontroller was a challenge. Drawing lines and shapes is easy with resources like TinyOLED or Adafruit’s SSD1306 library, but to draw those realtime graphics onto the 128×32 OLED using that method requires a buffer size that wouldn’t fit the ATtiny85’s available RAM.
To solve this problem, [Michael] avoids the need for a screen buffer by calculating the data to be written to the OLED on the fly. In addition, the fact that the smallest possible element is a 4×4 pixel square reduces the overall memory needed to track the screen contents. As a result, the usual required chunk of memory to use as a screen buffer is avoided. [Michael] also detailed the PCB design and board assembly phases for those of you interested in the process of putting together the cards using a combination of hot air reflow and hand soldering.
PCB business cards showcase all kinds of cleverness. The Magic 8-Ball Business Card is refreshingly concise, and the project that became the Arduboy had milled cutouts to better fit components, keeping everything super slim.
If you’re in the electronics business, PCB business cards seem like a natural fit. They may be impractical and expensive, but they can really set you apart from that boring paper card from Vistaprint crowd. But they need to make sense for what you do, so for a musician and MIDI pro, this MIDI-controller stylophone business card is a real eye- and ear-catcher.
This business card is an idea that [Mitxela] has been kicking around for a while, and he even built a prototype a couple of years ago. The homebrew card, made using the spray paint, laser etching, and ferric chloride method, worked well enough as a proof of concept, but it was a little rough around the edges and needed the professional touch of a PCB fabricator. We’ve got to say that the finished cards are pretty darn sexy, with the black resist contrasting nicely against the gold-immersion pads. He selected a 1-mm thick board and made the USB connector as a separate small board; snapped off of the main board and reflowed back on, it builds up the edge connector to the proper thickness. The parts count is low — just an ATtiny85 and a resistor ladder to encode each key, with a simple jumper used as the stylus. The device itself is just a MIDI controller and makes no music on its own, but we still think this is a pretty creative way to hang out a shingle.
[Mitxela] has quite a few interesting builds, and is no stranger to our pages. Check out his recent servo-plucked MIDI music box, or these amazing miniature LED earrings.
Continue reading “Stylish Business Card with a Stylophone Built In”
Hardware development often involves working with things that can’t be directly perceived, which is one reason good development tools are so important. In appreciation of this, [David Johnson-Davies] created the IR Remote Control Detective to simplify working with IR signals. While IR remote controls are commonplace, there are a number of different protocols and encoding methods in use across different brands. The IR Detective takes care of all of that with three main components, none of which are particularly expensive. To use the decoder, one simply points an IR remote at the unit and presses one of the buttons. The IR Detective will identify the protocol, decode the signal, and display the address and command related to the key that was pressed. The unit doesn’t consist of much more than an ATtiny85 microcontroller, a small OLED display, and an IR receiver unit. The IR receiver used is intended for a 38 kHz carrier, but such receivers can and do respond to signals outside this frequency, although they do so at a reduced range.
As a result, not only is the unit useful for decoding IR or verifying that correct signals are being generated, but the small size and low cost means it could easily be used as a general purpose receiver to add IR remote control to other devices. It’s also halfway to bridging IR to something else, like this WiFi-IR bridge which not only interfaces to legacy hardware, but does it across WiFi to boot.
It’s hard to quit smoking. Trust us, we know. Half the battle is wanting to quit in the first place. Once you do, the other half is mostly fighting with yourself until enough time goes by that food tastes better, and life looks longer.
[Danko] recently quit smoking. And because idle hands are Big Tobacco’s tools, he kept himself busy through those torturous first few days by building a piece of pocket-sized motivation. This little board’s main purpose is to help him root for himself by showing the time elapsed since his final cigarette, the number of cigarettes he has avoided, and all the money he’s saved since then. At the press of a button, he can reflect on the exact moment he took the plunge into Cold Turkey Lake.
Sure, there are apps that’ll do the same thing. But anyone who’s ever tried to quit smoking knows how important it is to stay busy every minute while your brain deals with the lack of toxins. It runs on an ATtiny85 and a DS1307 RTC chip. Looks to us like [Danko] adapted a board from a different project, and we love it when that’s a possibility.
Not a smoker? Good for you. The next hardest thing humans motivate themselves to do is exercise. That’s a lifelong battle that can definitely be improved with some gamification.
Continue reading “Former Smoker Now Pats Pockets for Motivation”
For the last thirty or so years, the demoscene community has been stretching what is possible on computer systems with carefully crafted assembly and weird graphical tricks. What’s more impressive is hand-crafted assembly code pushing the boundaries of what is possible using a microcontroller. Especially small microcontrollers. In what is probably the most impressive demo we’ve seen use this particular chip, [AtomicZombie] is bouncing boing balls on an ATtiny85. It’s an impressive bit of assembly work, and the video is some of the most impressive stuff we’ve ever seen on a microcontroller this small.
First, the hardware. This is just about the simplest circuit you can build with an ATtiny85. There’s an ISP header, a VGA port with a few resistors, a 1/8″ audio jack driven by a transistor, and most importantly, a 40MHz crystal. Yes, this ATtiny is running far faster than the official spec allows, but it works.
The firmware for this build is entirely assembly, but surprisingly not that much assembly. It’s even less if you exclude the hundred or so lines of definitions for the Boing balls.
The resulting code spits out VGA at 204×240 resolution and sixty frames per second. These are eight color sprites, with Alpha, and there’s four-channel sound. This is, as far as we’re aware, the limit of what an ATtiny can do, and an excellent example of what you can do if you buckle down and write some really tight assembly.
Continue reading “Racing The Beam On An ATtiny”
It’s easy to have a soft spot for “mini” yet perfectly functional versions of electronic workbench tools, like [David Johnson-Davies]’s Tiny Function Generator which uses an ATtiny85 to generate different waveforms at up to 5 kHz. It’s complete with a small OLED display to show the waveform and frequency selected. One of the reasons projects like this are great is not only because they tend to show off some software, but because they are great examples of the kind of fantastic possibilities that are open to anyone who wants to develop an idea. For example, it wasn’t all that long ago that OLEDs were exotic beasts. Today, they’re available off the shelf with simple interfaces and sample code.
The Tiny Function Generator uses a method called DDS (Direct Digital Synthesis) on an ATtiny85 microcontroller, which [David] wrote up in an earlier post of his about waveform generation on an ATtiny85. With a few extra components like a rotary encoder and OLED display, the Tiny Function Generator fits on a small breadboard. He goes into detail regarding the waveform generation as well as making big text on the small OLED and reading the rotary encoder reliably. His schematic and source code are both available from his site.
Small but functional microcontroller-based electronic equipment are nifty projects, and other examples include the xprotolab and the AVR-based Transistor Tester (which as a project has evolved into a general purpose part identifier.)