Writing A Virtual Machine In Excel

[Ádám] participates in a competition called KöMaL. It’s a 9-times-a-month journal for junior high and high school students featuring math and physics problems. [Paul Erdős], one of the most published mathematicians of all time, was a huge participant and by far the most notable student to crack open a copy of KöMaL in its hundred-year history. [Ádám] was trying his hand at a problem in Excel, but the official rules prohibit the use of Excel macros. In a daze, he came up with one of the most clever uses of Excel: building an assembly interpreter with the most popular spreadsheet program.

This is a virtual Harvard architecture machine without writable RAM; the stack is only lots and lots of IFs.  The instructions – mostly load, MOV, JNZ, INC, and CMP solves this problem, examining two inputs to see if they multiples of each other. If you’re wondering, an example cell from [Ádám]’s Excel sheet looks like this:

=F6
   INDEX($C$2:$C99999,$G2,1),
   IF(AND(INDEX($B$2:$B99999,$G2,1)="JZ",$I2=0),
      INDEX($C$2:$C99999,$G2,1),
         IF(AND(INDEX($B$2:$B99999,$G2,1)="JNZ",$I2<>0),
         INDEX($C$2:$C99999,$G2,1),
         G2+1
         )
      )
   )
)

[Ádám] has provided his Excel solution to the problem, available on the hackaday.io. It’s in Hungarian which really shouldn’t matter since it’s basically Excel and a pseudo-x86 instruction set. but the column labels will require a bit of Google Translate.

Student Trolls Anti-Arduino Prof With Parasite MCU

Like some of our grouchier readers, [PodeCoet]’s Digital Sub-Systems professor loathes everyone strapping an Arduino onto a project when something less powerful and ten times as complicated will do. One student asked if they could just replace the whole breadboarded “up counter” circuit mess with an Arduino, but, since the class is centered around basic logic gates the prof shot him down. Undeterred, our troll smuggled an MCU into a chip and used it to spell out crude messages.

No Arduino? No problem. It took him 4 tries but [PodeCoet] hollowed out the SN74LS47N display driver from the required circuit and made it the puppet of a PIC16F1503 controller. The PIC emulated the driver chip in every way – as ordered it showed the count up and down – except when left unattended for 15 seconds. Then instead of digits the PIC writes out “HELLO”, followed by three things normally covered by swimsuits and lastly a bodily function.

For such a simple hack it is wonderfully and humorously documented. There are annotated progress/failure pictures and video of the hack working.

It is not as elaborate as the microscopic deception in the infamously impossible 3 LED circuit, but it gets to the point sooner.

Continue reading “Student Trolls Anti-Arduino Prof With Parasite MCU”

What Is This Thing Called Linux?

It should come as no surprise that we at Hackaday love Linux above all others (that should start a nice little flamewar on the internal email list). If you still haven’t given it a whirl yet, don’t fear. Everyone starts from scratch at some point. With each passing year it becomes more and more likely that knowing something about Linux will eventually benefit every hardware hacker. Take part of your time off in the coming weeks to give it a whirl. First thing’s first, check out this quick guide on what Linux actually is.

Adafruit’s offering is pretty low level, so if you’re the kind that likes to argue “kernel” versus “OS” please keep it to yourself. For us the important distinction pointed out here is microcontroller (Arduino) versus Raspberry Pi. The Pi generally runs one flavor or another of Linux for good reasons, while microcontroller-driven systems tend to run use-specific code (with the exception of projects that leverage Real Time Operating Systems). Of course it extends past pre-fab options, Linux is a popular choice on bare-bones roll-your-own machines.

This is the year of Linux! Ha, we’ve heard that one every year for at least a decade. To us it makes no difference, you should know a bit about each OS out there. What are you waiting for? Read the guide then download (for free!) a CD image of our current favorite Linux flavor.

8-Bit Chip Rocks 16-Bit 44.1kHz Tunes

There’s a special place in our hearts for chip tunes generated with your favorite microcontroller. But why stop there? Full-featured audio is a great challenge and it’s not often we see examples of this caliber. It puts out CD-quality audio using not much more than a microcontroller.

How do you get 16-bit audio out of an 8-bit microcontroller. We’ll give you a hint: two pins are used. Not helping? Here it comes: two 8-bit DACs PWM outputs are used on this chip, the ATmega1284. One is used for the lower eight bits, the other handles the upper. The two are combined using carefully calculated precision resistor values and the results are beyond what you imagine. This is produced at a bitrate of 44077.135, slightly off from the 44100Hz standard but we challenge you audiophiles to tell the difference. The wave files are served from an SD card read by the chip using the Petit-FatFs library.

There are so many great things about this project. First off, following [Wancheng Zhou’s] example will let anyone with even basic microcontroller skills build a digital audio player for an [Andrew Jackson] and a couple of [Washingtons]. Secondly, those with a medium uC skill level will want to take the idea and implement/debug it for themselves. Bringing it home, [Wancheng] shows how to gauge the quality of the audio output using FFT.

If you didn’t figure it out by the time of year, this is yet another example of a Cornell ECE 4760 final project. Shout out to [Bruce Land] for inspiring awesome projects and requiring extensive documentation of the projects which itself promotes deeper understand all around.

Continue reading “8-Bit Chip Rocks 16-Bit 44.1kHz Tunes”

Secret Attic Library Door

We have a pretty good guess where [Krizbleen] hides away any seasonal presents for his family: behind his shiny new secret library door. An experienced woodworker, [Krizbleen] was in the process of finishing the attic in his home when he decided to take advantage of the chimney’s otherwise annoying placement in front of his soon-to-be office. He built a false wall in front of the central chimney obstacle and placed a TV in the middle of the wall (directly in front of the chimney) flanked on either side by a bookcase.

If you touch the secret book or knock out the secret sequence, however, the right-side bookcase slides gently out of the way to reveal [Krizbleen’s] home office. Behind the scenes, a heavy duty linear actuator pushes or pulls the door as necessary, onto which [Krizbleen] expertly mounted the bookcase with some 2″ caster wheels. The actuator expects +24V or -24V to send it moving in one of its two directions, so the Arduino Uno needed a couple of relays to handle the voltage difference.

The effort spent here was immense, but the result is seamless. After borrowing a knock-detection script and hooking up a secondary access button concealed in a book, [Krizbleen] had the secret door he’d always wanted: albeit maybe a bit slow to open and close. You can see a video of its operation below.

Continue reading “Secret Attic Library Door”

WiFi Lamp Challenge – 5 Hour Speedrun

“We want to get this done quick, not right.”

[CNLohr]’s favorite desk lamp broke, so he gave himself a challenge: convert the lamp to LED and control it via WiFi within 5 hours, from scratch. He video recorded and narrated the whole process and did a nice job of explaining the tricky parts and failures along the way, fast forwarding us through the slow parts.

Some bits and pieces were simple and obvious: gut the old bulb, wire some LEDs, add a few power resistors, toss in a power supply from “like a monitor or something, don’t care” for the LEDs, add in what looks like an LM2596 adjustable power supply for the logic, some kind of ATMega, that new ESP8266 (Wi07C), splice on a power cord, etc. Standard stuff.

To our readers who’s hacks tend to start with soldering irons and screwdrivers, the video shows harder parts of designing an electronics project: creating the PCB in software (he used KiCad), lithographically transferring the circuit to a PCB, bismuth solderpasting & populating the board, and writing and documenting his code on Github. Perhaps most reassuringly, he also showed the consequences of every greedy shortcut and the process of troubleshooting around them.

If you have ever tried to follow a recipe from a cooking show and noticed how easy it all seems when everything is measured and prepped beforehand – and then what a disaster it is when you try it – the same is revealed here. Overall, it is a very thorough demonstration of what it actually takes to design a project – not just perfect circuits and perfect steps to follow.

In the end he got it done in the nick of time an hour late because he cannot add. Close enough.

Thanks [gokkor] for the tip.

Trinket EDC Contest Entry: Can I Borrow A Feeling?

We got a case of the Mondays just reading about [Sascha]’s work environment. Get this: every morning, first thing, the whole team gets together to check in and share how they’re all feeling. And they can’t even be candid about it—there’s actually an approved list of feeling descriptors, both good and bad. It’s an admittedly big list that includes, interestingly enough, both ‘tortured’ and ’embarrassed’. Yeah. We think something like group t’ai chi on the roof each morning sounds a lot more relaxing. Since [Sascha] is between a rock and a hard place on this one, it was time to let chance take over. He raised his HaD-imprinted Trinket skyward and Can I Borrow a Feeling? was born.

The gist is simple: [Sascha] abstracts his disposition out to either ‘good’ or ‘bad’ and pushes the corresponding button. The Trinket accesses an array and returns a randomly selected feeling to the LCD. Since the official list of feelings is about 300 words long, [Sascha] has to push the data into PROGMEM. He used good old Excel to split the list in twain, and her formulas came in very handy for centering the result on the LCD. Once [Sascha] knew how it would all fit together, he designed a cool enclosure in CorelDRAW and turned on the laser cutter. See the Spreadsheet of Acceptable Words for yourself on GitHub, and pick up the code and enclosure file while you’re there.

There’s still time to enter the Trinket Everyday Carry Contest.  The main contest runs until January 2, but we’re having random drawings every week! Don’t forget to write a project log before the next drawing at 9pm EST on Tuesday, December 30th. You and all of the other entrants have a chance to win a Teensy 3.1 from The Hackaday Store!