1

我花了几天时间在互联网上搜索有关此的信息,但并不高兴:(真的希望有人能提供帮助。

我正在尝试使用 boblight、Arduino Uno 和 LED 灯条创建流光溢彩克隆。这应该会导致我房间里的 LED 根据屏幕上的颜色做出反应并改变颜色。

我所做的与其他人所做的主要区别在于我没有带有单独可编程 LED 的 LED 灯条。我不是让 LED 与屏幕上的不同点匹配,而是基于屏幕上最主要(或平均?)的颜色,让所有 LED 的颜色相同。

我的电路的设置方式与此页面上的图像类似,除了没有电阻器(抱歉,我没有足够的声誉点来将图像发布到这篇文章中:

http://www.jerome-bernard.com/images/rgb-led-strips-mosfets.png

我写了一个非常简单的草图来改变 LED 灯条的颜色,效果很好。我还在我的 Windows PC 上设置了 boblight,包括 .config 文件,我认为这也可以(虽然不确定如何判断!)

配置文件如下所示:

[global]
#interface  127.0.0.1
port        19333


[device]
name            arduino_ambilight
type            atmo 
output          "com3" 
rate            115200 
channels        3
interval        20000 
allowsync       on 
debug           on 
delayafteropen  10000000

[color]
name            red
rgb             FF0000

[color]
name            green
rgb             00FF00

[color]
name            blue
rgb             0000FF

[light]
name            main
color           red     arduino_ambilight 9
color           green   arduino_ambilight 10
color           blue    arduino_ambilight 11
hscan           0 100
vscan           0 100

问题是,我不知道如何将信号从 boblight 传输到我的 Arduino,以及如何编写草图来解释 boblight 信息。

更新

我听从了 John b 的建议,并将 Adafruit LEDStream 草图上传到我的 Arduino。(有关代码的链接,请参见下面 John b 的帖子)。这应该会导致 LED 闪烁红色、绿色、蓝色。不幸的是,它什么也没做。

我想这是因为我的接线没有按照 Adafruit 教程的建议进行设置(有关 Adafruit 接线,请参见http://learn.adafruit.com/adalight-diy-ambient-tv-lighting/wiring-1)。

由于我的 LED 条与 Adalight 教程中使用的 LED 条不同,因此我无法以这种方式设置接线。如上所述,我的 LED 没有输入和输出,也没有可单独寻址的 LED。相反,我有一个简单的 LED 灯条,带有 +12V、R、G 和 B。

如何调整 Adafruit 的 LEDstream 代码以与我的接线设置一起使用(参见上面的图片链接)?或者我如何调整我的布线(鉴于我必须使用我的 LED)以使用 LEDStream?

有没有人可以提供帮助?

非常感谢,

凯蒂

4

2 回答 2

1

有点晚了,但我们走了):

 /* Ambilight Clone Variation Using boblight and 1 Red, 1 Green, 1 Blue Strips. 

Circuit is set up in a similar way to the image on this page.
http://www.jerome-bernard.com/images/rgb-led-strips-mosfets.png

Created 17 Feb 2014
By Chris O.
Ver. 0.50
*/

// constants won't change. Used here to set the PWM pin numbers / ONLY USE PWM~ PINS:
/* // Arduino Uno has 6 PWM pins.
const int Red_PWM_Pin =  3;      // RED 
const int Green_PWM_Pin =  5;    // GREEN
const int Blue_PWM_Pin =  6;     // BLUE 
*/
const int Red_PWM_Pin =  9;      // RED 
const int Green_PWM_Pin =  10;    // GREEN
const int Blue_PWM_Pin =  11;     // BLUE

// Set Serial Baud Rate here and in boblight.conf file.
// Use one of these rates: 9600, 14400, 19200, 28800, 38400, 57600, or 115200.
#define Baud_Rate 57600 

// Variables will change:
byte RedValue = 0x00; //HEX
byte GreenValue = 0;
byte BlueValue = 0;

// ***********************************************************************************************************
// *
// *                            Power Up Init.
// *
// *
// ***********************************************************************************************************
void setup() { 

  /* Test led strips on Power Up */ 
  analogWrite(Red_PWM_Pin, 127); //DEC / Set the pin to 50% (0~255)
  analogWrite(Green_PWM_Pin, 0x7F); //HEX
  analogWrite(Blue_PWM_Pin, 127); //DEC
  delay(1000);               // wait for a second
  analogWrite(Red_PWM_Pin, 0); //DEC
  analogWrite(Green_PWM_Pin, 0x00); //HEX
  analogWrite(Blue_PWM_Pin, 0); //DEC

  Serial.begin(Baud_Rate); //Serial.begin(115200);

}

// ***********************************************************************************************************
// *
// *                            Main Loop 
// *
// *
// ***********************************************************************************************************
void loop() 
{  
  if (Serial.available()>=4){ // if Serial Hardware Buffer has 4 or more bytes
    byte prefix1 = Serial.read(); // 1st prefix (HEX 0xFF) (DEC 255)
   // byte prefix2 = Serial.read(); // 2nd prefix (HEX 0x8F) (DEC 143)

    if (prefix1 == 0xFF){// && prefix2 == 0x8F){ // Do this only if we find the prefix 

      RedValue = Serial.read(); //read 2nd byte
      analogWrite(Red_PWM_Pin, RedValue);

      GreenValue = Serial.read(); //read 3rd byte
      analogWrite(Green_PWM_Pin, GreenValue);

      BlueValue = Serial.read(); //read 4th byte
      analogWrite(Blue_PWM_Pin, BlueValue);
    }
    else { // if no prefix found lets dump 1 byte of serial HW Buffer.
      byte dump = Serial.read(); 
      /* debug led */
      // Pin 13 has an LED connected on most Arduino boards, On Leonardo its PWM~ pin, on Uno it will go high if dump value is over 127
      // Pin 11 has the LED on Teensy 2.0
      // Pin 6  has the LED on Teensy++ 2.0
      // Pin 13 has the LED on Teensy 3.0
       analogWrite(13, dump); //debug led
      //Serial.println(dump);
    }
  }
}

// ***********************************************************************************************************
// *                             Copy This in to boblight.conf file 
// *                              for windows boblight 1.3 beta1
// *                            
// *             for windows boblight 1.3 beta1 go to The LiveLight Project http://www.livelightproject.com/
// *             http://www.livelightproject.com/downloads/Boblight/Boblight_for_V5.zip
// ***********************************************************************************************************
/*

[global]
timeout     20

#interface      127.0.0.1   not in use here
port            19333
# interpolation off   # on or off
# proportional  7.0
# saturation    5.0
# value     10.0
# valuerange    0.0 1.0
# use           no
# method        average
# threshold     20

[device]
name            arduino_ambilight
type            momo 
output          "com11"    # <-- set youre arduino port
rate            57600 # Use one of these rates: 9600, 14400, 19200, 28800, 38400, 57600, or 115200.
channels        3
prefix          FF # NOTE: this FF 8F prefix will not work in Win Boblight beta1.3 
# postfix       not in use here, will not work in Win Boblight beta1.3 
interval        40000 
# allowsync     on   not in use here
debug           off 
delayafteropen  20000000

[color]
name            red
rgb             FE0000

[color]
name            green
rgb             00FE00

[color]
name            blue
rgb             0000FE

[light]
name            main
color           red     arduino_ambilight 1
color           green   arduino_ambilight 2
color           blue    arduino_ambilight 3
hscan           0 100
vscan           0 100

*/
于 2014-02-18T20:54:12.897 回答
0

下面是 Adafruit 代码的 Github 链接。如果您购买了那里的系统,他实际上就是您将运行的代码。

https://github.com/adafruit/Adalight/blob/master/Arduino/LEDstream/LEDstream.pde 评论很好

下面是部分代码。该代码基于从 serail 端口读取数据。如果索引在范围内,则代码将数据保存在数组中。

if((bytesBuffered < 256) && ((c = Serial.read()) >= 0)) {
  buffer[indexIn++] = c;
  bytesBuffered++;
  lastByteTime = lastAckTime = t; // Reset timeout counters
} else {
  // No data received.  If this persists, send an ACK packet
  // to host once every second to alert it to our presence.
  if((t - lastAckTime) > 1000) {
    Serial.print("Ada\n"); // Send ACK string to host
    lastAckTime = t; // Reset counter
  }
  // If no data received for an extended time, turn off all LEDs.
  if((t - lastByteTime) > serialTimeout) {
    for(c=0; c<32767; c++) {
      for(SPDR=0; !(SPSR & _BV(SPIF)); );
    }
    delay(1); // One millisecond pause = latch
    lastByteTime = t; // Reset counter
  }
}

这是一个开始的地方。您应该就代码中不理解的内容提出问题

于 2013-06-03T19:20:07.547 回答