BMW Instrument Cluster on PC via USB application Arduino MEGA board
Browsing around the www, I came across this simple, easy to use development board, which seemed just right for my project. As I’ve said in an earlier post, I want to reduce my efforts as much as possible, so this Arduino MEGA board was just what I was looking for, as it is built around a powerful enough microcontroller, the ATMega1280, it exposes all I/O pins (analog, digital, PWM etc), and has a simple, open-source programming language, as well as a pretty bare IDE which also allows you to upload the software via USB.
The blog is an amazing worklog of a big physical game interface. Some tips about the programming side:
Both the Arduino and the PC side software are now updated to process the speed and RPM signals coming from Live For Speed.
What’s interesting, is that the Arduino (ATMega1280) being single-theaded, I had to write all the code in one function. So, there is only one thread which reads data from the serial port, and as soon as a complete package is received, it updates the control lights and speed / RPM signals.
The speedometer and rev counter are fed with clock signals, whose frequencies vary according to the speed / RPM to be displayed on the dial (the actual speed and RPM sensors on the real car read their values from the rotating wheels/engine crankshaft, thus sending clock-like signals to the instrument cluster). These signals are generated by means of two dedicated timers, also implemented in the same single thread.
some more videos.