Intro
FOK-GYEM VISINFORM was a brand of electro-mechanical flip-dot display. Their working principle is simple: An electromagnet forces a small, magnetized "pixel" to flip from the black-painted side to the other, usually white- or yellow-painted side.
A while ago, I managed to get my hands on a few 7x24 pixel modules for which we were able to create a custom controller board with a few friends. One of our first ideas, apart from running Doom and Bad Apple!! on it, was to play Tetris on it. This made exactly that possible.
Testing the game on final
hardware for the first time
Tech stack
- Arduino Uno R3 - the microcontroller at the heart of the project
- C++ for Tetris
- C for the custom driver board's driver software
- PlatformIO for development
Researchers' Night 2024 and BKV Bus Garages
On September 27, 2024, this project was displayed at the Researchers' Night event at Óbuda University. An older, simpler version of this project has been on display at multiple BKV bus garages during open-day events. The professor of one of my friends, who was also showcasing at one of these open-day events, approached me and asked if I was interested in joining their stand, which I gladly accepted. Archived event link: app.kutatokejszakaja.hu
The display show
at Kelenföld Bus Garage; Tetris showcased on the right.
Details
This project consists of the Tetris game code and a physical controller. Tetris itself is made in C++, while the driver for the board (which was not changed much for this project) is written in C.
The hardware side of the project is also simple: Our existing custom driver boards were used. The controller keypad consists of basic microswitches wired directly to the Arduino's GPIO pins.
The Controller keypad connected
to the Arduino through the controller board
This project's specialty is the multiplatform implementation: The same code base (except for the platform-specific IO parts) can be used to compile the game for both an Arduino with a FOK-GYEM driver hat and a PC running Windows or Linux. See the README in the project files for more details.