lopuh@void:~/projects/wheel_simulator$

// arduino steering wheel controller

$ stat project.info
Name: wheel_simulator
Type: arduino game controller
Interface: Serial (9600 baud)
Status: "functional prototype"
Inputs: "potentiometer + 2 buttons"

$ mpv demo.mp4

demo.mp4 [steering wheel in action]

$ cat features.txt

- potentiometer input
    smooth steering with analog input

- dedicated buttons
    gas and brake pedal simulation

- LCD display feedback
    real-time speed, direction, factor

$ cat components.txt

- arduino uno
    main microcontroller

- potentiometer
    10kΩ linear for steering

- push buttons (x2)
    tactile switches for gas/brake

- LCD display with I2C
    1602A + I2C converter

$ cat how_it_works.txt

Raw input values from the board are formatted
and sent over serial connection to computer.

Communication: /dev/ttyUSB0 @ 9600 baud
Game listens for data, parses received string
and updates car movement accordingly.

// Pin Configuration
Buttons: pin 2 and 3 (digital input)
LCD: A4 (SDA), A5 (SCL) for I2C
Potentiometer: A0 (analog input)

$ ls -la media/

Setup Photo 1
setup.png
Setup Photo 1
setup2.jpg

$ feh game.png

Game Screenshot
game.png [2D driving game]

$ cat TODO.md

[ ] custom driver
    make a real controller out of it (??)

[ ] improve the game
    from 2D to 3D graphics
    better movement physics

[ ] add acceleration
    smooth movement on steering
    force feedback simulation

$ ./upload.sh

# Upload to Arduino
$ arduino-cli compile --fqbn arduino:avr:uno .
# [INFO] Compiling sketch...
$ arduino-cli upload -p /dev/ttyUSB0 --fqbn arduino:avr:uno .
# [INFO] Uploading to board...

# Start Serial Monitor
$ screen /dev/ttyUSB0 9600
# [INFO] Connected to Arduino
# [INFO] Reading: STEER:512 GAS:0 BRAKE:1
Arduino
LCD
I2C
Serial
Controller
C++
HID