Speed Up Arduino With Clever Coding

We love Arduino here at Hackaday; they’ve probably done more to make embedded programming accessible to more people than anything else in the history of the field. One thing the Arduino ecosystem is rarely praised for is its speed. That’s where [Playduino]  comes in, with his video (embedded below) that promises to make everyone’s favourite microcontroller run 50x faster.

You might be expecting an unstable overclocking setup, with swapped crystals, tweaked voltages and a hefty heat sink, but no! This is stock hardware. The 50x speedup comes from one simple hack: don’t use digitalWrite();

If you aren’t familiar, the digitalWrite() function is one of the key functions Arduino gives you to operate its boards– specify the pin and the value (high or low) to drive it. It’s very easy, but it’s also very slow. [Playduino] takes a moment to show just how much is going on under the hood when you call digitalWrite(), and shows you what you can do instead if you have a need for speed. (Hint: there’s no Arduino-provided code involved; hardware registers and the __asm keyword show up.)

If you learned embedded programming in an earlier era, this will probably seem glaringly obvious. If you, like so many of us, got started inside of the Arduino ecosystem, these closer-to-the-metal programming techniques could prove useful tools in your quiver. Big thanks to [Stephan Walters] for the tip.

Of course if you prefer to speed things up by hardware rather than software, you can overclock an Arduino– with liquid nitrogen, even.

Continue reading “Speed Up Arduino With Clever Coding”

Trekulator: A Reproduction Of The 1977 Star Trek Themed Calculator

A recent project over on Hackaday.io from [Michael Gardi] is Trekulator – Where No Maker Has Gone Before.

This is a fun build and [Michael] has done a very good job of emulating the original device. [Michael] used the Hackaday.io logging feature to log his progress. Starting in September 2024 he modeled the case, got his original hardware working, got the 7-segment display working, added support for sound, got the keypad working and mounted it, added the TFT display and mounted it, wired up the breadboard implementation, designed and implemented the PCBs, added some finishing touches, installed improved keys, and added a power socket back in March.

Continue reading “Trekulator: A Reproduction Of The 1977 Star Trek Themed Calculator”

Programmer’s Macro Pad Bangs Out Whole Functions

Macro pads are handy for opening up your favorite programs or executing commonly used keyboard shortcuts. But why stop there?

That’s what [Jeroen Brinkman] must have been thinking while creating the Programmer’s Macro Pad. Based on the Arduino Pro Micro, this hand-wired pad is unique in that a single press of any of its 16 keys can virtually “type” out multiple lines of text. In this case, it’s a capability that’s being used to prevent the user from having to manually enter in commonly used functions, declarations, and conditional statements.

For example, in the current firmware, pressing the “func” key will type out a boilerplate C function:

int () { //
;
return 0;
}; // f 

It will also enter in the appropriate commands to put the cursor where it needs to be so you can actually enter in the function name. The other keys such as “array” and “if” work the same way, saving the user from having to enter (and potentially, even remember) the correct syntax.

The firmware is kept as simple as possible, meaning that the functionality of each key is currently hardcoded. Some kind of tool that would let you add or change macros without having to manually edit the source code and flash it back to the Arduino would be nice…but hey, it is a Programmers Macro Pad, after all.

Looking to speed up your own day-to-day computer usage? We’ve covered a lot of macro pads over the years, we’re confident at least a few of them should catch your eye.

Clock Mechanism Goes Crazy For Arduino

You’ve doubtless seen those ubiquitous clock modules, especially when setting clocks for daylight savings time. You know the ones: a single AA battery, a wheel to set the time, and two or three hands to show the time. They are cheap and work well enough. But [Playful Technology] wanted to control the hands with an Arduino directly and, in the process, he shows us how these modules work.

If you’ve never studied the inside of these clock modules, you may be surprised about how they actually work. A crystal oscillator pulses a relatively large electromagnet. A small plastic gear has a magnetic ring and sits near the electromagnet.

Each time the polarity of the electromagnet flips, the ring turns 180 degrees to face the opposite magnetic pole to the electromagnet. This turns the attached gear which is meshed with other gears to divide the rotation rate down to once per 24 hours, once per hour, and once per minute. Pretty clever.

That makes it easy to control the hands. You simply detach the electromagnet from the rest of the circuit and control it yourself. The module he used had a mechanical limitation that prevents the hands from moving well at more than about 100 times normal speed.

We wondered how he made the hands reverse and, apparently, there is a way to get the drive gear to move in reverse, but it isn’t always reliable. Of course, you could also replace the drive mechanism with something like an RC servo or other motor and it sounds like he has done this and plans to show it off in another video.

We’ve seen the opposite trick before, too. If you really want an easy-to-control analog clock, try this one Continue reading “Clock Mechanism Goes Crazy For Arduino”

self-stabilizing robot on tabletop

Taming The Wobble: An Arduino Self-Balancing Bot

Getting a robot to stand on two wheels without tipping over involves a challenging dance with the laws of physics. Self-balancing robots are a great way to get into control systems, sensor fusion, and embedded programming. This build by [mircemk] shows how to make one with just a few common components, an Arduino, and a bit of patience fine-tuning the PID controller.

At the heart of the bot is the MPU6050 – a combo accelerometer/gyroscope sensor that keeps track of tilt and movement. An Arduino Uno takes this data, runs it through a PID loop, and commands an L298N motor driver to adjust the speed and direction of two DC motors. The power comes from two Li-ion batteries feeding everything with enough juice to keep it upright. The rest of the magic lies in the tuning.

PID (Proportional-Integral-Derivative) control is what makes the robot stay balanced. Kp (proportional gain) determines how aggressively the motors respond to tilting. Kd (derivative gain) dampens oscillations, and Ki (integral gain) helps correct slow drifts. Set them wrong, and your bot either wobbles like a confused penguin or falls flat on its face. A good trick is to start with only Kp, then slowly add Kd and Ki until it stabilizes. Then don’t forget to calibrate your MPU6050; each sensor has unique offsets that need to be compensated in the code.

Once dialed in, the result is a robot that looks like it defies gravity. Whether you’re hacking it for fun, turning it into a segway-like ride, or using it as a learning tool, a balancing bot is a great way to sharpen your control system skills. For more inspiration, check out this earlier attempt from 2022, or these self-balancing robots (one with a little work) from a year before that. You can read up on [mircemk]’s project details here.

Piano Gets An Arduino Implant

[Paul] likes his piano, but he doesn’t know how to play it. The obvious answer: program an Arduino to do it. Some aluminum extrusion and solenoids later, and it was working. Well, perhaps not quite that easy — making music on a piano is more than just pushing the keys. You have to push multiple keys together and control the power behind each strike to make the music sound natural.

The project is massive since he chose to put solenoids over each key. Honestly, we might have been tempted to model ten fingers and move the solenoids around in two groups of five. True, the way it is, it can play things that would not be humanly possible, but ten solenoids, ten drivers, and two motors might have been a little easier and cheaper.

The results, however, speak for themselves. He did have one problem with the first play, though. The solenoids have a noticeable click when they actuate. The answer turned out to be orthodontic rubber bands installed on the solenoids. We aren’t sure we would have thought of that.

Player pianos, of course, are nothing new. And, yes, you can even make one with a 555. If a piano isn’t your thing, maybe try a xylophone instead.

Continue reading “Piano Gets An Arduino Implant”

Blinds Automated With Offline Voice Recognition

Blinds are great for keeping light out or letting light in on demand, but few of us appreciate having to walk over and wind them open and shut on the regular. [DIY Builder] resented this very task, so set about creating an automated system to do the job for him.

The blinds in question use a ball chain to open and close, which made them relatively easy to interface with mechanically. [DIY Builder] set up a NEMA 17 stepper motor with an appropriate 3D-printed gear to interface with the chain, allowing it to move the blinds accurately. The motor is controlled via an Arduino Nano and an A4988 stepper motor driver.

However, that only covered the mechanical side of things. [DIY Builder] wanted to take the build a step further by making the blinds voice activated. To achieve this, the Arduino Nano was kitted out with a DFRobot Gravity voice recognition module. It’s a super simple way to do voice recognition—it’s an entirely offline solution with no cloud computing or internet connection required. You just set it up to respond to simple commands and it does the rest.

The result is a voice activated blind that works reliably whether your internet is up or not. We’ve seen some other great projects in this space, too. Video after the break.

Continue reading “Blinds Automated With Offline Voice Recognition”