Difference between revisions of "Colored LED"

From Microduino Wiki
Jump to: navigation, search
Line 1: Line 1:
 
+
{{Language|Microduino-Color led}}
 
{| style="width: 800px;"
 
{| style="width: 800px;"
 
|-
 
|-
 
|
 
|
==Objective==
+
==Outline==
 +
Microduino-Color LED is a colored LED light with an built-in IC control chip, which can be cascaded arbitrarily. With only one I/O port, you can control all the lights. Each light can be controlled separately.
 +
==Features==
 +
*The chip adopts 5050 package, including control circuit and RGB chip inside.
 +
*With single bus control, you only need one I/O port to receive data and decode; 
 +
*With built-in IC control, serial cascading interface, it can have cascade control.
 +
*Each pixel's trichromatic color can achieve 256-level brightness control, completing full display of 16,777,216 colors and the scanning frequency is not less than 400Hz/s;
 +
*With built-in power-on and off reset circuits;
 +
*Ultra low power and ultra long life.
 +
==Specification==
 +
* Electrical specification
 +
**Operation voltage: 3.3V~5V
 +
**Output device
 +
*Tech parameter
 +
**Adopt WS2812 integrated light source control;
 +
**Each pixel's RGB can realize 256-level brightness display.
 +
**When refresh rate is 30 frame/s, the cascade number is not less than 1,024 points.
 +
**When the transmission distance of any two points is within three meters, there is no need to add any circuit.
 +
*Size
 +
**Size of LED:5mm*5mm,
 +
**Size of the board:20mm*20mm
 +
**1.27mm-pitch 4Pin interface connects with Sensorhub.
 +
*Connection method
 +
**System and LED(<big>IN</big>):System LED control needs to connect the signal of Sensorhub to the " big>IN</big>" base board of the LED.
 +
**LED Cascade(<big>OUT</big>): The first LED's <big>OUT</big> connects to the next LED's  <big>IN</big>.
 +
[[File: CoreUSB_Ble_steup11.jpg|600px|center]]
  
This tutorial will show you how to use Microduino color LED.  
+
==Document==
 
+
[[File:ws2812.pdf]]
==Equipment==
+
==Development==
*'''[[Microduino-CoreUSB]]'''
+
===Equipment===
*'''[[Microduino-Light]]'''
+
{|class="wikitable"
*'''[[Microduino-Sensorhub]]'''
+
|-
 
+
|Module||Number||Function
 
+
|-
 
+
|[[mCookie-CoreUSB]]||1||Core board
*Other hardware equipment:
+
|-
**1x USB cable
+
|[[mCookie-Hub]]||1||Sensor pin board 
 
+
|-
 
+
|[[Microduino-Color led]]||1||Colored LED light
==Program==
+
|}
 
+
*Other Equipment
You can find the code here: [https://github.com/Microduino/Microduino_Tutorials/blob/master/mCookie_sensor/MicroduinoLEDColor/MicroduinoLEDColor.ino MicroduinoLEDColor]
+
**One USB cable  
 +
**One sensor cable 
 +
[[File:color_led-module.jpg|center|600px]]
  
==Debugging==
+
===Preparation===
 +
*Setup 1:Connect the '''IN''' port on the back of the Color LED with the D6 port of the Hub. (D6 is the LED control pin, which can be freely changed by users.)
 +
[[file:mCookie-strandtext-sensor.JPG|600px|center]]
 +
*Setup 2:Connec tthe CoreUSB, Hub and Color LED to the computer with a USB cable. 
 +
[[file:mCookie-strandtext-pc.JPG|600px|center]]
 +
===Experiment One: Get the light lighten ===
 +
*Open Arduino IDE and copy the following code into IDE. 
 +
<source lang="cpp">
 +
#include <Adafruit_NeoPixel.h>
  
Step 1: Insert LED light into D6 pin of Microduino-SensorHub.
+
#define PIN 6  //led control pin  
[[File:MicroduinoFancyLight.png|600px|center|thumb]]
+
#define PIN_NUM 2 //Light number allowed 
  
 +
Adafruit_NeoPixel strip = Adafruit_NeoPixel(PIN_NUM, PIN, NEO_GRB + NEO_KHZ800);
  
Step 2:
+
void setup() {
Connect the Microduino-CoreUSB to your PC with the USB cable and upload the code.
+
  strip.begin();
[[File:MicroduinoFancyLight1.png|600px|center|thumb]]
+
  strip.show();
 +
}
  
 +
void loop() {
 +
  colorWipe(strip.Color(255, 0, 0), 500); // The first light goes read and after 500ms, the second light will go red.
 +
  colorWipe(strip.Color(0, 255, 0), 500); // The first light goes read and after 500ms, the second light will go green.
 +
  colorWipe(strip.Color(0, 0, 255), 500); // The first light goes read and after 500ms, the second light will go blue.
 +
}
  
Step 3:
+
// Fill the dots one after the other with a color
The LED light will go on after powering on.
+
void colorWipe(uint32_t c, uint8_t wait) {
[[File:MicroduinoFancyLight2.png|600px|center|thumb]]
+
  //Let each light turn to a specific color in loop. "C" indicates color; "wait" represents the time duration of each light .  
 +
  for (uint16_t i = 0; i < strip.numPixels(); i++) {
 +
    strip.setPixelColor(i, c);
 +
    strip.show();
 +
    delay(wait);
 +
  }
 +
}
 +
</source>
 +
*Select the right board and COM port, compile and download directly. Please refer to: [[AVR Core: Getting started]]
 +
[[file:upload.JPG|thumb|800px|center]]
 +
*Every 500ms switches a light, whose light is red, green and blue respectively in loop.
 +
===Program Debugging===
 +
*“#define PIN 6”: Define D6 control LED pin, which can be transfered through the HUB.
 +
*“#define PIN_NUM 2”: Define LED number allowed.
 +
*“colorWipe(uint32_t c, uint8_t wait)”Function Description: 
 +
**“uint32_t c”: Define the color of the light with the format " strip.Color(R, G, B)"
 +
***R:(0-255)。
 +
***G:(0-255)。
 +
***B:(0-255)。
 +
**“uint8_t wait”: Define light duration time of each light.
 +
**Example: colorWipe(strip.Color(255, 0, 0), 500); Every 500ms switches to the next light displaying red. 
 +
**Users can use the related tool to change color. [http://www.atool.org/colorpicker.php color]。
 +
===Experiment Two: Breathing Light ===
 +
*Open Arduino IDE and copy the following code into IDE.
 +
<source lang="cpp">
 +
#include <Adafruit_NeoPixel.h>
  
 +
#define PIN 6  //LED light control pin 
 +
#define PIN_NUM 2 //LED light number allowed
  
Step 4:
+
#define val_max 255
It will change colors constantly.
+
#define val_min 0
  
[[File:MicroduinoFancyLight3.png|600px|center|thumb]]
+
Adafruit_NeoPixel strip = Adafruit_NeoPixel(PIN_NUM, PIN, NEO_GRB + NEO_KHZ800);
  
 +
void setup() {
 +
  strip.begin();
 +
  strip.show();
 +
}
  
==Result==
+
void loop() {
 +
  rainbowCycle( 255, 0, 0, 10);//Red breathing
 +
  rainbowCycle( 0, 255, 0, 10);//Green breathing 
 +
  rainbowCycle( 0, 0, 255, 10);//Blue breathing 
 +
}
  
You can control the color of the LED light by editing the code.  
+
void colorSet(uint32_t c) {
 +
  for (uint16_t i = 0; i < strip.numPixels(); i++) {
 +
    strip.setPixelColor(i, c);
 +
  }
 +
  strip.show();
 +
}
  
==Video==
+
void rainbowCycle( int r, int g, int b, uint8_t wait) {
 +
  for (int val = 0; val < 255; val++)
 +
  {
 +
    colorSet(strip.Color(map(val, val_min, val_max, 0, r), map(val, val_min, val_max, 0, g), map(val, val_min, val_max, 0, b)));
 +
    delay(wait);
 +
  }
 +
  for (int val = 255; val >= 0; val--)
 +
  {
 +
    colorSet(strip.Color(map(val, val_min, val_max, 0, r), map(val, val_min, val_max, 0, g), map(val, val_min, val_max, 0, b)));
 +
    delay(wait);
 +
  }
 +
}
 +
</source>
 +
*Choose the right board and COM port, compile and download. 
 +
[[file:upload.JPG|thumb|800px|center]]
 +
*In result, the red, green and blue lights "breath" in loop. 
  
 +
===Code Debugging===
 +
*“rainbowCycle( int r, int g, int b, uint8_t wait)”Function Description:
 +
**r:(0-255)。
 +
**g:(0-255)。
 +
**b:(0-255)。
 +
**“uint8_t wait”: Define breathing speed. The smaller the value is, the faster the breath gets.
 +
==Application==
 +
*LED full-color character string, LED full-color module and LED guardrail tube.
 +
*LED point light source, LED pixel screen and LED shaped screen.
 
|}
 
|}

Revision as of 08:49, 2 November 2015

Language: English  • 中文

Outline

Microduino-Color LED is a colored LED light with an built-in IC control chip, which can be cascaded arbitrarily. With only one I/O port, you can control all the lights. Each light can be controlled separately.

Features

  • The chip adopts 5050 package, including control circuit and RGB chip inside.
  • With single bus control, you only need one I/O port to receive data and decode;
  • With built-in IC control, serial cascading interface, it can have cascade control.
  • Each pixel's trichromatic color can achieve 256-level brightness control, completing full display of 16,777,216 colors and the scanning frequency is not less than 400Hz/s;
  • With built-in power-on and off reset circuits;
  • Ultra low power and ultra long life.

Specification

  • Electrical specification
    • Operation voltage: 3.3V~5V
    • Output device
  • Tech parameter
    • Adopt WS2812 integrated light source control;
    • Each pixel's RGB can realize 256-level brightness display.
    • When refresh rate is 30 frame/s, the cascade number is not less than 1,024 points.
    • When the transmission distance of any two points is within three meters, there is no need to add any circuit.
  • Size
    • Size of LED:5mm*5mm,
    • Size of the board:20mm*20mm
    • 1.27mm-pitch 4Pin interface connects with Sensorhub.
  • Connection method
    • System and LED(IN):System LED control needs to connect the signal of Sensorhub to the " big>IN</big>" base board of the LED.
    • LED Cascade(OUT): The first LED's OUT connects to the next LED's IN.
CoreUSB Ble steup11.jpg

Document

File:Ws2812.pdf

Development

Equipment

Module Number Function
mCookie-CoreUSB 1 Core board
mCookie-Hub 1 Sensor pin board
Microduino-Color led 1 Colored LED light
  • Other Equipment
    • One USB cable
    • One sensor cable
Color led-module.jpg

Preparation

  • Setup 1:Connect the IN port on the back of the Color LED with the D6 port of the Hub. (D6 is the LED control pin, which can be freely changed by users.)
MCookie-strandtext-sensor.JPG
  • Setup 2:Connec tthe CoreUSB, Hub and Color LED to the computer with a USB cable.
MCookie-strandtext-pc.JPG

Experiment One: Get the light lighten

  • Open Arduino IDE and copy the following code into IDE.
#include <Adafruit_NeoPixel.h>

#define PIN 6   //led control pin   
#define PIN_NUM 2 //Light number allowed  

Adafruit_NeoPixel strip = Adafruit_NeoPixel(PIN_NUM, PIN, NEO_GRB + NEO_KHZ800);

void setup() {
  strip.begin();
  strip.show(); 
}

void loop() {
  colorWipe(strip.Color(255, 0, 0), 500); // The first light goes read and after 500ms, the second light will go red. 
  colorWipe(strip.Color(0, 255, 0), 500); // The first light goes read and after 500ms, the second light will go green.
  colorWipe(strip.Color(0, 0, 255), 500); // The first light goes read and after 500ms, the second light will go blue.
}

// Fill the dots one after the other with a color
void colorWipe(uint32_t c, uint8_t wait) {
  //Let each light turn to a specific color in loop. "C" indicates color; "wait" represents the time duration of each light . 
  for (uint16_t i = 0; i < strip.numPixels(); i++) {
    strip.setPixelColor(i, c);
    strip.show();
    delay(wait);
  }
}
Upload.JPG
  • Every 500ms switches a light, whose light is red, green and blue respectively in loop.

Program Debugging

  • “#define PIN 6”: Define D6 control LED pin, which can be transfered through the HUB.
  • “#define PIN_NUM 2”: Define LED number allowed.
  • “colorWipe(uint32_t c, uint8_t wait)”Function Description:
    • “uint32_t c”: Define the color of the light with the format " strip.Color(R, G, B)"
      • R:(0-255)。
      • G:(0-255)。
      • B:(0-255)。
    • “uint8_t wait”: Define light duration time of each light.
    • Example: colorWipe(strip.Color(255, 0, 0), 500); Every 500ms switches to the next light displaying red.
    • Users can use the related tool to change color. color

Experiment Two: Breathing Light

  • Open Arduino IDE and copy the following code into IDE.
#include <Adafruit_NeoPixel.h>

#define PIN 6   //LED light control pin  
#define PIN_NUM 2 //LED light number allowed

#define val_max 255
#define val_min 0

Adafruit_NeoPixel strip = Adafruit_NeoPixel(PIN_NUM, PIN, NEO_GRB + NEO_KHZ800);

void setup() {
  strip.begin();
  strip.show();
}

void loop() {
  rainbowCycle( 255, 0, 0, 10);//Red breathing 
  rainbowCycle( 0, 255, 0, 10);//Green breathing   
  rainbowCycle( 0, 0, 255, 10);//Blue breathing  
}

void colorSet(uint32_t c) {
  for (uint16_t i = 0; i < strip.numPixels(); i++) {
    strip.setPixelColor(i, c);
  }
  strip.show();
}

void rainbowCycle( int r, int g, int b, uint8_t wait) {
  for (int val = 0; val < 255; val++)
  {
    colorSet(strip.Color(map(val, val_min, val_max, 0, r), map(val, val_min, val_max, 0, g), map(val, val_min, val_max, 0, b)));
    delay(wait);
  }
  for (int val = 255; val >= 0; val--)
  {
    colorSet(strip.Color(map(val, val_min, val_max, 0, r), map(val, val_min, val_max, 0, g), map(val, val_min, val_max, 0, b)));
    delay(wait);
  }
}
  • Choose the right board and COM port, compile and download.
Upload.JPG
  • In result, the red, green and blue lights "breath" in loop.

Code Debugging

  • “rainbowCycle( int r, int g, int b, uint8_t wait)”Function Description:
    • r:(0-255)。
    • g:(0-255)。
    • b:(0-255)。
    • “uint8_t wait”: Define breathing speed. The smaller the value is, the faster the breath gets.

Application

  • LED full-color character string, LED full-color module and LED guardrail tube.
  • LED point light source, LED pixel screen and LED shaped screen.