This Arduino Terminal Does All The Characters

The job of a dumb terminal was originally to be a continuation of that performed by a paper teletype, to send text from its keyboard and display any it receives on its screen. But as the demands of computer systems extended beyond what mere ASCII could offer, their capabilities were extended with extra characters and graphical extensions whose descendants we see in today’s Unicode character sets and thus even in all those emojis on your mobile phone. Thus a fully-featured terminal has a host of semigraphics characters from which surprisingly non-textual output can be created. It’s something [Michael Rule] has done some work on, with his ILI9341TTY, a USB serial terminal monitor using an Arduino Uno and an ILI9341 LCD module that supports as many of the extended characters as possible.

A graph, entirely in Unicode characters.
A graph, entirely in Unicode characters.

It’s fair to say that most of us who regularly use a terminal don’t go far beyond the ASCII, as it’s likely that a modern terminal will sit in a window over a desktop GUI. So even if you have little use for a hardware terminal monitor there’s still plenty of interest to be found in those rarely-seen character sets. Our favourite is probably the Symbols for Legacy Computing, an array of semigraphics characters that may be familiar to readers who have used an 8-bit home computer or two. He includes a graph example using these characters coloured with ANSI escape codes, and it’s certainly not what you expect from a terminal.

If microcontroller terminals capture your interest, this isn’t the first we’ve brought you.

A game board with five LEDs and a hand shining a laser pointer at it

Laser Pointer And Arduino Make A Minimalistic Shooting Game

Video games are great and all, but sometimes you just want the thrill of manipulating actual objects in addition to watching action on a screen. This must have been the reason why Nintendo’s Duck Hunt became so popular despite the simplicity of its gameplay. Prolific hacker [mircemk] similarly made a computer-plus-physical game called “Laser Shooter“, which somehow reminds us of the good old NES game.

The game is based on an Arduino Nano, to which five LEDs as well as five photoresistors (LDRs) are connected. When the game is started, the LEDs light up at random and the player has a limited time to “shoot” the corresponding LDR with a laser pointer. This time limit is decreased as the game progresses, and the game is over once the player fails to hit the target on time. The “Game Over” message is accompanied by a sad tune, but luckily no giggling dog.

Complete schematics and code are available for anyone willing to try their hand at replicating or improving this game. And no, you can’t simply sweep your laser across the five LDRs all the time, because you lose if you shoot at the wrong target. For more laser pointer-based games, try this Laser Command clone or this laser tag badge system.

Continue reading “Laser Pointer And Arduino Make A Minimalistic Shooting Game”

Arduino Brings USB Mouse To Homebrew Computer

When building your own homebrew computer, everything is a challenge. Ultimately, that’s kind of the point. If you didn’t want to really get your hands dirty with the nuts and bolts of the thing, you wouldn’t have built it in the first place. For example, take the lengths to which [rehsd] was willing to go in order to support standard USB mice on their 6502 machine.

Code for mapping mouse movement to digital output.

The idea early on was to leverage existing Arduino libraries to connect with a standard USB mouse, specifically, the hardware would take the form of an Arduino Mega 2560 with a USB Host Shield. There was plenty of code and examples that showed how you could read the mouse position and clicks from the Arduino, but [rehsd] still had to figure out a way to get that information into the 6502.

In the end, [rehsd] connected one of the digital pins from the Arduino to an interrupt pin on the computer’s W65C22 versatile interface adapter (VIA). Then eleven more digital pins were connected to the computer, each one representing a state for the mouse and buttons, such as MOUSE_CLICK_RIGHT and MOUSE_LEFT_DOWN.

Admittedly, [rehsd] says the mouse action is far from perfect. But as you can see in the video after the break, it’s at least functional. While the code could likely be tightened up, there’s obviously some improvements to be made in terms of the electrical interface. The use of shift registers could reduce the number of wires between the Arduino and VIA, which would be a start. It’s also possible a chip like the CH375 could be used, taking the microcontroller out of the equation entirely.

From classic breadboard builds to some impressively practical portable machines, we’ve seen our fair share of 6502 computers over the years. Despite the incredible variation to be found in these homebrew systems, one thing is always the same: they’re built by some of the most passionate folks out there.

Continue reading “Arduino Brings USB Mouse To Homebrew Computer”

Arduino Nano Floppy Emulator For When Your Disk Is Not Accessible

Among the plethora of obsolete removable media there are some which are lamented, but it can be difficult to find those who regret the passing of the floppy disk. These flexible magnetic disks in hard plastic covers were a staple of computing until some time in the early 2000s, and their drives could be found by the crateload in any spares box. But what about today, when there’s a need for a real floppy drive and none is to be found? Enter [Acemi Elektronikci], with an Arduino Nano based floppy emulator, that plugs into the floppy port of a PC old enough to have one, and allows the easy use of virtual floppy disks.

Aside from the Nano it has an SD card and associated level shifter, and an SSD1306 i2c screen. Most of the Arduino’s lines drive the floppy interface, so the five-button control comes to a single ADC pin via a resistor ladder. He freely admits that it’s not a perfect cycle-exact emulator of original hardware and there may be machines or even operating systems that complain when faced with it, but for all that it is a useful tool. One of the machines that may have issues is the Amiga, but fortunately there’s a fix for that with a Raspberry Pi.

Arduino Becomes Superhet With A Little Help From Friends

A radio receiver is always a fun project. [Jayakody2000lk] decided that his new superheterodyne design would use an Arduino and it looks like it came out very nicely. The system has four boards. An off-the-shelf Arduino, a Si5351 clock generator board (also off-the-shelf), and two custom boards that contain the IF amplifier and mixer.

The receiver started out in 2015 without the Arduino, and there’s a link in the post to that original design. Using the Si5351 and the Arduino replaces the original local oscillator and there have been other improvements, as well. You can see a video about the receiver below.

Tuning is by a rotary encoder and the current software lets you tune from about 4.75 MHz to a little over 15.8 MHz. Of course, you could change to any frequency the Si5351 can handle as long as the mixer and other components can handle it. The IF frequency is the usual 455 kHz.

If you decide to build this yourself, the design files are on GitHub. Overall a very nice and neat design. We are always amazed how little radio architecture has changed since Edwin Armstrong’s day. Of course, we have better components, even if they aren’t meant for radio purposes.

Continue reading “Arduino Becomes Superhet With A Little Help From Friends”

Dial A For Arduino

A lot of phrases surrounding phones don’t make sense anymore. With a modern cellphone, you don’t really “hang up” and there’s certainly no “dial” to be had. However, with [jakeofalltrades’] project, you can read an old-fashioned phone dial using an Arduino.

The idea behind a phone dial is actually pretty simple. When you pull the dial back to the stop using one of the numbered holes and release it, it causes a switch to open and close the same number of times as the hole you selected. That is, if you pull back the 5 hole, you should get 5 switch closures. The duration of each switch event and the time between switch events is a function of the speed the dial moves because of its internal spring. The zero hole actually produces ten pulses.

There are standards for how precise the timing has to be, but — honestly — it’s pretty loose since these were not made to be read by precise microcontroller timers. In the United States, for example, the dial was supposed to produce between 9.5 and 10.5 pulses per second, but the equipment on the other end would tolerate anything from 8 to 11.

Even if you don’t want a rotary dial in your next project, the code has some good examples of using ATmega328 timers that you might find useful in another context. However, a dial would add a nice retro touch to any numeric input you might happen to need.

If you need project inspiration, how about a volume control? Or, why not a numeric keypad?

Using Arduinos To Drive Undocumented Displays

For those of us old enough to remember the VCR (and the difficulty of programming one), the ubiquitous vacuum fluorescent display, or VFD, is burned into our memories, mostly because of their brightness and contrast when compared to the superficially-similar LCD. These displays are incredibly common even apart from VCRs, though, and it’s easy to find them for next to no cost, but figuring out how to drive one if you just pulled it out of a 30-year-old VCR is going to take some effort. In this build, [mircemk] shows us how he drives unknown VFD displays using an Arduino in order to build his own weather forecasting station.

For this demonstration [mircemk] decided to turn a VFD into a weather forecasting station. First of all, though, he had to get the VFD up and running. For this unit, which came from a point-of-sale (POS) terminal, simply connecting power to the device turned on a demo mode for the display which let him know some information about it. From there, and with the knowledge that most POS terminals use RS232 to communicate, he was able to zero in on the Rx and Tx pins on the on-board microcontroller and interface them with an Arduino. From there it’s a short step to being able to output whatever he wanted to this display.

For this project, [mircemk] wanted the display to output information about weather, but rather than simply pull data from some weather API he is actually using a sensor suite connected to the Arduino to measure things like barometric pressure in order to make a 12-hour forecast. The design is inspired by old Zambretti weather forecasters which used analog wheels to input local weather data. It’s an interesting build not only for the VFD implementation but also for attempting to forecast the weather directly with just a tiny sensor set instead of downloading a forecast to display. To do any better with your own forecasts, you’d likely need your own weather station.

Continue reading “Using Arduinos To Drive Undocumented Displays”