分享一段色温控制的伪代码,适合WS2812灯用音箱控制-Arduino中文社区 - Powered by Discuz!

Arduino中文社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 1387|回复: 0

[分享] 分享一段色温控制的伪代码,适合WS2812灯用音箱控制

[复制链接]
发表于 2021-8-25 11:39 | 显示全部楼层 |阅读模式
本帖最后由 Cp0204 于 2021-8-25 11:47 编辑

小爱中,色温传值是1000~10000(单位K),天猫精灵中色温是1~100。

根据 色温所对及应的RGB颜色表,写了一段伪代码,转换成RGB
https://wenku.baidu.com/view/f7bfc59168dc5022aaea998fcc22bcd126ff4237.html


int colorT; //1000~10000

//色温控制,1000~10000
void setColoTemp(int32_t colorTemp) {
  //R
  if (colorTemp <= 6600) {
    colorR = 255;
  } else {
    colorR = 255 - (255 - 205) * (colorTemp - 6600) / (10000 - 6600);
  }
  //G
  if (colorTemp <= 6600) {
    colorG = 51 + (250 - 51) * (colorTemp - 1000) / (6600 - 1000);
  } else {
    colorG = 250 - (250 - 218) * (colorTemp - 6600) / (10000 - 6600);
  }
  //B
  if (colorTemp <= 2000) {
    colorB = 0;
  } else if (colorTemp >= 6500) {
    colorB = 255;
  } else {
    colorB = 11 + (255 - 11) * (colorTemp - 2000) / (6500 - 2000);
  }
  colorT = colorTemp;
  BLINKER_LOG("setColoTemp: ", colorT);
  pixelShow();
}

//小爱中直接传值
//色温控制,1000~10000,步长1800
void miotColoTemp(int32_t colorTemp) {
  BLINKER_LOG("need set colorTemperature: ", colorTemp);
  setColoTemp(colorTemp);
  BlinkerMIOT.colorTemp(colorTemp);
  BlinkerMIOT.print();
}

//天猫精灵中转换一下
//色温
void aligenieColoTemp(int32_t colorTemp) {
  BLINKER_LOG("need set colorTemperature: ", colorTemp);
  setColoTemp(1000 + 9000 * colorTemp / 100);
  BlinkerAliGenie.colorTemp(colorTemp);
  BlinkerAliGenie.print();
}
//步长色温
void aligenieRelativeColoTemp(int32_t colorTemp) {
  BLINKER_LOG("need set relative colorTemperature: ", colorTemp);
  if (colorTemp == 10) {
    //冷一点
    colorT = (colorT + 1800 > 10000) ? 10000 : (colorT + 1800);
  } else if (colorTemp == -10) {
    //暖一点
    colorT = (colorT - 1800 < 1000) ? 1000 : (colorT - 1800);
  }
  setColoTemp(colorT);
  BlinkerAliGenie.colorTemp((colorT - 1000) * 100 / 9000);
  BlinkerAliGenie.print();
}

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|Archiver|手机版|Arduino中文社区

GMT+8, 2024-11-28 12:38 , Processed in 0.072833 second(s), 15 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表