Saturday, 21 April 2012

Part II: A White House Model


Hey All,

In Part II, I will explain the evolution of our project. We, Catherine and I, had suffered many headaches, as I am sure you are all aware of the agony involved in working with Processing and Arduino! In order to explain everything, I will go through my step-by-step process. I organized the steps under three easy categories: the Movie, the Arduino codes, and the Processing language.

The Movie
Initially, from the time our project had commenced, I had grand plans for a specially designed movie for a visual aid. I envisioned a somewhat retro-modern tour that integrated many different presidential terms. For example, I thought it would be great to have a tour from the 1960s and the Kennedy Administration combined with the Obama Administration. This would have showed the stark contrasts over time of different rooms, particularly the Green Room, Red Room, Blue Room and State Dining Room. I had searched different websites, including YouTube. I found a Documentary on the White House from 1962, which featured John F. Kennedy’s wife Jacqueline Kennedy Onassis. The movie was a CBS production that was 58 minutes in length. However, I had run into a few difficulties. First, I did not know how to download the YouTube video and save it as either an .AVI or .M4V file. Second, since the documentary was quite lengthy, how was I going to edit the unnecessary commentary and room tours that were irrelevant for our model? Third, if I were to download the root file, how was I going to edit the .AVI or .M4V? Fourth, how was I going to find a similar documentary with Michele Obama that would correspond with Jackie O’s commentary? Fifth, if I found a similar video how would I integrate the two videos into one file?

As it turned out, these problems, which were seemingly unsolvable, managed to be an easier task. I used the website http://saveyoutube.com/ to convert the YouTube hyperlink into a downloadable .MP4 file. First problem, solved! Then, I was finally able to utilized the capabilities of my overpriced MacBook Pro! I uploaded iMovie, which is a video editing software program. Since I had no prior knowledge with this application, I had thought this was going to be difficult, and it was to a certain extent. However, my second and third problems were solved, or so I thought! The iMovie tutorials although helpful in some areas were not the greatest for integrating two different .M4V files. I had imported both videos into a Project, but selecting the time frames and overlapping excerpts from different clips were not working in the manner that I had wished. Moreover, I spent too much time trying to match clips from Jackie O’s clips with that of Michele Obama’s clips. But more importantly, I had lacked the footage of the actual rooms that we were displaying in our model! So I decided to go back to YouTube and search for videos that were primarily based on the Green Room, Red Room, Blue Room and State Dining Room. 

At this point, I had lucked out. I had watched a specific clip on the Green Room that was posted on YouTube via this website: http://www.whitehousehistory.org. This website proved to be a wonderful source for information. It was sponsored by the White House Historical Association, which had outlined the details of each room that we had put on display in our model. So, with my “expert” knowledge, I downloaded the video files of each room from YouTube, and then used iMovie to integrate the separated .M4V files into one file. 
Now onto the more difficult parts, I had to configure the interface between the iMovie Project and a series of push buttons. Given that we had a few lectures on Arduino and Processing, I had a basic working knowledge (I use those terms loosely) for the language codes necessary to link our model with the newly edited video file of the White House and its rooms.

Arduino & Processing
Arduino was utilized to display a welcome message in our project that directed the viewer to initiate the presentation. This was accomplished by displaying a message that requested the viewer to push down the Democrat figure. The figure was connected to a push button waiting for an input in the Arduino sketch. Upon receiving the input from the button, Arduino was instructed to illuminate the LCD and initiate the playback of the video through Processing. In order to have Arduino interact with an external piece of software on my MacBook Pro, Processing was instructed to run a video that had been encoded using iMovie specifically to the dimensions of the laptop screen. However, we encountered a problem having the Arduino environment interacting with Processing, and initiating the video file. We found it quite difficult to have Arduino interact with Processing and in the end were unsuccessful in having the user interface launch the presentation.

Upon the completion of the Processing language, which enabled our presentation to display the edited video tour, Arduino was coded to display a "Welcome to the White House" and "Please Watch the Video" message and turn OFF the lights that had been illuminated during the presentation. Once the Arduino sequence had completed, the language code was instructed to loop back to displaying the welcome message, which would once again wait for the initiation of the presentation from the next viewer.

Our LCD was formatted to display a message welcoming the user to the presentation and instructing them through the displayed message to initiate the tour via the push button mounted under the Democrat figurine. The button was configured in Arduino to act as an input and through an IF command to initiate the Processing sketch upon a high value being returned from the push button, set as port 8. Our Arduino board had been loaded with Firmata to enable it to interact with Processing.

Our Processing sketch imported the video sequence and the serial import from the Arduino environment, which enabled the interaction of Processing with Arduino and the external video file. We created a variable that searched for an import from the Arduino board, over port 8, which would enable Processing to initiate the playback via the video playback library we installed from http://processing.org/reference/ The Processing environment was voided upon completion of the Video and was instructed to complete the Arduino code.

 

Essentially, the major problem was linking Processing with Arduino. More specifically, we had the Processing language configured so it would open the .M4V movie file. However, we needed the Processing to talk with the Arduino to have one of push bottons, once initiated, to have Processing receive the input in order to then search out the movie. With that said, this was the ONLY problem (albeit the most crucial part of the project) that held us back from successfully completing the interface! All in all, we had acquired knowledge and utilized software programs, which we would never have thought possible in our basic understanding of computers and language coding.