Press button, wait, press button again, repeat. There must be a better way! If that kind of interaction drives you nuts, you’ll probably appreciate [Tommy]’s buttonpusher, which has only one job: automate away some of the more boring parts of Nintendo’s Animal Crossing. On one hand the job the device does is very simple: press a button on the Nintendo joy-con in a preprogrammed pattern. There’s no feedback loop, it just dumbly presses and waits. But there are still quite a few interesting bits to this build.
For one thing, [Tommy] discovered that the little 9g RC servo can reliably exert enough force to press the button on the joy-con with the right adapter. He had assumed the servo would be too weak to do the job without a greater mechanical advantage, but a simple hammer-style actuator that attaches to the servo horn easily does the job. Well, it does as long as the servo and joy-con are held rigidly; his first version allowed a little too much wiggle in how well the parts were held, and button presses didn’t quite register. With a 3D-printed fixture to rigidly mount both the servo and the joy-con, things were fine.
In the process of making buttonpusher, which uses CircuitPython, [Tommy] created a tool to automate away another pesky task he was running into: circuitpython_tools was created to automatically watch for code changes, convert the .py files into (smaller) MicroPython bytecode .mpy files, then automatically deploy to the board. This saved [Tommy] a lot of time and hassle during development, but it was only necessary because he quickly ran out of memory on his M0 Metro Express board, and couldn’t fit his code in any other way.
Still, it’s a good example of how one project can sometimes spawn others, and lead to all kinds of lessons learned. You can see buttonpusher automate the crafting process in Animal Crossing in the video, embedded below.
Video game controller automation is a common project, especially for nondestructive hacks. People get pretty creative, and have even come up with ways to automate joystick movements.
The hack in itself is great. Just something to be very aware of is of course button wear-n-tear. AFAIK the joy-con I’d a Bluetooth device? So next hack could target that? :)
There is already JoyControl, which I’ve been using for a few things. https://github.com/mart1nro/joycontrol
I just use a 20 dollar turbo controller. Makes diving super easy too.
This was my first idea to automate the wishing on shooting stars, I instead made a plug in dongle that emulates a joycon controller using a arduino pro micro. Just plug it in and it hammers the A button so you don’t have to.
https://facelesstech.wordpress.com/2020/08/29/animal-crossing-automation/
Next up, automate all the buttons.
Since the game is somewhat predictable, add some colour/light sensors to different areas of the screen, a bit like a colour light gun, then have it play the game for you, while you do the usual, eat, sleep, work, loop, yourself. Essentially repeating lots of small task loops one after the other. Or perhaps even implement machine vision and an AI.
It’s a nice attempt, but way too slow.
1. Mashing a crafts faster. This machine doesn’t do that.
2. Mashing B or holding L will speed up dialogue. This machine doesn’t do that.