Проблема подключения Arduino MEGA 2560 + светодиодная лента на LPD6803 чипе.
- Войдите на сайт для отправки комментариев
Пт, 21/11/2014 - 03:32
Возникла проблема при подключении светодиодной ленты на микросхеме LPD6803 к Arduino MEGA 2560.
Светодиодная лента 12В.
Подключаю:
- GND ленты к GND пину Arduino;
- 12В ленты от внешнего источника питания;
- Cin ленты к 11 пину (Digital PWM) Arduino;
- Din ленты к 12 пину (Digital PWM) Arduino;
Использую библиотеку: https://github.com/adafruit/LPD6803-RGB-Pixels
Загружаю стандартный пример.
#include <TimerOne.h>
#include "LPD6803.h"
//Example to control LPD6803-based RGB LED Modules in a strand
// Original code by Bliptronics.com Ben Moyes 2009
//Use this as you wish, but please give credit, or at least buy some of my LEDs!
// Code cleaned up and Object-ified by ladyada, should be a bit easier to use
/*****************************************************************************/
// Choose which 2 pins you will use for output.
// Can be any valid output pins.
int dataPin = 12; // 'yellow' wire
int clockPin = 11; // 'green' wire
// Don't forget to connect 'blue' to ground and 'red' to +5V
// Timer 1 is also used by the strip to send pixel clocks
// Set the first variable to the NUMBER of pixels. 20 = 20 pixels in a row
LPD6803 strip = LPD6803(30, dataPin, clockPin);
void setup() {
// The Arduino needs to clock out the data to the pixels
// this happens in interrupt timer 1, we can change how often
// to call the interrupt. setting CPUmax to 100 will take nearly all all the
// time to do the pixel updates and a nicer/faster display,
// especially with strands of over 100 dots.
// (Note that the max is 'pessimistic', its probably 10% or 20% less in reality)
strip.setCPUmax(50); // start with 50% CPU usage. up this if the strand flickers or is slow
// Start up the LED counter
strip.begin();
// Update the strip, to start they are all 'off'
strip.show();
}
void loop() {
// Some example procedures showing how to display to the pixels
colorWipe(Color(63, 0, 0), 50);
colorWipe(Color(0, 63, 0), 50);
colorWipe(Color(0, 0, 63), 50);
rainbow(50);
rainbowCycle(50);
}
void rainbow(uint8_t wait) {
int i, j;
for (j=0; j < 96 * 3; j++) { // 3 cycles of all 96 colors in the wheel
for (i=0; i < strip.numPixels(); i++) {
strip.setPixelColor(i, Wheel( (i + j) % 96));
}
strip.show(); // write all the pixels out
delay(wait);
}
}
// Slightly different, this one makes the rainbow wheel equally distributed
// along the chain
void rainbowCycle(uint8_t wait) {
int i, j;
for (j=0; j < 96 * 5; j++) { // 5 cycles of all 96 colors in the wheel
for (i=0; i < strip.numPixels(); i++) {
// tricky math! we use each pixel as a fraction of the full 96-color wheel
// (thats the i / strip.numPixels() part)
// Then add in j which makes the colors go around per pixel
// the % 96 is to make the wheel cycle around
strip.setPixelColor(i, Wheel( ((i * 96 / strip.numPixels()) + j) % 96) );
}
strip.show(); // write all the pixels out
delay(wait);
}
}
// fill the dots one after the other with said color
// good for testing purposes
void colorWipe(uint16_t c, uint8_t wait) {
int i;
for (i=0; i < strip.numPixels(); i++) {
strip.setPixelColor(i, c);
strip.show();
delay(wait);
}
}
/* Helper functions */
// Create a 15 bit color value from R,G,B
unsigned int Color(byte r, byte g, byte b)
{
//Take the lowest 5 bits of each value and append them end to end
return( ((unsigned int)g & 0x1F )<<10 | ((unsigned int)b & 0x1F)<<5 | (unsigned int)r & 0x1F);
}
//Input a value 0 to 127 to get a color value.
//The colours are a transition r - g -b - back to r
unsigned int Wheel(byte WheelPos)
{
byte r,g,b;
switch(WheelPos >> 5)
{
case 0:
r=31- WheelPos % 32; //Red down
g=WheelPos % 32; // Green up
b=0; //blue off
break;
case 1:
g=31- WheelPos % 32; //green down
b=WheelPos % 32; //blue up
r=0; //red off
break;
case 2:
b=31- WheelPos % 32; //blue down
r=WheelPos % 32; //red up
g=0; //green off
break;
}
return(Color(r,g,b));
}
Ничего не происходит. Диоды не горят.
Подскажите, пожалуйста, что делаю не правильно?
Земли ардуины и внешнего бп ленты объеденили?
Да, конечно.
Как успехи?
Вот только сейчас пришло письмо с уведомлением о новом комментарии О_о