衡阳派盒市场营销有限公司

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

【開鴻智谷NiobeU4開發板免費試用體驗】LVGL移植前菜篇-程序員就要晚點有藝術的(生成藝術圖片)

開發板試用精選 ? 來源:開發板試用 ? 作者:電子發燒友論壇 ? 2022-10-14 15:33 ? 次閱讀

本文來源電子發燒友社區,作者:李先生, 帖子地址:https://bbs.elecfans.com/jishu_2307400_1_1.html


前言

話說沒有藝術細胞的程序員不是好碼農!

上一次我們進行了LCD的刷屏測試,我們覺得太單調了,程序員就應該玩點有藝術性的。這次我們使用LCD點陣畫出各類具有藝術性的圖像。

參見https://codegolf.stackexchange.com/

代碼

有用到浮點算數運算,需要包含算術庫

#include

代碼如下

//圖片尺寸:

#define DIM 130

//圖片尺寸-1

#define DM1 (DIM-1)

#define _sq(x) ((x)*(x))                           // 平方

#define _cb(x) abs((x)*(x)*(x))                    // 立方的絕對值

#define _cr(x) (unsigned short)(pow((x),1.0/3.0))  // 立方根

 

unsigned char RD(int i,int j){

return (char)(_sq(cos(atan2(j-65,i-65)/2))*255);

}

 

unsigned char GR(int i,int j){

return (char)(_sq(cos(atan2(j-65,i-65)/2-2*acos(-1)/3))*255);

}

 

unsigned char BL(int i,int j){

return (char)(_sq(cos(atan2(j-65,i-65)/2+2*acos(-1)/3))*255);

}

 

unsigned char RD0(int i,int j)

{

float s=3./(j+99);

float y=(j+sin((i*i+_sq(j-700)*5)/100./DIM)*35)*s;

return ((int)((i+DIM)*s+y)%2+(int)((DIM*2-i)*s+y)%2)*127;

}

 

unsigned char GR0(int i,int j){

float s=3./(j+99);

float y=(j+sin((i*i+_sq(j-700)*5)/100./DIM)*35)*s;

return ((int)(5*((i+DIM)*s+y))%2+(int)(5*((DIM*2-i)*s+y))%2)*127;

}

 

unsigned char BL0(int i,int j){

float s=3./(j+99);

float y=(j+sin((i*i+_sq(j-700)*5)/100./DIM)*35)*s;

return ((int)(29*((i+DIM)*s+y))%2+(int)(29*((DIM*2-i)*s+y))%2)*127;

}

 

unsigned char RD1(int i, int j) {

#define r(n)(rand()%n)

    static char c[DIM][DIM]; return!c[i][j] ? c[i][j] = !r(999) ? r(256) : RD((i + r(2)) % 1024, (j + r(2)) % 1024) : c[i][j];

}

unsigned char GR1(int i, int j) {

    static char c[DIM][DIM]; return!c[i][j] ? c[i][j] = !r(999) ? r(256) : GR((i + r(2)) % 1024, (j + r(2)) % 1024) : c[i][j];

}

unsigned char BL1(int i, int j) {

    static char c[DIM][DIM]; return!c[i][j] ? c[i][j] = !r(999) ? r(256) : BL((i + r(2)) % 1024, (j + r(2)) % 1024) : c[i][j];

}

 

unsigned char RD2(int i, int j) {

    static double k; k += rand() / 1. / 0x7FFF; int l = k; l %= 512; return l > 255 ? 511 - l : l;

}

unsigned char GR2(int i, int j) {

    static double k; k += rand() / 1. / 0x7FFF; int l = k; l %= 512; return l > 255 ? 511 - l : l;

}

unsigned char BL2(int i, int j) {

    static double k; k += rand() / 1. / 0x7FFF; int l = k; l %= 512; return l > 255 ? 511 - l : l;

}

 

unsigned char RD3(int i, int j) {

    return (unsigned char)sqrt((double)(_sq(i - DIM / 2) * _sq(j - DIM / 2)) * 2.0);

}

unsigned char GR3(int i, int j) {

    return (unsigned char)sqrt((double)(

        (_sq(i - DIM / 2) | _sq(j - DIM / 2)) *

        (_sq(i - DIM / 2) & _sq(j - DIM / 2))

        ));

}

unsigned char BL3(int i, int j) {

    return (unsigned char)sqrt((double)(_sq(i - DIM / 2) & _sq(j - DIM / 2)) * 2.0);

}

 

unsigned char RD4(int i, int j) {

    static int r[DIM]; int p = rand() % 9 - 4; r[i] = i & r[i] ? (r[i] + r[i - 1]) / 2 : i ? r[i - 1] : 512; r[i] += r[i] + p > 0 ? p : 0; return r[i] ? r[i] < DIM ? r[i] : DM1 : 0;

}

unsigned char GR4(int i, int j) {

    static int r[DIM]; int p = rand() % 7 - 3; r[i] = i & r[i] ? (r[i] + r[i - 1]) / 2 : i ? r[i - 1] : 512; r[i] += r[i] + p > 0 ? p : 0; return r[i] ? r[i] < DIM ? r[i] : DM1 : 0;

}

unsigned char BL4(int i, int j) {

    static int r[DIM]; int p = rand() % 15 - 7; r[i] = i & r[i] ? (r[i] + r[i - 1]) / 2 : i ? r[i - 1] : 512; r[i] += r[i] + p > 0 ? p : 0; return r[i] ? r[i] < DIM ? r[i] : DM1 : 0;

}

 

void StartHdfSPITest(void)

{

    static uint16_t gcolor = 0xFFFF;

    LcdInit();

    while (1) {

        for(int i=0;ifor(int j=0;jstatic unsigned short color[3];

                color[0] = RD(i,j)&255;

                color[1] = GR(i,j)&255;

                color[2] = BL(i,j)&255;

                uint16_t c = (color[0]>>3) << 11;

                c |= (color[1]>>2) << 5;

                c |= (color[2]>>3) << 0;

                lcd_draw_point(i,j,c);

            }

        }

        LcdPush();

        LOS_Msleep(2000);

 

        for(int i=0;ifor(int j=0;jstatic unsigned short color[3];

                color[0] = RD1(i,j)&255;

                color[1] = GR1(i,j)&255;

                color[2] = BL1(i,j)&255;

                uint16_t c = (color[0]>>3) << 11;

                c |= (color[1]>>2) << 5;

                c |= (color[2]>>3) << 0;

                lcd_draw_point(i,j,c);

            }

        }

        LcdPush();

        LOS_Msleep(2000);

 

        for(int i=0;ifor(int j=0;jstatic unsigned short color[3];

                color[0] = RD2(i,j)&255;

                color[1] = GR2(i,j)&255;

                color[2] = BL2(i,j)&255;

                uint16_t c = (color[0]>>3) << 11;

                c |= (color[1]>>2) << 5;

                c |= (color[2]>>3) << 0;

                lcd_draw_point(i,j,c);

            }

        }

        LcdPush();

        LOS_Msleep(2000);

 

        for(int i=0;ifor(int j=0;jstatic unsigned short color[3];

                color[0] = RD3(i,j)&255;

                color[1] = GR3(i,j)&255;

                color[2] = BL3(i,j)&255;

                uint16_t c = (color[0]>>3) << 11;

                c |= (color[1]>>2) << 5;

                c |= (color[2]>>3) << 0;

                lcd_draw_point(i,j,c);

            }

        }

        LcdPush();

        LOS_Msleep(2000);

 

        for(int i=0;ifor(int j=0;jstatic unsigned short color[3];

                color[0] = RD4(i,j)&255;

                color[1] = GR4(i,j)&255;

                color[2] = BL4(i,j)&255;

                uint16_t c = (color[0]>>3) << 11;

                c |= (color[1]>>2) << 5;

                c |= (color[2]>>3) << 0;

                lcd_draw_point(i,j,c);

            }

        }

        LcdPush();

        LOS_Msleep(2000);

    }

}
;j++)>;i++)>;j++)>;i++)>;j++)>;i++)>;j++)>;i++)>;j++)>;i++)>

效果

image.png

image.png

image.png

image.png

總結

代碼中有大量的浮點運算,本身也可以作為CPU性能的一個對比測試,同時也可以測試刷屏的速率。從效果來看CPU的性能是不錯的,刷頻效果也可以,后面就正式開始LVGL的移植了。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 開鴻智谷
    +關注

    關注

    2

    文章

    127

    瀏覽量

    1184
  • NiobeU4
    +關注

    關注

    3

    文章

    31

    瀏覽量

    520
收藏 人收藏

    評論

    相關推薦

    有獎丨米爾 全志T536開發板免費試用

    米爾與全志合作發布的新品基于全志T536應用處理器的MYD-LT536-GK開發板免費試用活動來啦~~米爾提供了3塊價值750元的MYD-LT536-GK開發板發起
    的頭像 發表于 12-26 08:05 ?265次閱讀
    有獎丨米爾 全志T536<b class='flag-5'>開發板</b><b class='flag-5'>免費</b><b class='flag-5'>試用</b>

    Linux驅動程序程序員指南

    電子發燒友網站提供《Linux驅動程序程序員指南.pdf》資料免費下載
    發表于 11-22 15:53 ?0次下載
    Linux驅動<b class='flag-5'>程序</b><b class='flag-5'>程序員</b>指南

    追加名額丨米爾瑞芯微RK3576開發板有獎試用

    米爾與瑞芯微合作發布的新品基于瑞芯微RK3576應用處理器的MYD-LR3576開發板免費試用活動加碼啦~~米爾追加了2塊價值849元的MYD-LR3576開發板發起
    的頭像 發表于 11-22 01:00 ?275次閱讀
    追加名額丨米爾瑞芯微RK3576<b class='flag-5'>開發板</b>有獎<b class='flag-5'>試用</b>

    【RA8D1試用活動】RA8D1B-CPKCOR開發板移植linux

    【RA8D1試用活動】RA8D1B-CPKCOR開發板移植linux
    的頭像 發表于 11-16 01:02 ?327次閱讀
    【RA8D1<b class='flag-5'>試用</b>活動】RA8D1B-CPKCOR<b class='flag-5'>開發板</b><b class='flag-5'>移植</b>linux

    受邀參加華為云開發者日南京站

    近日,華為云開發者日“1024程序員節專場主題活動”南京站成功舉辦。江蘇潤和軟件股份有限公司旗下子公司江蘇潤數字科技有限公司(以下簡稱“潤
    的頭像 發表于 11-13 16:32 ?430次閱讀

    有獎丨米爾 瑞芯微RK3576開發板免費試用

    米爾與瑞芯微合作發布的新品基于瑞芯微RK3576應用處理器的MYD-LR3576開發板免費試用活動來啦~~米爾提供了7塊價值849元的MYD-LR3576開發板發起
    的頭像 發表于 11-12 01:00 ?413次閱讀
    有獎丨米爾 瑞芯微RK3576<b class='flag-5'>開發板</b><b class='flag-5'>免費</b><b class='flag-5'>試用</b>

    有獎試用?。A-Eco-RA4E2-64PIN-V1.0開發板試用活動開始報名

    有獎試用?。A-Eco-RA4E2-64PIN-V1.0開發板試用活動開始報名
    的頭像 發表于 11-09 01:02 ?333次閱讀
    有獎<b class='flag-5'>試用</b>??!RA-Eco-RA<b class='flag-5'>4</b>E2-64PIN-V1.0<b class='flag-5'>開發板</b><b class='flag-5'>試用</b>活動開始報名

    AI編程工具會不會搶程序員飯碗

    AI編程工具可輔助編程,減少手動編碼,提升效率,對程序員積極影響也有挑戰。程序員需深化技能、拓寬知識應對。長遠看,AI與人類程序員將共生共榮。
    的頭像 發表于 11-08 10:17 ?226次閱讀

    用技術助力構建鴻蒙世界的基石

    10月24-26日,由湖南省工業和信息化廳、湖南湘江新區管理委員會指導,長沙市工業和信息化局、長沙信息產業園管委會、CSDN主辦的長沙“1024程序員節·智能應用新生態”活動順利舉辦。
    的頭像 發表于 10-29 08:05 ?269次閱讀
    <b class='flag-5'>開</b><b class='flag-5'>鴻</b>智<b class='flag-5'>谷</b>用技術助力構建鴻蒙世界的基石

    亮相OpenHarmony開發者大會,與生態共創開源新篇章!

    5月25日,以“心聚力智引未來”為主題的OpenHarmony開發者大會2024(以下簡稱大會)在深圳成功舉辦。獲得多項獎項及授牌
    的頭像 發表于 05-26 08:30 ?800次閱讀
    <b class='flag-5'>開</b><b class='flag-5'>鴻</b>智<b class='flag-5'>谷</b>亮相OpenHarmony<b class='flag-5'>開發</b>者大會,與生態共創開源新篇章!

    榮獲鴻蒙原生應用開發及培訓服務商牌匾授牌

    出席現場,并獲頒鴻蒙原生應用開發及培訓服務商稱號。圖/左4副總裁李傳釗
    的頭像 發表于 05-24 08:30 ?838次閱讀
    <b class='flag-5'>開</b><b class='flag-5'>鴻</b>智<b class='flag-5'>谷</b>榮獲鴻蒙原生應用<b class='flag-5'>開發</b>及培訓服務商牌匾授牌

    免費!NXP i.MX 93開發板有獎試用

    米爾與NXP合作發布的新品基于NXPi.MX93應用處理器的MYD-LMX9X開發板免費試用活動來啦~~米爾提供了2塊價值678
    的頭像 發表于 05-23 08:01 ?797次閱讀
    <b class='flag-5'>免費</b>!NXP i.MX 93<b class='flag-5'>開發板</b>有獎<b class='flag-5'>試用</b>

    拓維信息及旗下同獲華為HarmonyOS開發服務商認證

    近日,拓維信息及旗下雙雙通過華為HarmonyOS開發服務商認證,成為華為“鴻蒙服務商先鋒計劃”認證級伙伴。秉持共同發展、共創價值的合作理念,拓維信息、
    的頭像 發表于 03-29 08:13 ?560次閱讀
    拓維信息及旗下<b class='flag-5'>開</b><b class='flag-5'>鴻</b>智<b class='flag-5'>谷</b>同獲華為HarmonyOS<b class='flag-5'>開發</b>服務商認證

    與CSDN達成戰略合作,共建OpenHarmony人才計劃

    2024年3月19日,與中國專業開發者社區CSDN就共建OpenHarmony人才計劃達成戰略合作并舉辦發布儀式。
    的頭像 發表于 03-20 08:29 ?482次閱讀
    <b class='flag-5'>開</b><b class='flag-5'>鴻</b>智<b class='flag-5'>谷</b>與CSDN達成戰略合作,共建OpenHarmony人才計劃

    國內首批 | 多名講師獲“鴻蒙原生應用開發培訓講師”資格認證

    2023年3月4日-5日,鴻蒙生態服務(深圳)有限公司(以下簡稱“鴻蒙生態服務公司”)組織了國內首批“鴻蒙原生應用開發培訓講師”認證,
    的頭像 發表于 03-16 08:29 ?745次閱讀
    國內首批 | <b class='flag-5'>開</b><b class='flag-5'>鴻</b>智<b class='flag-5'>谷</b>多名講師獲“鴻蒙原生應用<b class='flag-5'>開發</b>培訓講師”資格認證
    如何打百家乐的玩法技巧和规则 | 六合彩即时开奖| 百家乐官网赢钱| 百家乐套利| 百家乐官网五湖四海娱乐网 | 澳门百家乐游戏官网| 网上有百家乐官网玩吗| 香港六合彩白小姐图库| 百家乐网上投注系统| 百家乐官网游戏平台有哪些哪家的口碑最好 | 宁波水果机遥控器| 百家乐官网管家| 正蓝旗| 玩百家乐上高尔夫娱乐场| 成都百家乐官网的玩法技巧和规则 | 百家乐官网发牌靴8| 博彩网站排名| 百家乐投注程式| 线上百家乐官网技巧| 金博士娱乐城优惠| 百家乐怎么玩才会赢钱| 网上百家乐官网娱乐平台| 新皇冠娱乐城| 深圳百家乐的玩法技巧和规则| 百家乐官网太阳城怎么样| 姚记百家乐的玩法技巧和规则| 聚众玩百家乐官网的玩法技巧和规则| 金龙娱乐城| 三国百家乐娱乐城| 网上百家乐娱乐场| 百家乐官网投资心得| 大发888送钱58元| 百家乐直杀| 巨星百家乐官网的玩法技巧和规则| 立博百家乐官网游戏| 皇冠现金网提款问题| 百家乐e78| 三元玄空24山坐向开门| 至尊百家乐官网节目单| 来博| 大发888新澳博|