The problem was:
We have a conference room. There are two media sources: A notebook in a control room and a VGA cable for the lecturer in the room itself. We also have a video conference station and a beamer. For some sessions we need to route one of the sources through the video conference station, so that the external participants can see the slides. But sometimes we only need to connect the sources from local to the beamer. All cables are getting together on a patch panel in the control room.
Patching is not very user friendly - especially when the sessions need different setups for every lecturer. So we installed a video-cross-connect (4 Ins, 4 Outs) from Extron. Our video-specialists configured four setups which can be used directly on the video-cross-connect by voodoo-pressing-buttons-in-the-right-order. The result was that inside an important session the configuration of the video-cross-connect was broken by user.
Now(!) the Arduino has his appearance! The Extron video-cross-connect has a RS232 interface where you can setup bondings between Ins and Outs by "magic" codes (for the exact commands: look at your documentation - I don't know if the codes are under license by Extron). So the Arduino has only to convert 0V/+5V to -12V/+12V. I also used a software serial to let the onboard hardware serial free for programming.
The user interface should be as easy as possible: An encoder (with push button) and four LEDs - thats all. Of course you can make betterand bigger interfaces (7-segment-digits, Displays, ...). Every external hardware was build on a stripe circuit board and placed inside a box. The user interface was simply build from a wooden pannel with some cables from the LEDs and encoder towards the Arduino box. Everything was mounted on the wall - the cables were placed inside the wall towards the Arduino box on the other side. The front panel is currently build as aluminium panel by a special company so the wooden one can be replaced very soon.
Here are some pictures:
The layout plan for the stripe board
Inside the box without panel
Boxed with pre-panel
Perhaps you want to changes the LED resistors. The LEDs are currently a little bit too dark. The code makes some neat things with the LEDs so that the user can easy recognize program changes. Also it recognizes if someone directly chosed a setup on the video-crossbar itself - in this case all LEDs are dark until you choose a configuration by the encoder.
The code is GPLv3 - use at your own risk! Perhaps it can be adapted for other video-cross-connects. The code will is released on SourceForge, see https://sourceforge.net/projects/mediensteuerung/