Проблема подключения 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)); }
Ничего не происходит. Диоды не горят.
Подскажите, пожалуйста, что делаю не правильно?
Земли ардуины и внешнего бп ленты объеденили?
Да, конечно.
Как успехи?
Вот только сейчас пришло письмо с уведомлением о новом комментарии О_о