Go Down

Topic: blinkm addressing problem.. (try it on your blink) (Read 5 times) previous topic - next topic

Jonnym

hi everyone,

so i am having an issue trying to readdress a blinkM, i've also tried on a MaxM, but i would guess the firmware is the similar to a point.

so, i started with my own bit of code to sort out what i knew and didnt know about i2c, a fair bit - but i can write to the blink's with no problem. i have 3 pots hooked up and can control rgb directly. nothing new, i know, but it was an exercise.

so the next step is to control multiple blinks, independently. i can't get the addresses to stick though.  here is my edited version of the stock code that is in the examples. i could be doing something silly, like sending hex instead of int, or something very strange could be going on... any help would be appreciated.  

Code: [Select]

#include "Wire.h"
#include "BlinkM_funcs.h"

byte blinkm_addr = 0x08;
byte blinkm_globaladdr = 0x00;
int temp;

void setup()
{
   Serial.begin(19200);

   Serial.println("BlinkMFactoryReset");

   BlinkM_beginWithPower();
   
   delay(100);

   Serial.print("Setting I2C address...");
   BlinkM_setAddress( blinkm_addr );
   Serial.println(blinkm_addr, HEX);
   
   delay(500);
   
   Serial.print("Verifying I2C address, sent to 'correct' address...");

   temp = BlinkM_checkAddress( blinkm_addr ); //sent to what it should be

   Serial.println(temp,DEC);
   
   delay(500);

   Serial.print("Verifying I2C address, sent to global address...");
   temp = BlinkM_checkAddress( blinkm_globaladdr );

//sent to global, should return matching

   Serial.println(temp,DEC);
   
   Serial.println("Did it work?");

}

void loop()
{
   digitalWrite(13, HIGH); // flash Arduino LED for fun
   delay(300);
   digitalWrite(13, LOW);
   delay(300);
}



Thanks -- Jon   :)

Jonnym

...as continuation, i looked inside the blinkM_funcs.h and uncommented some of the debug messages, no change, still having an address problem.

here is the response, sorry it a bit of a mess

Code: [Select]

BlinkMFactoryReset
Setting I2C address...8
Verifying I2C address, sent to 'correct' address...received addr: 0x80
VerifyiBlinkMFactoryReset
Setting I2C address...8
Verifying I2C address, sent to 'correct' address...received addr: 0x80
Verifying I2C address, sent to global address...No response, that's not good
-1
Did it work?



Jonnym

and as a followup to my own post, hope this helps someone else...

haven't tried it yet, i'll give some feedback to see if it helps.

http://todbot.com/blog/2010/11/19/reflashblinkm-update-your-blinkms-firmware/


Jonnym

fail... :-(  

i have 1.0c blinkm's   anyone?

todbot

Hi,

Have you tried using the "BlinkMTester" Arduino sketch that comes as part of the BlinkM Examples bundle?  It has the ability to let you re-address BlinkMs and I use it all the time.

The home of the BlinkM Examples bundle lives here:
http://code.google.com/p/blinkm-projects/
You can download the examples as a zip file here:
http://code.google.com/p/blinkm-projects/downloads/list
Or you can examine the source code to BlinkMTester here:
http://code.google.com/p/blinkm-projects/source/browse/trunk/blinkm_examples/arduino/BlinkMTester/BlinkMTester.pde

Let me know if BlinkMTester works.  If it doesn't, but otherwise the BlinkM appears to function, then you may have a bad BlinkM.  We can arrange an exchange for you then.

Go Up