舞台灯光控制系统c语言,很郁闷~再开源一个对数,线性,指数LED调光曲线获取算法...
//对数调光光曲线生成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调光曲线获取算法...相关推荐
- 本周涨粉一倍,我决定再开源一个商超管理系统
- 利用4位led显示本机秒表时间的单片机c语言程序,基于单片机的一个2位的led数码显示作为_秒表_设计.doc...
基于单片机的一个2位的led数码显示作为_秒表_设计 PAGE 1 PAGE 29 工程技术学院 课程设计 题 目:用单片机AT89C51设计一个2位的LED数码显示作为"秒表" ...
- led调光原理c语言,最牛的LED遥控控制器---调整无闪烁(C语言)
/*一款遥控LED控制器,所有功能均由遥控器控制, 它主要有如下功能:1.遥控调光2.旋钮调光 3. 开关机功能 4.渐变 5.跳变 6.循环变化(渐 变.跳变等)7.变化速度可调整,并断电能记忆*/ ...
- 很认真的聊一聊一个程序员的自我修养
首先要谈的是,今天的话题所聊的程序员包含哪些人? 在中国,写程序,不仅仅是一种兴趣,更多的时候,还是一种普通职业和谋生工具 大公司有厉害的程序员,优秀的架构师,但大量的小公司也有很多普通的程序员.在我 ...
- 【微信小程序控制硬件15 】 开源一个微信小程序,支持蓝牙快速配网+WiFi双控制ESP32-C3应用示范;(附带Demo)
文章目录 一.前言 二. Blufi乐鑫自研的蓝牙配网协议 ESP32 配网流程 流程图 三.相关代码 3.1 蓝牙快速配网 3.2 蓝牙本地控制 2.3 外设驱动 3.1 蓝牙搜索 3.2 蓝牙服务 ...
- 开源一个微信小程序,支持蓝牙配网+WiFi双控制ESP32-C3应用示范;(附带Demo)
文章目录 一.前言 二. Blufi乐鑫自研的蓝牙配网协议 ESP32 配网流程 流程图 三.相关代码 3.1 蓝牙快速配网 3.2 蓝牙本地控制 2.3 外设驱动 3.1 蓝牙搜索 3.2 蓝牙服务 ...
- 中国开发者数量全球第二,C 语言一跌再跌!GitHub 年度报告重磅发布
整理 | 郑丽媛 出品 | CSDN(ID:CSDNnews) 不知不觉中,2021 年的日历已经翻到了 11 月中旬,各种年度报告也开始蓄势待发.这不,全球知名代码托管平台 GitHub 今天就重磅 ...
- 中国开发者数量全球第二,C 语言一跌再跌 | GitHub 年度报告发布
整理 | 郑丽媛 出品 | CSDN(ID:CSDNnews) 不知不觉中,2021 年的日历已经翻到了 11 月中旬,各种年度报告也开始蓄势待发.这不,全球知名代码托管平台 GitHub 今天就重磅 ...
- 【收藏】75个很有用的开源移动工具
据皮尤研究中心声称,现在68%的美国成年人拥有智能手机,只比拥有台式机或笔记本电脑的用户少5%.而美国45%的成年人现在拥有平板电脑. 考虑到移动设备如此普遍,开源社区日益致力于与移动有关的项目也就不 ...
最新文章
- Python 中的locals()
- Java架构体系学习路线图,这六点尤为重要!
- 2017年第八届蓝桥杯C/C++ B组国赛 —— 第三题:希尔伯特曲线
- Microsoft My Phone试用手记
- SAP fiori backend determine cache setting
- Oracle plsqlI 练习 传值
- 云上“超算中心” 阿里云推出弹性高性能计算平台E-HPC
- Sqoop导入hive中null是空字符串还是‘null‘的问题(关注)
- C#利用扩展方法,不引入新的类型,实现矩阵的操作
- 树莓派安装qq linux,在(Raspberry Pi)树莓派上安装NodeJS
- VS2010中文版微软官方下载
- 黑莓7290中文系统下载_无法将Blackberry 7290升级到最新的系统软件
- 有关一级域名二级域名三级域名
- 使用FFMpeg从mp4中提取mp3
- ip地址:string和int互转方案
- python 操作word 修改页眉与页脚
- laravel 微博登录
- 2019年的计划,做最好的自己。
- 多旋翼无人机组合导航系统-多源信息融合算法附Matlab代码
- 机器学习回归预测_通过机器学习回归预测高中生成绩