Hi,
I need to get rid of my V3 prototypes !
I’ve got exactly 3 (all gone) fully assembled & tested boards + RGB LED matrix. So if anybody wants them, “The early bird catches the worm”.
I’d be happy to give them away for 25€ (33USD) per piece + shipping.
You will need a USB/TTL serial adapter to program it with the Arduino IDE. The prototypes don’t come with auto reset yet, so it’s the same procedure as with simple breadboard clones.
Uploading code by manually resetting the board:
If you use a USB/TTL converter with RX/TX LEDS (e.g. USB BUB board from moderndevice.com – It turns out it only has an RX LED, which doesn’t help here), press and hold the reset button on the board, press upload in the IDE. As soon as the LEDs flicker release the reset button. Done.
If you don’t have LEDS, change this in the Arduino IDE’s “preferences.txt” file:
build.verbose = true upload.verbose = true
On linux the file is located in “$HOME/.arduino/”. On Windows XP you can find it in “C:\Documents and Settings\<username>\Application Data\Arduino\”. Then start the IDE (older versions than V17 would only show the debugging data on a terminal/dos-window. On Winblows this required starting it with “run.bat”). When you press “upload”, a lot of build messages will appear in the terminal. Watch out for these lines:
avrdude: ser_open(): setting dtr avrdude: Send: 0 [30] [20] avrdude: Send: 0 [30] [20] ...
As soon as they appear release the reset button and it will upload. With just a little practice this works perfectly fine.
See comment #4 for links to USB/TTL converters.
Also have a look at this if you already have an Arduino Diecimila/Duemilanove.
Related posts:







What is the meaning of having “Yellow”, “Blue Ultrabright”, “Red” next to them there? As we discussed, I am interested but I don’t think I have the correct FTDI part to interface with it.
I’ve updated the image. The color just refers to the onboard status LED.
Time to get “the part” ;-)
what exactly would I need?
Is the UartSB (from Seeed Studio) the correct piece to interface a PC with it?
These can be plugged into the board directly:
- FTDI cable (20$). Doesn’t support auto reset with Arduino IDE
- USB BUB board. Supports auto reset with Arduino IDE
The UartSB from Seeedstudio should work too, as it has all the necessary pins and uses the same FTDI chip, but its pinout is different! So you’d have to build an adapter cable too.
you said before that you run yours with the Arduino bootloader on board… Does that mean that with above cable + arduino bootloader, the matrix can be programmed directly from the arduino IDE?
I am almost convinced.
Of course! That is the whole point, isn’t it ?
Having to use a full blown programmer all the time sucks. I’ve posted a new video to my youtube collection, so you can finally believe me.
HI,
if you have 2 left il buy them can i use paypal??
Thanks
OK. I accept paypal.
ok can i buy on friday?? as have MOT for car and not sure how much it is cost.
Also do you know if they can be made to wait for data like the sparkfun backpacks?
They can receive serial data on the RX line using Serial.read() from a computer. This way I built the load monitor example I blogged about. You can also build a network of these using I²c and the Arduino’s Wire library. To hook it up to your computer you need an adapter like mentioned in comment #4. If you have RS232 ports on your computer you need a voltage converter to connect it, so it doesn’t fry. A home-made variant look like this: ( http://www.arduino.cc/en/Tutorial/ArduinoSoftwareRS232 ).
can i run them off an arduino for now?
Hi,
i can send payment tonight if you have 2 left still im also getting the adapter today :)
@andy
Yes you CAN use a normal arduino as an adapter! I hadn’t thought of that. See the next post for a short howto. Of course I have 2 left :-)
have you set up paypal? if so send the payment request to ( email removed to avoid spam )
thanks
Hi rob,
il send the payment tomorrow evening :)
cant wait to get them, i would definalty like two more boards minus the matricies in the futer
Thanks
hi rob,
sent the payment you requested, and my car failed as usuall lol
Did I just get the last one, or is this a whole new batch?
How would I daisy-chain 4 of these together and run it from my computer using Processing?
thanks
Hi,
No, I didn’t offer any of these prototypes on Etsy. That was a one time thing and also included a LED matrix.
I haven’t used the Processing language before, but basically you’d have to do is somewhat like this ( http://processing.org/reference/libraries/serial/Serial_write_.html ) :
// — cut — processing —
// import libraries:
import processing.serial.*;
Serial myPort; // serial port instance
char data;
void setup() {
// list all the serial ports:
println(Serial.list());
// based on the list of serial ports printed from the
// previous command, change the 0 to your port’s number:
String portnum = Serial.list()[0];
// initialize the serial port.
myPort = new Serial(this, portnum, 9600);
}
void draw() {
data = ’0′;
myPort.write(data);
delay(500);
data = ’1′;
myPort.write(data);
delay(500);
}
// — END —
// — cut — arduino, serial listener, I²C master —
#define LED 4
#define wire_slave_1_addr 0×12
#define wire_slave_2_addr 0×13
#include <Wire.h>
void setup(void) {
pinMode(LED,OUTPUT);
blink_led();
Serial.begin(9600);
Wire.begin(); // join i2c bus as master (address optional for master)
}
void loop(void) {
byte data_in = 0;
if ( Serial.available() ) {
data_in = Serial.read();
}
if ( data_in == ’0′ ) {
digitalWrite(LED,LOW); // turn local LED off
Wire.beginTransmission(wire_slave_1_addr);
Wire.send(0×00); // turn remote LED off
Wire.endTransmission();
Wire.beginTransmission(wire_slave_2_addr);
Wire.send(0×00); // turn remote LED off
Wire.endTransmission();
}
else if ( data_in == ’1′ ) {
digitalWrite(LED,HIGH); // turn local LED on
Wire.beginTransmission(wire_slave_1_addr);
Wire.send(0×01); // turn remote LED off
Wire.endTransmission();
Wire.beginTransmission(wire_slave_2_addr);
Wire.send(0×01); // turn remote LED off
Wire.endTransmission();
}
else {}
}
void blink_led(void) {
digitalWrite(LED,HIGH);
delay(1000);
digitalWrite(LED,LOW);
}
// — END —
// — cut — arduino, I²C slave —
#define LED 4
#define wire_slave_addr 0×12 // set to 0×12 or 0×13 on different boards
#include <Wire.h>
void setup(void) {
pinMode(LED,OUTPUT);
blink_led();
Wire.begin(wire_slave_addr);
Wire.onReceive(receiveEvent);
}
void loop(void) {
}
void receiveEvent(int dummy) {
byte data_in = 0;
if ( Wire.available() ) {
data_in = Wire.receive();
}
if ( data_in == 0×00 ) {
digitalWrite(LED,LOW);
}
else if ( data_in = 0×01) {
digitalWrite(LED,HIGH);
}
else {}
}
void blink_led(void) {
digitalWrite(LED,HIGH);
delay(1000);
digitalWrite(LED,LOW);
}
// — END —
Of course this is just a very very simple example to get the idea. Most of the code I used for it can be found on this blog. It should be commented well enough to get the idea of what’s going on inside.
So if you want to build a chain of 4, you’d have to create a protocol that can deal with data packages. Maybe something like this:
- start byte (1 byte)
- packet length ( N+3 bytes ) <– how much payload the board has to read
- target board number (1 byte)
- payload data (N bytes)
- stop byte (1 byte)
The first board that’s connected to the PC and is head of the chain would then decode and forward to the slave boards on the I²C bus. You’d section the payload section into a command and a data section. Depending on e.g. the first byte of the payload data section, a target board would select a certain function and pass the remaining data to it.
That way you could e.g. send 0×01 for “set_column(column,R,G,B)” and the following 4 bytes would be the values for column,R,G,B.
pseudo code:
switch(in_buffer[0]) {
case 0×01:
set_column(in_buffer[1],in_buffer[2],in_buffer[3],in_buffer[4])
break;
case 0×02:
/* do something else */
break;
default:
}
Pingback: My 2µF » Using a standard Arduino to program V3 Matrix boards
Im working on assembling one of your never boards and have parts 1-6 installed. I am using USB BUB II from moderndevice as my bootloader, but am sorta confused as to what i need to do. Could i get your code used for the BUB tutorial video.
I’ll have a look at the video. It’s been a while. If I can find it, I’ll post a link.
Sorry for answering late, your comment was trapped in the spam folder.
Assuming you’ve watched
http://www.youtube.com/watch?v=g49Gr9VbJtY
you can find the demo code in this repository:
http://git.spitzenpfeil.org/cgi-bin/gitweb.cgi?p=V3_x_boards_test.git;a=summary
What did you use for the -p name of your USB BUB when uploading your boot loader. Ive been trying stk500 but i get an infinite receive message from avrdude. Also i think my TX/RX lines are swapped on my USB BUB II upon closer inspection, did this occur for you as well when using your USB BUB?
Just to make sure I understand you right… you’re trying to do the initial (one time) setup step of uploading the bootloader code with the BUB board itself?
It is not impossible, but absolutely not the recommended way. Avrdude does not support that method without some serious hacking/recompiling (if you use linux). For windows, you might get a pre-compiled binary of avrdude here:
http://www.kerrywong.com/2010/04/02/on-atmega328-bootloading-with-ftdi-bitbang-method/
I’ve never tested this method myself. As mentioned in the forum post and manual, you really should get one of these:
http://www.sparkfun.com/products/9825
or
http://www.adafruit.com/products/46
They are really cheap as well.
If you should already have an Arduino board (Diecimila or 2009, UNO doesn’t work), you can easily use the ‘ArduinoISP’ code.
http://blog.spitzenpfeil.org/forum/viewtopic.php?f=7&t=26
I’ve tested it and it works just fine.