//对数调光光曲线生成START//

//对数调光光曲线生成START//

procedure TForm1.LightWave(a,b:string; color:byte; style:string; Gamma:Double; show:boolean; func:byte);

var

PwmData: array[0..65535] of double;

//GammaData: array[0..65535] of integer;

PwmLeves:integer;

CurveLeves, i,j:integer;

Ratio, f:Double;

begin

//如果当前曲线为要显示指令

if  show = true then

begin

PwmLeves   := StrToInt(a); //求出PWM级数

CurveLeves := StrToInt(b);  //求出调光级数

//Ratio :=  (log10(PwmLeves)) / CurveLeves; //求出系数

j := 1;

//求出曲线

{for i := 0 to  CurveLeves - 1 do

begin

PwmData[i] := Power(10, (i + 1) * Ratio);

iXYPlot1.Channel[color].AddXY(i, trunc(PwmData[i])) ;

end;

iXYPlot1.Channel[color].AddXY(0, trunc(PwmData[0])) ;//画线性直线

}

//对曲线进行GAMMA纠正

Ratio := 1 / Gamma;

//GAMMA运算

for i:= 0 to CurveLeves - 1 do

begin

f := (i + 0.5) / PwmLeves * (PwmLeves / CurveLeves);//归一化

f := Power(f, Ratio);//预补偿

PwmData[i] := trunc(f * PwmLeves - 0.5);//反归一化

if((i <> 0)  and (PwmData[i] = 0)) then

PwmData[i] := PwmData[i] + 1;

iXYPlot1.Channel[color].AddXY(i, PwmData[i]);  //GammaData

end;

//显示

RGBshowstr := RGBshowstr+'/' + Format('%s',[style]) +'_'+ '对数调光曲线///'+#13;

RGBshowstr := RGBshowstr+'//PWM级数 :' + Format('%d',[PwmLeves])+#13;

RGBshowstr := RGBshowstr+'//调光级数:' + Format('%d',[CurveLeves])+#13;

RGBshowstr := RGBshowstr+'//伽马(Gamma)校正值:' + Format('%.5f',[Gamma])+#13;

//8,16BIT选择

if checkbox8.Checked = true then

RGBshowstr := RGBshowstr+'const u16 '+ format('%s', [style])+'_Log_8Bit_LightCurve'+'['+format('%d', [CurveLeves])+']'+' =' + #13 + '{'+#13

else

RGBshowstr := RGBshowstr+'const u16 '+ format('%s', [style])+'_Log_16Bit_LightCurve'+'['+format('%d', [CurveLeves])+']'+' =' + #13 + '{' +#13;

//存储数据

for i := 0 to CurveLeves - 1 do

begin

if style = 'Red' then    //调整曲线

PwmData[i] := PwmData[i] + Red[i]

else if style = 'Green' then

PwmData[i] := PwmData[i] + Green[i]

else if style = 'Blue' then

PwmData[i] := PwmData[i] + Blue[i];

//判断调整后数据合法性

if  PwmData[i] >  PwmLeves then

PwmData[i] := PwmLeves

else if  PwmData[i] < 0 then

PwmData[i] := 0;

//画曲线

iXYPlot1.Channel[color].AddXY(i, PwmData[i]);

//显示数据10,16进制

if checkbox7.Checked = false then

RGBshowstr := RGBshowstr+ Format('%d, ', [trunc(PwmData[i])])

else

RGBshowstr := RGBshowstr+ Format('0x%.4x, ', [trunc(PwmData[i])]) ;

if ((i+1) mod 20 = 0) then

begin

RGBshowstr := RGBshowstr +'//'+format('%d', [ j* 20])+ #13;

j := j+1;

end;

end;

RGBshowstr := RGBshowstr + #13;

RGBshowstr := RGBshowstr + '};'+#13;

memo1.Lines.Text:=RGBshowstr;

end

else

begin

iXYPlot1.Channel[color].Clear;

end;

end;

舞台灯光控制系统c语言,很郁闷~再开源一个对数,线性,指数LED调光曲线获取算法...相关推荐

  1. 本周涨粉一倍,我决定再开源一个商超管理系统

  2. 利用4位led显示本机秒表时间的单片机c语言程序,基于单片机的一个2位的led数码显示作为_秒表_设计.doc...

    基于单片机的一个2位的led数码显示作为_秒表_设计 PAGE 1 PAGE 29 工程技术学院 课程设计 题 目:用单片机AT89C51设计一个2位的LED数码显示作为"秒表" ...

  3. led调光原理c语言,最牛的LED遥控控制器---调整无闪烁(C语言)

    /*一款遥控LED控制器,所有功能均由遥控器控制, 它主要有如下功能:1.遥控调光2.旋钮调光 3. 开关机功能 4.渐变 5.跳变 6.循环变化(渐 变.跳变等)7.变化速度可调整,并断电能记忆*/ ...

  4. 很认真的聊一聊一个程序员的自我修养

    首先要谈的是,今天的话题所聊的程序员包含哪些人? 在中国,写程序,不仅仅是一种兴趣,更多的时候,还是一种普通职业和谋生工具 大公司有厉害的程序员,优秀的架构师,但大量的小公司也有很多普通的程序员.在我 ...

  5. 【微信小程序控制硬件15 】 开源一个微信小程序,支持蓝牙快速配网+WiFi双控制ESP32-C3应用示范;(附带Demo)

    文章目录 一.前言 二. Blufi乐鑫自研的蓝牙配网协议 ESP32 配网流程 流程图 三.相关代码 3.1 蓝牙快速配网 3.2 蓝牙本地控制 2.3 外设驱动 3.1 蓝牙搜索 3.2 蓝牙服务 ...

  6. 开源一个微信小程序,支持蓝牙配网+WiFi双控制ESP32-C3应用示范;(附带Demo)

    文章目录 一.前言 二. Blufi乐鑫自研的蓝牙配网协议 ESP32 配网流程 流程图 三.相关代码 3.1 蓝牙快速配网 3.2 蓝牙本地控制 2.3 外设驱动 3.1 蓝牙搜索 3.2 蓝牙服务 ...

  7. 中国开发者数量全球第二,C 语言一跌再跌!GitHub 年度报告重磅发布

    整理 | 郑丽媛 出品 | CSDN(ID:CSDNnews) 不知不觉中,2021 年的日历已经翻到了 11 月中旬,各种年度报告也开始蓄势待发.这不,全球知名代码托管平台 GitHub 今天就重磅 ...

  8. 中国开发者数量全球第二,C 语言一跌再跌 | GitHub 年度报告发布

    整理 | 郑丽媛 出品 | CSDN(ID:CSDNnews) 不知不觉中,2021 年的日历已经翻到了 11 月中旬,各种年度报告也开始蓄势待发.这不,全球知名代码托管平台 GitHub 今天就重磅 ...

  9. 【收藏】75个很有用的开源移动工具

    据皮尤研究中心声称,现在68%的美国成年人拥有智能手机,只比拥有台式机或笔记本电脑的用户少5%.而美国45%的成年人现在拥有平板电脑. 考虑到移动设备如此普遍,开源社区日益致力于与移动有关的项目也就不 ...

最新文章

  1. Python 中的locals()
  2. Java架构体系学习路线图,这六点尤为重要!
  3. 2017年第八届蓝桥杯C/C++ B组国赛 —— 第三题:希尔伯特曲线
  4. Microsoft My Phone试用手记
  5. SAP fiori backend determine cache setting
  6. Oracle plsqlI 练习 传值
  7. 云上“超算中心” 阿里云推出弹性高性能计算平台E-HPC
  8. Sqoop导入hive中null是空字符串还是‘null‘的问题(关注)
  9. C#利用扩展方法,不引入新的类型,实现矩阵的操作
  10. 树莓派安装qq linux,在(Raspberry Pi)树莓派上安装NodeJS
  11. VS2010中文版微软官方下载
  12. 黑莓7290中文系统下载_无法将Blackberry 7290升级到最新的系统软件
  13. 有关一级域名二级域名三级域名
  14. 使用FFMpeg从mp4中提取mp3
  15. ip地址:string和int互转方案
  16. python 操作word 修改页眉与页脚
  17. laravel 微博登录
  18. 2019年的计划,做最好的自己。
  19. 多旋翼无人机组合导航系统-多源信息融合算法附Matlab代码
  20. 机器学习回归预测_通过机器学习回归预测高中生成绩

热门文章

  1. 问题 C: 调酒壶里的酸奶
  2. Protocol Buffers安装与简单使用
  3. 易宝典——体验O365中的Teams 实验手册之五 移动应用客户端体验
  4. 点击app图标启动过程
  5. Java学历、技术哪个更重要?学历不好还能进大厂吗?
  6. Android开发--身高体重指数(BIM)计算--完成BMI程序
  7. java-抽象类和接口的区别
  8. 单链表删除节点(p->next)与p的区别
  9. 树莓派安装python3替换python2_在树莓派上安装基于python3的OpenCV
  10. 给php代码添加规范的注释