Фоновая подсветка
- Войдите на сайт для отправки комментариев
Пт, 21/02/2014 - 15:48
Есть ардуино нано V7.Светодиодная адрессная лента на чипах WS2811
Помогите изменить код под данный тип ленты
#include <SPI.h> #include <SmallUart.h> unsigned long lastTime; // Time strip was updated last time const unsigned long fadeTimeout = 3000; //////////////////////////////////////////////////////////// // void setup() { UART_Init(115200); SPI.begin(); SPI.setBitOrder(MSBFIRST); SPI.setDataMode(SPI_MODE0); SPI.setClockDivider(SPI_CLOCK_DIV8); blackoutAll(); delay(1); lastTime = millis(); } //////////////////////////////////////////////////////////// // void loop() { uint8_t data; UART_SendByte( 'R' ); // Byte "We're ready" bool valid = false; data = uartRead( valid ); if ( valid ) { uint16_t pix_num = data * 3; // Total following bytes for( uint16_t i=0; i < pix_num; i++ ) { data = uartRead( valid ); if ( !valid ) break; SPI.transfer( data ); // Transfer byte to SPI } lastTime = millis(); } if ( millis() - lastTime > fadeTimeout ) blackoutAll(); } //////////////////////////////////////////////////////////// // Turn off all possible 256 leds void blackoutAll() { for ( int16_t i = 0; i < 768; i++ ) SPI.transfer( 0 ); //погасить все пикселы ленты } //////////////////////////////////////////////////////////// // Read byte with timeout unsigned char uartRead( bool& valid ) { uint8_t res = 0; valid = false; for ( uint8_t i = 0; i < 255; ++i ) { // Max timeout 256*10 if( UART_ReadByte( res ) ) { valid = true; break; } delayMicroseconds(10); } return res; }