I recently decided to buy an Arduino UNO R3, to test compatibility with my sketches, which I have been testing w/ a Deumilanove. The UNO R3 contains an ATmega16U2 instead of an FTDI chip to do the serial to USB conversion, as well as 3 extra pins on the digital side of the board: SCL/SDA/AREF. One thing I don’t like about the Arduino UNO is that while it uses a 16MHz crystal for the 16U2, the main 328P MCU runs on a resonator, which is not as accurate. I found the EKitsZone UNO Rev.3 on eBay for $14.99, and decided to give it a try.
The notable differences in the EKitsZone Rev.3 versus the Arduino UNO R3 are:
- the ATmega328P uses a 16MHz crystal oscillator instead of a resonator, so its timing is just as accurate as a Deumilanove
- the reset button is mounted at a right angle, so it’s easily accessible even when a shield is attached on top
- it uses a mini-USB connector instead of a full-sized one
- the JP2 pins aren’t filled with solder, so it’s easier to solder in headers, should you want to connect something the PB4..PB7 pins on the 16U2
- the programming header for the 16U2 isn’t installed, but it’s easy to solder one in
I see 1-4 as advantages. Plus, the board is a cool looking red color.
I’m working on a project in which a PC communicates with an Arduino (a Colorduino, to be exact) over a serial connection. It’s an 8×8 RGB LED matrix, which will be controlled by music. The ATmega168 MCU in my beta Colorduino has such small RAM that I can only buffer at most 2 screenfuls of data, even when I reduce the color resolution from 24-bits per pixel to 12-bits per pixel. I need to send the data down to the Colorduino very quickly. There needs to be very little latency, or the lights will lag the beats of the music. The serial communication speed is not much of a problem. Each data packet I’m sending is 100 bytes, so at . Besides the raw speed of communication, there is a built-in latency, due to buffering being done by the communications drivers. Luckily, FTDI’s Windows drivers provide a way to tune down the latency a bit.
Start the Windows Device Manager while your FTDI USB->Serial cable or Arduino Duemilanove is attached. Look for its corresponding USB Serial Port under Ports (COM and LPT).
Right click on it, and select Properties from the popup menu. Next, click the Port Settings tab, and click the Advanced… button.
In the dialog which pops up, lower the Latency Timer (msec) value from its default of 16 down to 1, and click OK.
After you disconnect/reconnect your device, the new Latency Timer value will take effect.
I am not sure if there are similar settings in OSX or Linux. Hopefully, someone can dig up a similar IOCTL to achieve the same effect.