|Product Performed to Expectations:||10|
|Specifications were sufficient to design with:||9|
|Demo Software was of good quality:||8|
|Product was easy to use:||10|
|Support materials were available:||10|
|The price to performance ratio was good:||10|
|TotalScore:||57 / 60|
I was glad to find that the Arduino board was relatively small in size, making it easy to use for microcontrolled hardware in a limited space.
Setting my impressions of the Arduino IDE itself aside, the first thing I tried to get working was a 128x64 HD44780 based LCD dot matrix display. After playing around with various third party libraries, I was soon making characters, dots, lines, etc. appear on the display. I didn't find the process too difficult to understand, I was easily able to connect and configure the appropriate I/O lines to drive the display. Since output from a microcontoller is a very important aspect of the architecture, being able to drive an LCD display like this with only a few wires and existing code is a good thing. I like how managable it is with the available third party software libraries.
On a side note, I mainly powered the board with the USB connection, but it works just as well when using batteries or an A/C adaptor.
The next thing I wanted to do is test the I/O ports by attaching a makeshift antenna to one of the ports, then looping through code to count the "peaks" of any sine wave signal induced on the wire. The easiest way I found to do that is use the existing energy being emanated from the household wiring. Since I'm in the USA, I wrote the timing values in the code to check for peaks every 1/60 of a second. Using two second sample periods, if I had a majority of detected peak values, then it was assumed I was detecting 60Hz signals (or multiples thereof). Changing the timing values would have altered the moment when peak detection timing could occur. Therefore, when the timing values were correct, the detection was accurate.
I needed to determine the correct timing value. Since there was an unknown timing overhead in the actual execution of code, I cheated a bit and used a trimmer potentiometer on an analog input to create a "number" as a seed value for the timing loop, which I added to a static timing value. I calibrated the loop by turning the potentiometer and got as close to 60Hz as I could.
How did I know I was at 60Hz? I held the board, antenna, and display near a light switch. The display was configured to "sweep" one pixel at a time and show an indication that it detected something. Over time, as the antenna got nearer a 60Hz signal, the display was programmed to draw a dot higher on the display. This assumed the code would work as expected. I'm happy to note that it did! At a certain point on the potentiometer, the display would indicate the presense of a signal. As I backed away from the lightswitch, the signal could not be detected anymore. This "detector circuit" worked consistently at other light switches throughout the house and even near known points in the wall where electrical wires run through.
It was the first idea that came to mind when trying to implement a useful input and output for the Arduino board. Who knows how far this "Signal Detector" concept could go. I simply wanted to test out various aspects of the Arduino system to determine its ease of use.
My opinion of the Arduino board is quite positive. It's not very fast compared to other microcontroller solutions that are out there, if for the latter, price is no object, but it has proved its usefulness to me in the low-cost category. I, myself, would end up putting the Arduino to use in other projects, such as robotics and other hardware control.
As for the IDE, I'll just state that everybody is different. I found the IDE mildly cumbersome, but not difficult to use. Others may find its operation second nature. So, lets just set my official opinion at, "the IDE will most likely continue to grow up over time"