Skip to content

Commit

Permalink
Added optional offset argument to SetGroupOf#, SetRGB and SetHSV func…
Browse files Browse the repository at this point in the history
…tions.

Default value is zero, so argument can be omitted.

This is useful, for example, if you have chained 2 boards together each with 4 registers: 10 RGB LED's and 2 unused pins per board.
You can now set LED's on the second board with:
SetRGB(11,255,0,255,2); // Set first LED of the second board to purple.
  • Loading branch information
elcojacobs committed May 7, 2012
1 parent 3548ba2 commit 49bdf39
Show file tree
Hide file tree
Showing 2 changed files with 38 additions and 38 deletions.
64 changes: 32 additions & 32 deletions CShiftPWM.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -78,45 +78,45 @@ void CShiftPWM::SetAll(unsigned char value){
}
}

void CShiftPWM::SetGroupOf2(int group, unsigned char v0,unsigned char v1){
if(IsValidPin(group*2+1) ){
m_PWMValues[group*2]=v0;
m_PWMValues[group*2+1]=v1;
void CShiftPWM::SetGroupOf2(int group, unsigned char v0,unsigned char v1, int offset){
if(IsValidPin(group*2+offset+1) ){
m_PWMValues[group*2+offset]=v0;
m_PWMValues[group*2+offset+1]=v1;
}
}

void CShiftPWM::SetGroupOf3(int group, unsigned char v0,unsigned char v1,unsigned char v2){
if(IsValidPin(group*3+2) ){
m_PWMValues[group*3]=v0;
m_PWMValues[group*3+1]=v1;
m_PWMValues[group*3+2]=v2;
void CShiftPWM::SetGroupOf3(int group, unsigned char v0,unsigned char v1,unsigned char v2, int offset){
if(IsValidPin(group*3+offset+2) ){
m_PWMValues[group*3+offset]=v0;
m_PWMValues[group*3+offset+1]=v1;
m_PWMValues[group*3+offset+2]=v2;
}
}

void CShiftPWM::SetGroupOf4(int group, unsigned char v0,unsigned char v1,unsigned char v2,unsigned char v3){
if(IsValidPin(group*4+3) ){
m_PWMValues[group*4]=v0;
m_PWMValues[group*4+1]=v1;
m_PWMValues[group*4+2]=v2;
m_PWMValues[group*4+3]=v3;
void CShiftPWM::SetGroupOf4(int group, unsigned char v0,unsigned char v1,unsigned char v2,unsigned char v3, int offset){
if(IsValidPin(group*4+offset+3) ){
m_PWMValues[group*4+offset]=v0;
m_PWMValues[group*4+offset+1]=v1;
m_PWMValues[group*4+offset+2]=v2;
m_PWMValues[group*4+offset+3]=v3;
}
}

void CShiftPWM::SetGroupOf5(int group, unsigned char v0,unsigned char v1,unsigned char v2,unsigned char v3,unsigned char v4){
if(IsValidPin(group*5+4) ){
m_PWMValues[group*5]=v0;
m_PWMValues[group*5+1]=v1;
m_PWMValues[group*5+2]=v2;
m_PWMValues[group*5+3]=v3;
m_PWMValues[group*5+4]=v4;
void CShiftPWM::SetGroupOf5(int group, unsigned char v0,unsigned char v1,unsigned char v2,unsigned char v3,unsigned char v4, int offset){
if(IsValidPin(group*5+offset+4) ){
m_PWMValues[group*5+offset]=v0;
m_PWMValues[group*5+offset+1]=v1;
m_PWMValues[group*5+offset+2]=v2;
m_PWMValues[group*5+offset+3]=v3;
m_PWMValues[group*5+offset+4]=v4;
}
}

void CShiftPWM::SetRGB(int led, unsigned char r,unsigned char g,unsigned char b){
if(IsValidPin(led*3+2) ){
m_PWMValues[led*3]=( (unsigned int) r * m_maxBrightness)>>8;
m_PWMValues[led*3+1]=( (unsigned int) g * m_maxBrightness)>>8;
m_PWMValues[led*3+2]=( (unsigned int) b * m_maxBrightness)>>8;
void CShiftPWM::SetRGB(int led, unsigned char r,unsigned char g,unsigned char b, int offset){
if(IsValidPin(led*3+offset+2) ){
m_PWMValues[led*3+offset]=( (unsigned int) r * m_maxBrightness)>>8;
m_PWMValues[led*3+offset+1]=( (unsigned int) g * m_maxBrightness)>>8;
m_PWMValues[led*3+offset+2]=( (unsigned int) b * m_maxBrightness)>>8;
}
}

Expand All @@ -128,8 +128,8 @@ void CShiftPWM::SetAllRGB(unsigned char r,unsigned char g,unsigned char b){
}
}

void CShiftPWM::SetHSV(int led, unsigned int hue, unsigned int sat, unsigned int val){
if(IsValidPin(led*3+2) ){
void CShiftPWM::SetHSV(int led, unsigned int hue, unsigned int sat, unsigned int val, int offset){
if(IsValidPin(led*3+offset+2) ){
unsigned char r,g,b;
unsigned int H_accent = hue/60;
unsigned int bottom = ((255 - sat) * val)>>8;
Expand Down Expand Up @@ -174,9 +174,9 @@ void CShiftPWM::SetHSV(int led, unsigned int hue, unsigned int sat, unsigned int
b = falling;
break;
}
m_PWMValues[led*3]=( (unsigned int) r * m_maxBrightness)>>8;
m_PWMValues[led*3+1]=( (unsigned int) g * m_maxBrightness)>>8;
m_PWMValues[led*3+2]=( (unsigned int) b * m_maxBrightness)>>8;;
m_PWMValues[led*3+offset]=( (unsigned int) r * m_maxBrightness)>>8;
m_PWMValues[led*3+offset+1]=( (unsigned int) g * m_maxBrightness)>>8;
m_PWMValues[led*3+offset+2]=( (unsigned int) b * m_maxBrightness)>>8;;
}
}

Expand Down
12 changes: 6 additions & 6 deletions CShiftPWM.h
Original file line number Diff line number Diff line change
Expand Up @@ -39,14 +39,14 @@ class CShiftPWM{
void SetOne(int pin, unsigned char value);
void SetAll(unsigned char value);

void SetGroupOf2(int group, unsigned char v0, unsigned char v1);
void SetGroupOf3(int group, unsigned char v0, unsigned char v1, unsigned char v2);
void SetGroupOf4(int group, unsigned char v0, unsigned char v1, unsigned char v2, unsigned char v3);
void SetGroupOf5(int group, unsigned char v0, unsigned char v1, unsigned char v2, unsigned char v3, unsigned char v4);
void SetGroupOf2(int group, unsigned char v0, unsigned char v1, int offset = 0);
void SetGroupOf3(int group, unsigned char v0, unsigned char v1, unsigned char v2, int offset = 0);
void SetGroupOf4(int group, unsigned char v0, unsigned char v1, unsigned char v2, unsigned char v3, int offset = 0);
void SetGroupOf5(int group, unsigned char v0, unsigned char v1, unsigned char v2, unsigned char v3, unsigned char v4, int offset = 0);

void SetRGB(int led, unsigned char r,unsigned char g,unsigned char b);
void SetRGB(int led, unsigned char r,unsigned char g,unsigned char b, int offset = 0);
void SetAllRGB(unsigned char r,unsigned char g,unsigned char b);
void SetHSV(int led, unsigned int hue, unsigned int sat, unsigned int val);
void SetHSV(int led, unsigned int hue, unsigned int sat, unsigned int val, int offset = 0);
void SetAllHSV(unsigned int hue, unsigned int sat, unsigned int val);


Expand Down

0 comments on commit 49bdf39

Please sign in to comment.