Files
arduino-libs/arduino-cli/libraries/SoftI2CMaster/examples/BlinkMSoftI2CDemo/BlinkMSoftI2CDemo.ino
2024-07-20 22:09:06 +08:00

96 lines
2.1 KiB
C++
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
/*
* BlinkMSoftI2CDemo -- very simply demonstrate Softi2CMaster library
*
*
*
* 2010 Tod E. Kurt, http://todbot.com/blog/
* 2014, by Testato: update library and examples for follow Wires 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);
}