Can someone help me please. I managed to get de Arduino working with the WS2812B leds and Boblight. For some reason Enigmalight won't work.
Because it didn't work completely like I would I played a little with all the settings and at one moment it stopped and what ever I tried it won't start again.
I Use this bob light.conf file (the original files won't upload, no permission)
#[global]
#interface 127.0.0.1
#port 19333
[device]
name ambilight
output /dev/ttyACM0
type momo
channels 387
interval 20000
prefix 53 74 65 66 61 6E
rate 500000
#debug off
delayafteropen 1000000
And this sketch I found on the arduino forum
* t4a_boblight
* © 2014 Hans Luijten, www.tweaking4all.com
*
* t4a_boblight is free software and can be distributed and/or modified
* freely as long as the copyright notice remains in place.
* Nobody is allowed to charge you for this code.
* Use of this code is entirely at your own risk.
*/
#include "Adafruit_NeoPixel.h"
// DEFINITIONS
#define STARTCOLOR 0xFFFFFF // LED colors at start
#define BLACK 0x000000 // LED color BLACK
#define DATAPIN 13 // Datapin
#define LEDCOUNT 129 // Number of LEDs used for boblight
#define SHOWDELAY 200 // Delay in micro seconds before showing
#define BAUDRATE 500000 // Serial port speed, 460800 tested with Arduino Uno R3
#define BRIGHTNESS 50 // Max. brightness in %
const char prefix[] = {0x41, 0x64, 0x61, 0x00, 0x18, 0x4D}; // Start prefix
char buffer[sizeof(prefix)]; // Temp buffer for receiving prefix data
// Init LED strand, WS2811/WS2912 specific
// These might work for other configurations:
// NEO_KHZ800 800 KHz bitstream (most NeoPixel products w/WS2812 LEDs)
// NEO_KHZ400 400 KHz (classic 'v1' (not v2) FLORA pixels, WS2811 drivers)
// NEO_GRB Pixels are wired for GRB bitstream (most NeoPixel products)
// NEO_RGB Pixels are wired for RGB bitstream (v1 FLORA pixels, not v2)
Adafruit_NeoPixel strip = Adafruit_NeoPixel(LEDCOUNT, DATAPIN, NEO_GRB + NEO_KHZ800);
int state; // Define current state
#define STATE_WAITING 1 // - Waiting for prefix
#define STATE_DO_PREFIX 2 // - Processing prefix
#define STATE_DO_DATA 3 // - Handling incoming LED colors
int readSerial; // Read Serial data (1)
int currentLED; // Needed for assigning the color to the right LED
void setup()
{
strip.begin(); // Init LED strand, set all black, then all to startcolor
strip.setBrightness( (255 / 100) * BRIGHTNESS );
setAllLEDs(BLACK, 0);
setAllLEDs(STARTCOLOR, 5);
Serial.begin(BAUDRATE); // Init serial speed
state = STATE_WAITING; // Initial state: Waiting for prefix
}
void loop()
{
switch(state)
{
case STATE_WAITING: // *** Waiting for prefix ***
if( Serial.available()>0 )
{
readSerial = Serial.read(); // Read one character
if ( readSerial == prefix[0] ) // if this character is 1st prefix char
{ state = STATE_DO_PREFIX; } // then set state to handle prefix
}
break;
case STATE_DO_PREFIX: // *** Processing Prefix ***
if( Serial.available() > sizeof(prefix) - 2 )
{
Serial.readBytes(buffer, sizeof(prefix) - 1);
for( int Counter = 0; Counter < sizeof(prefix) - 1; Counter++)
{
if( buffer[Counter] == prefix[Counter+1] )
{
state = STATE_DO_DATA; // Received character is in prefix, continue
currentLED = 0; // Set current LED to the first one
}
else
{
state = STATE_WAITING; // Crap, one of the received chars is NOT in the prefix
break; // Exit, to go back to waiting for the prefix
} // end if buffer
} // end for Counter
} // end if Serial
break;
case STATE_DO_DATA: // *** Process incoming color data ***
if( Serial.available() > 2 ) // if we receive more than 2 chars
{
Serial.readBytes( buffer, 3 ); // Abuse buffer to temp store 3 charaters
strip.setPixelColor( currentLED++, buffer[0], buffer[1], buffer[2]); // and assing to LEDs
}
if( currentLED > LEDCOUNT ) // Reached the last LED? Display it!
{
strip.show(); // Make colors visible
delayMicroseconds(SHOWDELAY); // Wait a few micro seconds
state = STATE_WAITING; // Reset to waiting ...
currentLED = 0; // and go to LED one
break; // and exit ... and do it all over again
}
break;
} // switch(state)
} // loop
// Sets the color of all LEDs in the strand to 'color'
// If 'wait'>0 then it will show a swipe from start to end
void setAllLEDs(uint32_t color, int wait)
{
for ( int Counter=0; Counter < LEDCOUNT; Counter++ ) // For each LED
{
strip.setPixelColor( Counter, color ); // .. set the color
if( wait > 0 ) // if a wait time was set then
{
strip.show(); // Show the LED color
delay(wait); // and wait before we do the next LED
} // if wait
} // for Counter
strip.show(); // Show all LEDs
} // setAllLEDs
These worked for me. The sketch is working for me when I changed the color or the brightness but the bob light program doesn't manage to sent signals to the arduino.