The Mouse Language, Running On Arduino

Although plenty of us have our preferred language for coding, whether it’s C for its hardware access, Python for its usability, or Fortran for its mathematic prowess, not every language is specifically built for problem solving of a particular nature. Some are built as thought experiments or challenges, like Whitespace or Chicken but aren’t used for serious programming. There are a few languages that fit in the gray area between these regions, and one example of this is MOUSE, which can now be run on an Arduino.

Although MOUSE was originally meant to be a minimalist language for computers of the late 70s and early 80s with limited memory (even for the era), its syntax looks more like a more modern esoteric language, and indeed it arguably would take a Python developer a bit of time to get used to it in a similar way. It’s stack-based, for a start, and also uses Reverse Polish Notation for performing operations. The major difference though is that programs process single letters at a time, with each letter corresponding to a specific instruction. There have been some changes in the computing world since the 80s, though, so [Ivan]’s version of MOUSE includes a few changes that make it slightly different than the original language, but in the end he fits an interpreter, a line editor, graphics primitives, and peripheral drivers into just 2 KB of SRAM and 32 KB Flash so it can run on an ATmega328P.

There are some other features here as well, including support for PS/2 devices, video output, and the ability to save programs to the internal EEPROM. It’s an impressive setup for a language that doesn’t get much attention at all, but certainly one that threads the needle between usefulness and interesting in its own right. Of course if a language where “Hello world” is human-readable is not esoteric enough, there are others that may offer more of a challenge.


Image Credit: Maxbrothers2020

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”