RGBpixel: Difference between revisions

From Noisebridge
Jump to navigation Jump to search
Line 9: Line 9:
[[File:CoolNeonRGBpixelWires.jpeg|400px]]
[[File:CoolNeonRGBpixelWires.jpeg|400px]]


== Code ==
<pre>
/*
/*
Developed by: thex (noisebridge)
Developed by: thex (noisebridge)
Updated: 20131122
Updated: 20131122
Revised: 20140829 (evil dan)
https://noisebridge.net/wiki/RGBpixel
https://noisebridge.net/wiki/RGBpixel
*/
*/


// Arduino UNO Default wiring, Yellow to Pin 13 & Green to Pin 11


#include <SPI.h>
#include <SPI.h>
Line 68: Line 67:
     sendColor(maxPower,0x00,0x00);
     sendColor(maxPower,0x00,0x00);
     // ORANGE
     // ORANGE
     sendColor(maxPower, maxPower>>2, 0x00);
     sendColor(maxPower, maxPower>>1, 0x00);
     // YELLOW
     // YELLOW
     sendColor(maxPower, maxPower, 0x00);
     sendColor(maxPower, maxPower, 0x00);
     // CHARTREUSE
     // CHARTREUSE
     sendColor(maxPower>>2, maxPower, 0x00);
     sendColor(maxPower>>1, maxPower, 0x00);
     // GREEN
     // GREEN
     sendColor(0x00,maxPower,0x00);
     sendColor(0x00,maxPower,0x00);
     // SPRING
     // SPRING
     sendColor(0x00, maxPower, maxPower>>2);
     sendColor(0x00, maxPower, maxPower>>1);
     // CYAN
     // CYAN
     sendColor(0x00, maxPower, maxPower);
     sendColor(0x00, maxPower, maxPower);
     // AZURE
     // AZURE
     sendColor(0x00, maxPower>>2, maxPower);
     sendColor(0x00, maxPower>>1, maxPower);
     // BLUE
     // BLUE
     sendColor(0x00,0x00,maxPower);
     sendColor(0x00,0x00,maxPower);
     // VIOLOET
     // VIOLOET
     sendColor(maxPower>>2, 0x00, maxPower);
     sendColor(maxPower>>1, 0x00, maxPower);
     // MAGENTA
     // MAGENTA
     sendColor(maxPower, 0x00, maxPower);
     sendColor(maxPower, 0x00, maxPower);
     // ROSE
     // ROSE
     sendColor(maxPower, 0x00, maxPower>>2);
     sendColor(maxPower, 0x00, maxPower>>1);
   }
   }
   sendEmptyFrame();
   sendEmptyFrame();
Line 129: Line 128:
   return ~flag;
   return ~flag;
}
}
</pre>


== Links ==
== Links ==

Revision as of 19:56, 29 August 2014

Addressable RGB LED "pixels" from Cool Neon

Wiring

  • RED - +5v
  • GREEN - Data
  • YELLOW - Clock
  • BLUE - Ground

CoolNeonRGBpixelWires.jpeg

/* Developed by: thex (noisebridge) Updated: 20131122 Revised: 20140829 (evil dan) https://noisebridge.net/wiki/RGBpixel

  • /

// Arduino UNO Default wiring, Yellow to Pin 13 & Green to Pin 11

  1. include <SPI.h>

int waitTime = 100; byte maxPower = 0x33;

int offset = 0;

/* color hex r g b deg

==============================

RED #FF0000 255, 0, 0 0 ORANGE #FF7F00 255, 127, 0 30 YELLOW #FFFF00 255, 255, 0 60 CHARTREUSE #7FFF00 127, 255, 0 90 GREEN #00FF00 0, 255, 0 120 SPRING #00FF7F 0, 255, 127 150 CYAN #00FFFF 0, 255, 255 180 AZURE #007FFF 0, 127, 255 210 BLUE #0000FF 0, 0, 255 240 VIOLET #7F00FF 127, 0, 255 270 MAGENTA #FF00FF 255, 0, 255 300 ROSE #FF007F 255, 0, 127 330

  • /

void setup() {

 // Set the SPI parameters
 SPI.begin();
 SPI.setBitOrder(MSBFIRST);
 SPI.setDataMode(SPI_MODE0);
 SPI.setClockDivider(SPI_CLOCK_DIV2);
 
 sendEmptyFrame();

}

void loop() {

 for (int o = 0; o < offset; o++)
   sendColor(maxPower, maxPower, maxPower);
   
 offset++;
 if (offset > 25)
   offset = 0;
   
 for (int i = 0; i < 2; i++)
 {
   // RED
   sendColor(maxPower,0x00,0x00);
   // ORANGE
   sendColor(maxPower, maxPower>>1, 0x00);
   // YELLOW
   sendColor(maxPower, maxPower, 0x00);
   // CHARTREUSE
   sendColor(maxPower>>1, maxPower, 0x00);
   // GREEN
   sendColor(0x00,maxPower,0x00);
   // SPRING
   sendColor(0x00, maxPower, maxPower>>1);
   // CYAN
   sendColor(0x00, maxPower, maxPower);
   // AZURE
   sendColor(0x00, maxPower>>1, maxPower);
   // BLUE
   sendColor(0x00,0x00,maxPower);
   // VIOLOET
   sendColor(maxPower>>1, 0x00, maxPower);
   // MAGENTA
   sendColor(maxPower, 0x00, maxPower);
   // ROSE
   sendColor(maxPower, 0x00, maxPower>>1);
 }
 sendEmptyFrame();
 
 delay(waitTime);

}


// Extrapolated functions from TCL Library

void sendFrame(byte flag, byte red, byte green, byte blue) {

 SPI.transfer(flag);
 SPI.transfer(blue);
 SPI.transfer(green);
 SPI.transfer(red);

}

void sendColor(byte red, byte green, byte blue)

{
 byte flag;
 flag = makeFlag(red,green,blue);
 sendFrame(flag,red,green,blue);

}

void sendEmptyFrame() {

 sendFrame(0x00, 0x00, 0x00, 0x00);

}

byte makeFlag(byte red, byte green, byte blue) {

 byte flag = 0;
 flag = (red&0xC0)>>6;
 flag |= ((green&0xC0)>>4);
 flag |= ((blue&0xC0)>>2);
 return ~flag;

}

Links