96 lines
2.1 KiB
C++
96 lines
2.1 KiB
C++
/*
|
||
* BlinkMSoftI2CDemo -- very simply demonstrate Softi2CMaster library
|
||
*
|
||
*
|
||
*
|
||
* 2010 Tod E. Kurt, http://todbot.com/blog/
|
||
* 2014, by Testato: update library and examples for follow Wire’s API of Arduino IDE 1.x
|
||
*
|
||
*/
|
||
|
||
const boolean testingI2CReads = true;
|
||
|
||
// Choose any pins you want. The pins below let you plug in a BlinkM directly
|
||
const byte sclPin = 7; // digital pin 7 wired to 'c' on BlinkM
|
||
const byte sdaPin = 6; // digital pin 6 wired to 'd' on BlinkM
|
||
const byte pwrPin = 5; // digital pin 5 wired to '+' on BlinkM
|
||
const byte gndPin = 4; // digital pin 4 wired to '-' on BlinkM
|
||
|
||
#include "SoftI2CMaster.h"
|
||
#include "BlinkM_funcs_soft.h"
|
||
|
||
|
||
byte blinkm_addr = 9;
|
||
|
||
//
|
||
void setup()
|
||
{
|
||
Serial.begin( 19200 );
|
||
Serial.println(F("BlinkMSoftI2CDemo"));
|
||
|
||
BlinkM_begin( sclPin, sdaPin, pwrPin, gndPin );
|
||
|
||
delay(100);
|
||
|
||
BlinkM_off(0);
|
||
BlinkM_setFadeSpeed( blinkm_addr, 5);
|
||
|
||
for( int i=0; i< 10; i++ ) { // flash the blinkms
|
||
BlinkM_setRGB( blinkm_addr, 255,255,255 );
|
||
delay(20);
|
||
BlinkM_setRGB( blinkm_addr, 0,0,0 );
|
||
delay(20);
|
||
}
|
||
|
||
if( testingI2CReads ) {
|
||
Serial.print(F("BlinkM version: "));
|
||
int num = BlinkM_getVersion( blinkm_addr );
|
||
char major_version = (char)(num>>8);
|
||
char minor_version = (char)(num&0xff);
|
||
Serial.print( major_version );
|
||
Serial.println( minor_version );
|
||
if( major_version == -1 ) {
|
||
Serial.println(F("\nERROR: couldn't find a BlinkM\n"));
|
||
}
|
||
}
|
||
}
|
||
|
||
void loop()
|
||
{
|
||
byte r = random(255);
|
||
byte g = random(255);
|
||
byte b = random(255);
|
||
|
||
Serial.print(F("Setting r,g,b:")); Serial.print(r,HEX);
|
||
Serial.print(","); Serial.print(g,HEX);
|
||
Serial.print(","); Serial.println(b,HEX);
|
||
|
||
BlinkM_setRGB( blinkm_addr, r,g,b );
|
||
delay(50);
|
||
BlinkM_fadeToRGB( blinkm_addr, 0,0,0 );
|
||
|
||
if( testingI2CReads ) {
|
||
for( int i=0; i<10; i++ ) {
|
||
showCurrentColor();
|
||
delay(100);
|
||
}
|
||
}
|
||
else {
|
||
delay(1000);
|
||
}
|
||
}
|
||
|
||
//
|
||
void showCurrentColor()
|
||
{
|
||
byte r,g,b;
|
||
BlinkM_getRGBColor( blinkm_addr, &r,&g,&b);
|
||
|
||
Serial.print(F(" r,g,b:")); Serial.print(r,HEX);
|
||
Serial.print(","); Serial.print(g,HEX);
|
||
Serial.print(","); Serial.println(b,HEX);
|
||
}
|
||
|
||
|
||
|