<fp.
was able to use the code ardunio so it will work the ws2811(100 pixel string) and tried to add in the code for the ssr but the ssr dose not turn on.
what did i do wrong? Anybody know?
here is the code for the 32 ssr short and sweet code that works the 32 ssr found both codes on line can't rember the original creators but thank you.
const int numChannels = 32;
// List Arduino pins in Channel number order
int channels[numChannels] = {2,3,4,5,6,7,8,9,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45};
int incomingByte[numChannels];
void setup()
{
Serial.begin(9600);
for(int i = 0; i < numChannels; i++){
pinMode(channels[i], OUTPUT);
// Start with lights turned off
//digitalWrite(channels[i],0);
digitalWrite(channels[i],0);
}
}
void loop()
{
if (Serial.available() >= numChannels)
{
for (int i=0; i<numChannels;i++)
incomingByte[i] = Serial.read();
for(int i = 0; i < numChannels; i++)
//digitalWrite(channels[i], incomingByte[i]);
digitalWrite(channels[i], incomingByte[i]);
//LED STUFF
}
}
here is the code for the rgbs that work.
#include <Adafruit_NeoPixel.h> // This is the Neo-Pixel library (ws2812)
// Change to the library for your pixel types
// Suggest using a library created by Adafruit
// so the function names will be the same
#define DPIN 11 // Change this to the pin# connected to your pixels DataIn
// Will probably need to define a ClockPin for other pixel
int PixelCount = 100; // Set this to the number of Pixels connected
int bugLevel = 0; // This is just a way I manage turning debugging over serial on/off
/* Sets up the NeoPixel Strip object
Replace with proper Object initiation for your pixel types */
Adafruit_NeoPixel strip = Adafruit_NeoPixel(PixelCount, DPIN, NEO_RGB + NEO_KHZ800);
void setup()
{
delay(0); // A delay for a reason I can't remember. I can live with one in the setup.
strip.begin(); // Get strip started
strip.show(); // Initialize all pixels to 'off'
Serial.begin(38400); // Start the Serial communication
bugit("Setup Complete",10); // DEBUG: Confirm setup is complete
}
void loop()
{ // START LOOP
if (Serial.available()>2) // Wait for a few bytes to be recieved
{
bugit("Waiting for Header",10); // DEBUG: Header waiting started
waitForVixenHeader(); // Header check function
bugit("VixStart Triggered",10); // DEBUG: Header found; getting color data
for (int pixCount=0; pixCount<PixelCount;pixCount++) // Do this for as many Pixels defined in PixelCount
{
int RGB[3]; // Create array to hold this pixels RGB value
for (int color = 0;color<3;color++) // For the next 3 incoming bytes
{
while (Serial.available() < 1) // Wait for bytes to be received
{
delay(10);
}
RGB[color] = Serial.read(); // Save this byte to the correct RGB value
} // Repeat until bytes for this pixels RGB value have been recieved
strip.setPixelColor(pixCount,RGB[0],RGB[1],RGB[2]); //Set this pixels new color
} // Repeat untill all pixels have had new RGB value set
strip.show(); // Update the strip and show with new color
} // YAY! DO IT AGAIN!
} // END OF LOOP
/**
* FUNC bugit [manages printing of debugging based on debugging level]
* @param String bugstr [string to be be printed]
* @param int blevel [the level at which this debugging should be ignored]
*
*/
int bugit(String bugstr,int blevel)
{
if (blevel < bugLevel)
{
Serial.println(bugstr);
}
}
/**
* I 'borrowed' snippets of this waitForVixenHeader() function from some code I found online
* Can't find the originator now but thank you. It works well.
*
*/
void waitForVixenHeader()
{
bugit("Waiting Loop",10);
char *header="VIXStart";
char buffer[3];
int index = 0;
while (true)
{
int inByte = Serial.read();
if(inByte==-1)
{
continue;
}
buffer[index] = inByte;
if(buffer[index]!=header[index])
{
index=-1; // not the right sequence restart
}
buffer[index+1] = 0; // add null
index++;
if(index==8)
{
return;
}
}
}
then i tried to combine like this :
/*=====================================
= VixPix Sketch =
For basic control of RGB Pixels
using Vixen Generic Serial Protocol
=====================================*/
/**
* VIXEN Setup:
* In Vixen display setup...
* - Add an element group containing one element for each pixel attached to arduino
* - Configure the 'Color Handling' as "They can be any color: Full RGB"
* - Add a "Generic Serial Controller"
* - Name it what you want (Although... Jdc928IsAwesome is great controller name)
* - Set the channel count to 3x the number of Pixels you have
* - Save, then configure these options
* - Com Port: choose the correct port for your arduino's serial
* - Baud Rate: 115200 (or whatever you changed it to below)
* - Click OK
* - Check the box "Send a text header"
* - Type "VIXStart" in the header text box
* - Click "OK"
*
* - Click and highlight the newly added Element in the elements list
* - Click and highlight the newly created controller
* - Your "Total Patch Points" and "Output" counts should match
* - Click "Patch Elements to Controllers"
* - Click OK and you should be ready to go
*
*
* You should now be able open a Sequence
add some effects to the new channels
and see the strips responding accordingly
*/
/**
* Pixel Strip Setup
* Strips setups vary but generally as follows
* - If your using a large number of strips you will
* probably want to power them externally.
*
* - Connect external V+ to strip Vin
* - Connect external Gnd to strip Gnd
* - Connect external Gnd to Arduino Gnd
* - Connect Strip Data to proper pin on Arduino
* - Connect Strip DataClock to proper pin on Arduino if not using ws2812
*/
#include <Adafruit_NeoPixel.h> // This is the Neo-Pixel library (ws2812)
// Change to the library for your pixel types
// Suggest using a library created by Adafruit
// so the function names will be the same
#define DPIN 11 // Change this to the pin# connected to your pixels DataIn
// Will probably need to define a ClockPin for other pixel
int PixelCount = 100; // Set this to the number of Pixels connected
int bugLevel = 0; // This is just a way I manage turning debugging over serial on/off
//this is part of the ssr code
const int numChannels = 32;
// List Arduino pins in Channel number order
int channels[numChannels] = {2,3,4,5,6,7,8,9,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45};
int incomingByte[numChannels];
//now pixel code
/* Sets up the NeoPixel Strip object
Replace with proper Object initiation for your pixel types */
Adafruit_NeoPixel strip = Adafruit_NeoPixel(PixelCount, DPIN, NEO_RGB + NEO_KHZ800);
void setup()
{
delay(0); // A delay for a reason I can't remember. I can live with one in the setup.
strip.begin(); // Get strip started
strip.show(); // Initialize all pixels to 'off'
Serial.begin(38400); // Start the Serial communication
bugit("Setup Complete",10); // DEBUG: Confirm setup is complete
//this is for the ssr
for(int i = 301; i < numChannels; i++){
pinMode(channels[i], OUTPUT);
// Start with lights turned off
//digitalWrite(channels[i],0);
digitalWrite(channels[i],0);
}
}
void loop()
{ // START LOOP
//part of ssr
if (Serial.available() >= numChannels)
{
for (int i=0; i<numChannels;i++)
incomingByte[i+300] = Serial.read();
for(int i = 0; i < numChannels; i++)
//digitalWrite(channels[i], incomingByte[i]);
digitalWrite(channels[i], 0+incomingByte[i]);
}
// end of ssr now the rest is for pixels
if (Serial.available()>2) // Wait for a few bytes to be recieved
{
bugit("Waiting for Header",10); // DEBUG: Header waiting started
waitForVixenHeader(); // Header check function
bugit("VixStart Triggered",10); // DEBUG: Header found; getting color data
for (int pixCount=0; pixCount<PixelCount;pixCount++) // Do this for as many Pixels defined in PixelCount
{
int RGB[3]; // Create array to hold this pixels RGB value
for (int color = 0;color<3;color++) // For the next 3 incoming bytes
{
while (Serial.available() < 1) // Wait for bytes to be received
{
delay(10);
}
RGB[color] = Serial.read(); // Save this byte to the correct RGB value
} // Repeat until bytes for this pixels RGB value have been recieved
strip.setPixelColor(pixCount,RGB[0],RGB[1],RGB[2]); //Set this pixels new color
} // Repeat untill all pixels have had new RGB value set
strip.show(); // Update the strip and show with new color
} // YAY! DO IT AGAIN!
} // END OF LOOP
/**
* FUNC bugit [manages printing of debugging based on debugging level]
* @param String bugstr [string to be be printed]
* @param int blevel [the level at which this debugging should be ignored]
*
*/
int bugit(String bugstr,int blevel)
{
if (blevel < bugLevel)
{
Serial.println(bugstr);
}
}
/**
* I 'borrowed' snippets of this waitForVixenHeader() function from some code I found online
* Can't find the originator now but thank you. It works well.
*
*/
void waitForVixenHeader()
{
bugit("Waiting Loop",10);
char *header="VIXStart";
char buffer[3];
int index = 0;
while (true)
{
int inByte = Serial.read();
if(inByte==-1)
{
continue;
}
buffer[index] = inByte;
if(buffer[index]!=header[index])
{
index=-1; // not the right sequence restart
}
buffer[index+1] = 0; // add null
index++;
if(index==8)
{
return;
}
}
}
but for some reason only the leds will work.
Any thoughts would be appreciated
Thank You in advance.
<pop..
sorry i know not every thing is spelled right, not my strongest trait.