ShiftBrite: Difference between revisions
Jump to navigation
Jump to search
Created page with "Sample Code from macetech (http://macetech.com/blog/node/54) <pre> int datapin = 10; // DI int latchpin = 11; // LI int enablepin = 12; // EI int clockpin = 13; // CI unsign..." |
mNo edit summary |
||
| (2 intermediate revisions by 2 users not shown) | |||
| Line 1: | Line 1: | ||
Test Code (Simplified Example) | |||
Cycles Red/Green/Blue full on for 4 lights | |||
<pre> | |||
int datapin = 11; // DI | |||
int latchpin = 12; // LI | |||
int enablepin = 13; // EI | |||
int clockpin = 15; // CI | |||
unsigned long SB_CommandPacket; | |||
int SB_CommandMode; | |||
int SB_BlueCommand; | |||
int SB_RedCommand; | |||
int SB_GreenCommand; | |||
int shiftDelay = 250; | |||
void setup() { | |||
pinMode(datapin, OUTPUT); | |||
pinMode(latchpin, OUTPUT); | |||
pinMode(enablepin, OUTPUT); | |||
pinMode(clockpin, OUTPUT); | |||
digitalWrite(latchpin, LOW); | |||
digitalWrite(enablepin, LOW); | |||
SB_CommandMode = B01; // Write to current control registers | |||
SB_RedCommand = 127; // Full current == 127 | |||
SB_GreenCommand = 127; | |||
SB_BlueCommand = 127; | |||
SB_SendPacket(); | |||
} | |||
void SB_SendPacket() { | |||
SB_CommandPacket = SB_CommandMode & B11; | |||
SB_CommandPacket = (SB_CommandPacket << 10) | (SB_BlueCommand & 1023); | |||
SB_CommandPacket = (SB_CommandPacket << 10) | (SB_RedCommand & 1023); | |||
SB_CommandPacket = (SB_CommandPacket << 10) | (SB_GreenCommand & 1023); | |||
shiftOut(datapin, clockpin, MSBFIRST, SB_CommandPacket >> 24); | |||
shiftOut(datapin, clockpin, MSBFIRST, SB_CommandPacket >> 16); | |||
shiftOut(datapin, clockpin, MSBFIRST, SB_CommandPacket >> 8); | |||
shiftOut(datapin, clockpin, MSBFIRST, SB_CommandPacket); | |||
delay(5); // adjustment may be necessary depending on chain length | |||
digitalWrite(latchpin,HIGH); // latch data into registers | |||
delay(5); // adjustment may be necessary depending on chain length | |||
digitalWrite(latchpin,LOW); | |||
} | |||
void goRed() { | |||
for (int i = 0; i < 4; i++) { | |||
SB_CommandMode = B00; // Write to PWM control registers | |||
SB_RedCommand = 127; | |||
SB_GreenCommand = 0; | |||
SB_BlueCommand = 0; | |||
SB_SendPacket(); | |||
} | |||
} | |||
void goBlue() { | |||
for (int i = 0; i < 4; i++) { | |||
SB_CommandMode = B00; // Write to PWM control registers | |||
SB_RedCommand = 0; | |||
SB_GreenCommand = 127; | |||
SB_BlueCommand = 0; | |||
SB_SendPacket(); | |||
} | |||
} | |||
void goGreen() { | |||
for (int i = 0; i < 4; i++) { | |||
SB_CommandMode = B00; // Write to PWM control registers | |||
SB_RedCommand = 0; | |||
SB_GreenCommand = 0; | |||
SB_BlueCommand = 127; | |||
SB_SendPacket(); | |||
} | |||
} | |||
void loop() { | |||
goRed(); | |||
delay(shiftDelay); | |||
goBlue(); | |||
delay(shiftDelay); | |||
goGreen(); | |||
delay(shiftDelay); | |||
} | |||
</pre> | |||
Sample Code from macetech (http://macetech.com/blog/node/54) | Sample Code from macetech (http://macetech.com/blog/node/54) | ||
| Line 72: | Line 163: | ||
} | } | ||
</pre> | </pre> | ||
[[Category:Fort]] | |||
Latest revision as of 03:35, 21 December 2013
Test Code (Simplified Example)
Cycles Red/Green/Blue full on for 4 lights
int datapin = 11; // DI
int latchpin = 12; // LI
int enablepin = 13; // EI
int clockpin = 15; // CI
unsigned long SB_CommandPacket;
int SB_CommandMode;
int SB_BlueCommand;
int SB_RedCommand;
int SB_GreenCommand;
int shiftDelay = 250;
void setup() {
pinMode(datapin, OUTPUT);
pinMode(latchpin, OUTPUT);
pinMode(enablepin, OUTPUT);
pinMode(clockpin, OUTPUT);
digitalWrite(latchpin, LOW);
digitalWrite(enablepin, LOW);
SB_CommandMode = B01; // Write to current control registers
SB_RedCommand = 127; // Full current == 127
SB_GreenCommand = 127;
SB_BlueCommand = 127;
SB_SendPacket();
}
void SB_SendPacket() {
SB_CommandPacket = SB_CommandMode & B11;
SB_CommandPacket = (SB_CommandPacket << 10) | (SB_BlueCommand & 1023);
SB_CommandPacket = (SB_CommandPacket << 10) | (SB_RedCommand & 1023);
SB_CommandPacket = (SB_CommandPacket << 10) | (SB_GreenCommand & 1023);
shiftOut(datapin, clockpin, MSBFIRST, SB_CommandPacket >> 24);
shiftOut(datapin, clockpin, MSBFIRST, SB_CommandPacket >> 16);
shiftOut(datapin, clockpin, MSBFIRST, SB_CommandPacket >> 8);
shiftOut(datapin, clockpin, MSBFIRST, SB_CommandPacket);
delay(5); // adjustment may be necessary depending on chain length
digitalWrite(latchpin,HIGH); // latch data into registers
delay(5); // adjustment may be necessary depending on chain length
digitalWrite(latchpin,LOW);
}
void goRed() {
for (int i = 0; i < 4; i++) {
SB_CommandMode = B00; // Write to PWM control registers
SB_RedCommand = 127;
SB_GreenCommand = 0;
SB_BlueCommand = 0;
SB_SendPacket();
}
}
void goBlue() {
for (int i = 0; i < 4; i++) {
SB_CommandMode = B00; // Write to PWM control registers
SB_RedCommand = 0;
SB_GreenCommand = 127;
SB_BlueCommand = 0;
SB_SendPacket();
}
}
void goGreen() {
for (int i = 0; i < 4; i++) {
SB_CommandMode = B00; // Write to PWM control registers
SB_RedCommand = 0;
SB_GreenCommand = 0;
SB_BlueCommand = 127;
SB_SendPacket();
}
}
void loop() {
goRed();
delay(shiftDelay);
goBlue();
delay(shiftDelay);
goGreen();
delay(shiftDelay);
}
Sample Code from macetech (http://macetech.com/blog/node/54)
int datapin = 10; // DI
int latchpin = 11; // LI
int enablepin = 12; // EI
int clockpin = 13; // CI
unsigned long SB_CommandPacket;
int SB_CommandMode;
int SB_BlueCommand;
int SB_RedCommand;
int SB_GreenCommand;
void setup() {
pinMode(datapin, OUTPUT);
pinMode(latchpin, OUTPUT);
pinMode(enablepin, OUTPUT);
pinMode(clockpin, OUTPUT);
digitalWrite(latchpin, LOW);
digitalWrite(enablepin, LOW);
}
void SB_SendPacket() {
SB_CommandPacket = SB_CommandMode & B11;
SB_CommandPacket = (SB_CommandPacket << 10) | (SB_BlueCommand & 1023);
SB_CommandPacket = (SB_CommandPacket << 10) | (SB_RedCommand & 1023);
SB_CommandPacket = (SB_CommandPacket << 10) | (SB_GreenCommand & 1023);
shiftOut(datapin, clockpin, MSBFIRST, SB_CommandPacket >> 24);
shiftOut(datapin, clockpin, MSBFIRST, SB_CommandPacket >> 16);
shiftOut(datapin, clockpin, MSBFIRST, SB_CommandPacket >> 8);
shiftOut(datapin, clockpin, MSBFIRST, SB_CommandPacket);
delay(1); // adjustment may be necessary depending on chain length
digitalWrite(latchpin,HIGH); // latch data into registers
delay(1); // adjustment may be necessary depending on chain length
digitalWrite(latchpin,LOW);
}
void loop() {
SB_CommandMode = B01; // Write to current control registers
SB_RedCommand = 127; // Full current
SB_GreenCommand = 127; // Full current
SB_BlueCommand = 127; // Full current
SB_SendPacket();
SB_CommandMode = B00; // Write to PWM control registers
SB_RedCommand = 1023; // Maximum red
SB_GreenCommand = 0; // Minimum green
SB_BlueCommand = 0; // Minimum blue
SB_SendPacket();
delay(250);
SB_CommandMode = B00; // Write to PWM control registers
SB_RedCommand = 0; // Minimum red
SB_GreenCommand = 1023; // Maximum green
SB_BlueCommand = 0; // Minimum blue
SB_SendPacket();
delay(250);
SB_CommandMode = B00; // Write to PWM control registers
SB_RedCommand = 0; // Minimum red
SB_GreenCommand = 0; // Minimum green
SB_BlueCommand = 1023; // Maximum blue
SB_SendPacket();
delay(250);
}