I was hired at NI in R&D IT relatively recently - back in Feb of 2011. One of the things that excited me about the opportunity was the company's product space. As a career software developer, I have some minimal experience with graphical software development (albeit with Vignette's eBiz suite), and I've been an electronics hobbyist since a young age. In recent years, one of my hobbyist endeavors has been automating Christmas Lights and, more recently, utilizing the Arduino for sequencing of wearable Christmas lights. (Since there's a pretty big community of crazy Christmas hackers, I started blogging about it too.)
To my delight, two weeks after I started at NI, flyers appeared around the building regarding a contest challenging people to come up with cool ideas for demonstrating the LabVIEW Interface for Arduino (LIFA)! I threw together a powerpoint outlining my concept of using LabVIEW to perform sound analysis of a playing .WAV file and have it drive various Christmas light strings based on the power level at various frequency ranges. I submitted it to the LIFA team and, sure enough, I was selected as one of the ten winners! At that point, I was committed to actually making it work.
Now, although I've been in software development for over twenty years, at that point I had never actually even seen LabVIEW, much less written any programs (VIs). I pretty much already had the hardware all done and sort of procrastinated on the LabVIEW development until about a week before it was due. At that point, I installed LabVIEW, sat down, and started working on my VI. At first, I started getting a little panicky because I had very little experience working with LabVIEW. However, after playing around with some sample VIs for a short period of time, it started making a lot of sense. After the first couple of hours, I was feeling way more confident about knocking out a working product.
I did have a couple other moments of panic. In addition to starting with no knowledge of LabVIEW, I also had no knowledge of fast Fourier transforms, signal analysis, time-windowing, or any of that other nerdy sound-analysis stuff. It seemed like learning how to compute a power level for a frequency band was way beyond what I'd be able to accomplish in a handful of evenings...Sound and Vibration Analysis Toolkit to the rescue! Using out-of-the box functions, I was able to convert a sound sample into power bands that were averaged into a single, time-dependent integer whose value determine the on/off state of an Arduino pin. Another moment came as I was trying to hook these functions together; the data structures that are passed between some of these functions are quite complex. The Power Spectrum analysis function, for example takes as its input a "waveform", which is composed of data, start time and delta t components. Fortunately, I soon discovered that the "probe" function was good for examining the contents and data types of an input or output, and the online help and examples were quite good at illustrating how to convert from one structure to another, etc. After a few evenings tinkering with it, I had my VI working. That left me a weekend to put together my demo video:
All in all, I'd have to say the contest probably benefitted me more than it did NI - I walked away with a much better understanding of LabVIEW and utter conviction of its power to reduce daunting development efforts to quick…and even FUN…activities.
>>Have you ever used NI tools to “engineer your holiday?” If so, leave a comment and tell us all about it!