Recent activity
Subscribe to this feed
todbot replied on November 24, 2009 01:17 to the question "Fatory settings for BlinkM" in ThingM:
todbot replied on November 23, 2009 22:20 to the question "Current control?" in ThingM:
MaxM is a PWM driver only. It doesn't do any sort of explicit current limiting. If it did, MaxM would've have to have been designed for a specific LED class (500mA, 750mA, 1A) and it would have made it larger & more expensive.
If you choose current-limiting resistors for your high-current LEDs (Luxeon, Cree, etc.) that limit the current to about half the rated current, then you should be able to safely use MaxM with them. I've tried this and it seems to work, but I've not done extensive tests.
todbot replied on November 22, 2009 19:32 to the question "Fatory settings for BlinkM" in ThingM:
todbot replied on November 22, 2009 07:15 to the idea "Resetting a BlinkM" in ThingM:
This question has been answered here:
http://getsatisfaction.com/thingm/topics/fatory_settings_for_blinkm
todbot replied on November 22, 2009 07:05 to the question "Fatory settings for BlinkM" in ThingM:
Hi Stephen,
While one can derive the startup settings and light script from the datasheet, it's not very clear. Below is an Arduino sketch that will reset all the settings of a BlinkM to their factory condition. Upload this code to an Arduino, plug in a BlinkM, and power up the Arduino. When the Arduino starts flashing its pin13 LED, the BlinkM will be reset to factory settings.
This sketch will be included in an updated example code bundle. For now you can grab a BlinkMFactoryReset.zip file with everything you need.
/*
* BlinkMFactoryReset --
*/
#include "Wire.h"
#include "BlinkM_funcs.h"
byte blinkm_addr = 0x09;
// stolen from blinkm_nonvol_data.h
blinkm_script_line script0_lines[] = {
{ 1, {'f', 10,0x00,0x00}},
{100, {'c', 0xff,0xff,0xff}},
{ 50, {'c', 0xff,0x00,0x00}},
{ 50, {'c', 0x00,0xff,0x00}},
{ 50, {'c', 0x00,0x00,0xff}},
{ 50, {'c', 0x00,0x00,0x00}}
};
int script0_len = 6; // number of script lines above
void setup()
{
Serial.begin(19200);
Serial.println("BlinkMFactoryReset");
BlinkM_beginWithPower();
delay(100);
Serial.println("Setting I2C address to default of 0x09");
BlinkM_setAddress( blinkm_addr ); // uncomment to set address
Serial.println("Writing default light script");
BlinkM_writeScript(blinkm_addr, 0, script0_len, 0, script0_lines);
Serial.println("Setting startup parameters");
BlinkM_setStartupParams( blinkm_addr, 1, 0,0,8,0);
Serial.println("Done!");
BlinkM_playScript( blinkm_addr, 0,0,0 );
}
void loop()
{
digitalWrite(13, HIGH); // flash Arduino LED for fun
delay(300);
digitalWrite(13, LOW);
delay(300);
}
todbot replied on November 10, 2009 03:07 to the question "MaxM Blaster without Master" in ThingM:
Hi Philip,
If you have some 220 ohm resistors, you can try putting one in series with each LED (instead of just a wire going from pin 9,10,11). This should limit the current enough to let you turn on all the LEDs with an Arduino. The result won't be as bright as it could be, but it'll at least let you try stuff out.
todbot replied on November 09, 2009 21:05 to the problem "Sequencer does not work/start on Mac OS X 10.6.1" in ThingM:
Hi Michael,
Glad you got it working! As for the BlinkM firmware, if you'd like to reflash your BlinkM boards wth the official firmware, email us at blinkm at thingm.com and we'll send you the hex file. If you'd like to try your hand at the source code, there is an open source clone of the BlinkM firmware that implements most of the functionality at http://code.google.com/p/codalyze/wik...
todbot replied on November 09, 2009 21:02 to the problem "Can't scale up BlinkM network." in ThingM:
The Arduino board can only provide about 500mA of current, so you can't use the power supply on the Arduino to power your 50 BlinkMs. But if you have a power supply that can provide up to 3A. For instance, here's a $15 wall-wart that provides up to 2.5A at 5VDC.
http://www.jameco.com/webapp/wcs/stores/servlet/ProductDisplay?productId=252736
You could get two of those to give you about 5A, which should be enough head room, and you can use it to power the Arduino.
(If you're not used to doing power calculations, typically you want a power supply that can provide about twice the current needed at a given voltage. If you had a system that consisted of 50 BlinkMs (60mA each), an Arduino (100mA at most), and some support circuitry (maybe another 100mA), you could estimate that at most the current draw you'd see would be (50 * 60mA + 100mA + 100mA) = 3200 mA = 3.2A. Double that to get 6.4A. Now in practice you might know that you won't be powering all your BlinkMs at full brightness at once, so you won't need the full 3.2A, which is why I said 5A should be sufficient.)
todbot replied on November 09, 2009 20:49 to the question "MaxM Blaster without Master" in ThingM:
Hi Philip,
The BlinkM MaxM "Blaster" LED board contains high-power LEDs that cannot be driven properly with just an Arduino. Each LED in the Blaster board draws about 80-100mA of current at full brightness, and a single Arduino pin can supply only about 40mA. Also, the Arduino chip can only supply a total of 200mA, while the Blaster board consumes up to 260mA. So even if you were to hook up a Blaster board directly to an Arduino (as in the diagram below), you likely couldn't get it to work like you wanted and may even damage the chip in your Arduino.
So the diagram below is provided with a big "Warning, don't do this! for instructional purposes only".
You can get a Blaster board to work with an Arduino, but you will need to add power transistors between the Blaster and Arduino, very similar to what is on MaxM. You can search around on the Arduino.cc site for some examples on how to use power transistor switches.
todbot replied on November 09, 2009 20:30 to the question "Using only the USB to I2C connector to program BlinkM" in ThingM:
Hi Aaron,
Yeah that Deveantech interface is kinda weird. Looks like it works great for registered-based devices like EEPROMs. But there's a lot of I2C devices out there (like BlinkM) that use a more RS-232-style of communication.
It might be you can use the "I2C_AD1" command and treat the "address" as the command byte (e.g. the "Stop Script" command 'o' is one address, the "Fade to RGB" command "c" is another address)
todbot replied on November 04, 2009 04:20 to the question "connection to Arduino mega?" in ThingM:
todbot replied on October 24, 2009 02:52 to the problem "Can't scale up BlinkM network." in ThingM:
Hi Will,
Short answer: try smaller pull-up resistors (1.2k) first, then try using an "I2C bus driver" chip.
Longer answer:
At 30 feet, you're approaching the theoretical limit for I2C bus length using standard ribbon cable. Making reliable long I2C busses is a bit tricky. This is because I2C is more sensitive than most protocols to increased bus capacitance. And any time you get a long strands of multiple wires next to each other, they start looking more like a capacitor (what's a capacitor than two pieces of metal separated by a gap)
There's some pretty good discussion of these issues on this page:
http://www.i2cchip.com/i2c_connector.html#Bus%20Pullups%20and%20Drive
Where the main take-away might be: try using smaller pull-up resistors (1.2k) on longer bus lengths.
To really solve the problem, people use "I2C bus driver" chips. These are constant-current sources that are more accurate than a simple pull-up resistor. There are many different vendors of these chips, and they're all about the same. A real-world example of using these chips is Dave Vondle's big BlinkM LED wall:
http://labs.ideo.com/2009/08/19/glass...
For *really* long I2C runs, there are various types of "I2C bus extender" chips. These typically need to go in front of each I2C device, so probably aren't applicable for use with BlinkM. But some of these kinds of devices even do a kind of wire protocol modification to allow I2C to work up to several hundred meters.
todbot replied on October 15, 2009 21:40 to the problem "Sequencer does not work/start on Mac OS X 10.6.1" in ThingM:
todbot replied on October 15, 2009 08:37 to the question "Controlling the BlinkM with RAD, has this been done properly?" in ThingM:
todbot replied on October 15, 2009 06:36 to the question "Controlling the BlinkM with RAD, has this been done properly?" in ThingM:
You won't get any response over the serial port, as that command doesn't have any return values. But you should see the BlinkM change to that #FFCC33 color. If the BlinkM is playing its startup script, then you'll need to send the Stop Script command ('o') first. The BlinkMCommunicator byte array for that command would be:
{0x01,0x09,0x01,0x00, 'o'}
assuming your BlinkM is at address 9
todbot replied on October 12, 2009 16:15 to the question "Communicator program will not compile. Help." in ThingM:
todbot replied on October 11, 2009 21:40 to the question "Communicator program will not compile. Help." in ThingM:
Hmm, that's very strange. I just tested compiling BlinkMCommunicator from a fresh download if it, using the Arduino 0017 software on Mac OS X 10.5.8 and Windows XP SP2, with the Arduino board type set to "Arduino Duemilenove or Nano w/ ATmega328". Both compiled the sketch just fine.
Can you give me any more details on your system? Is there anything strange about it? Specifically what version of Windows are you on? Have you been able able to compile any other Arduino sketches? (like the ones in the examples, specifically any of the Wire examples)
Have you been experimenting with I2C/TWI/Wire in another capacity? Have you done anything with your Arduino installation that is different than what the Arduino site says to do?
todbot replied on October 11, 2009 21:21 to the question "Controlling the BlinkM with RAD, has this been done properly?" in ThingM:
Hi Joseph,
BlinkMCommunicator expects raw bytes to be sent, not ASCII. A BlinkMCommunicator command in the form:
{0x01,0x09,0x04,0x00, 'f',0xff,0xcc,0x33}
is almost exactly the syntax used in C/C++/Java/Processing for how to construct a byte array to send to BlinkMCommuncator.
For instance, in Processing (Java), a completely constructed command and sending it to BlinkMCommunicator via the Serial port object looks like this:
byte[] cmd = { 0x01,0x09,0x04,0x00, 'f',(byte)0xff,(byte)0xcc,(byte)0x33 };
serialPort.write( cmd );
(The "(byte)" is needed to force those values to look like bytes instead of ints because Java has signed bytes)
todbot replied on October 11, 2009 21:10 to the question "Communicator program will not compile. Help." in ThingM:
todbot replied on October 07, 2009 02:39 to the question "Controlling the BlinkM with RAD, has this been done properly?" in ThingM:
Also, I don't fully grok github, but it looks like madrona's stuff is a downstream fork of atduskgreg's RAD. And his repo has blinkm stuff in it too:
http://github.com/atduskgreg/rad/blob...
| next » « previous |
Loading Profile...



