0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

用小安派 AiPi-Eyes-R2 玩植物大戰(zhàn)僵尸

AIoT行業(yè)洞察 ? 2024-11-06 16:10 ? 次閱讀

以下作品由安信可社區(qū)用戶

mgodmonkey制作

游戲均移植自:

【老虎愛 3D-bilibili】

目前存在的游戲:

植物大戰(zhàn)僵尸:demos/pvz

羊了個(gè)羊:demos/yang

消消樂:demos/xiaoxiaole

華容道:demos/huarongdao

源碼見:

https://github.com/MGod-monkey/AiPi-Eyes-Rx

https://gitee.com/mgod_wu/AiPi-Eyes-Rx

PVZ 功能展示可見:

羊了個(gè)羊:

消消樂:

華容道:

基于官方示例文檔修改的,適用于 4 寸電容屏的小安派 R1 和 R2,R1 和 R2 的區(qū)別和修改如下:

小安派 - Eyes-R1 帶外置 ES8388 音頻芯片,支持兩路音頻輸入輸出。

小安派 - Eyes-R2 采用內(nèi)置 CodeC,支持單路音頻輸入輸出。

如果是編譯帶 8388 的開發(fā)板(AiPi-Eyes-R1)需要配置如下參數(shù)

●修改 app_main.h #define DEF_USER_ES8388_EN (1)

●修改 proj.conf

●set(CONFIG_SOLUTION_FUNC_AUDIO_AUADC 0) ●set(CONFIG_SOLUTION_FUNC_AUDIO_AUDAC 0)

如果是編譯不帶 8388 的開發(fā)板(AiPi-Eyes-R2)需要配置如下參數(shù):

●修改 app_main.h #define DEF_USER_ES8388_EN (0)

●修改 proj.conf

●set(CONFIG_SOLUTION_FUNC_AUDIO_AUADC 1) set(CONFIG_SOLUTION_FUNC_AUDIO_AUDAC 1)

01、硬件說明

硬件僅用到了:

  • 小安派 Rx
  • 4 寸 480*480 像素的電容屏
  • TTL 下載

02、軟件說明

修改 demos/lv_demos.h 即可體驗(yàn)不同的游戲(一次只能設(shè)置一個(gè)游戲?yàn)?1 然后編譯)

#define LV_USE_GAME_PVZ 0
// #define LV_USE_GAME_2048 0
#define LV_USE_GAME_YANG 1
#define LV_USE_GAME_XIAOXIAOLE 0
#define LV_USE_GAME_HUARONGDAO 0

main.c 主程序說明如下:

lvgl 任務(wù)線程函數(shù)

static void user_task(void *pvParameters)
{
lv_task_handler();
printf("[LVGL] init success \r\n");
while (1) {
lv_task_handler();
bflb_mtimer_delay_ms(1);
}
}

●初試化 lvgl

/* lvgl init */
lv_init();
lv_port_disp_init(); //初試化顯示屏
lv_port_indev_init(); //初試化觸摸接口

●根據(jù)定義,設(shè)置不同的初試游戲函數(shù)(2048 等待后續(xù)移植)

#if LV_USE_GAME_PVZ
pvz_start()
#endif
#if LV_USE_GAME_2048
// 2048_start();
#endif
#if LV_USE_GAME_YANG
yang_game();
#endif
#if LV_USE_GAME_XIAOXIAOLE
xiaoxiaole();
#endif
#if LV_USE_GAME_HUARONGDAO
huarongdao();
#endif

簡單解析一下 xiaoxiaole.c 的游戲初試化程序,大部分都是 lvgl 庫中的知識,文檔可以見 https://lvgl.100ask.net/master/index.html

void xiaoxiaole()
{
// 根據(jù)屏幕尺寸來靈活設(shè)置圖片的放大倍數(shù)
// lv_disp_get_hor_res(lv_disp_get_default())獲取默認(rèn)顯示屏的水平像素
if(lv_disp_get_hor_res(lv_disp_get_default())>=lv_disp_get_ver_res(lv_disp_get_default()))
{screen_ratio=(float)lv_disp_get_ver_res(lv_disp_get_default())/400;}
else
{
screen_ratio=(float)lv_disp_get_hor_res(lv_disp_get_default())/480;
}
// screen_ratio放大倍數(shù)
// 移除屏幕滾動條
lv_obj_clear_flag(lv_scr_act(), LV_OBJ_FLAG_SCROLLABLE);
screen1=lv_tileview_create(lv_scr_act());
lv_obj_set_style_bg_color(screen1,lv_color_hex(0x000000), LV_PART_MAIN);
lv_obj_clear_flag(screen1, LV_OBJ_FLAG_SCROLLABLE);
//背景圖片(如果很卡的話,把這個(gè)背景圖片刪掉)
//////////////////////////////////////////////////////////////////////////////////////
bgmap=lv_img_create(screen1);
lv_img_set_src(bgmap, &xiaoxiaole_bg_img);
lv_img_set_pivot(bgmap,0,0);
lv_img_set_zoom(bgmap,256*1.5*1.2);
lv_obj_clear_flag(bgmap, LV_OBJ_FLAG_SCROLLABLE);
///////////////////////////////////////////////////////////////////////////////////
//注冊消消樂滑塊窗口的地方
game_window=lv_tileview_create(screen1);
lv_obj_set_style_bg_color(game_window,lv_color_hex(0x000000), LV_PART_MAIN);
lv_obj_set_style_bg_opa(game_window,200, LV_PART_MAIN);
lv_obj_clear_flag(game_window, LV_OBJ_FLAG_SCROLLABLE);
lv_obj_set_style_outline_width(game_window, 6, LV_PART_MAIN);
lv_obj_set_style_outline_color(game_window, lv_color_hex(0xbb7700), LV_PART_MAIN);
lv_obj_center(game_window);
lv_obj_set_size(game_window,280*screen_ratio,280*screen_ratio);
// 定義刷新按鈕
refs_btn=lv_img_create(screen1);
lv_img_set_src(refs_btn, &refs_btn_img);
// lv_obj_set_align(refs_btn,LV_ALIGN_RIGHT_MID);
lv_obj_align(refs_btn,LV_ALIGN_RIGHT_MID,8,0);
lv_obj_add_flag(refs_btn, LV_OBJ_FLAG_CLICKABLE);
lv_obj_add_event_cb(refs_btn,map_refs,LV_EVENT_CLICKED,0);
lv_img_set_zoom(refs_btn, 150);
// 定義退出按鈕(退出按鈕的事件函數(shù)還沒有用到)
exit_btn=lv_img_create(screen1);
lv_img_set_src(exit_btn, &exit_img);
lv_obj_align(exit_btn,LV_ALIGN_TOP_RIGHT,10,-20);
// lv_obj_set_align(exit_btn,LV_ALIGN_TOP_RIGHT);
lv_obj_add_flag(exit_btn, LV_OBJ_FLAG_CLICKABLE);
lv_obj_add_event_cb(exit_btn,exit_game_cb,LV_EVENT_CLICKED,0);
lv_img_set_zoom(exit_btn, 130);
// 定義硬幣圖片
coin=lv_img_create(screen1);
lv_img_set_src(coin, &coin_img);
lv_img_set_zoom(coin, 130);
lv_obj_align(coin,LV_ALIGN_TOP_LEFT,10,-20);
// 定義得分
score=0;
score_lable=lv_label_create(screen1);
lv_label_set_text_fmt(score_lable,"SCORE:%d",score);
lv_obj_set_style_text_font(score_lable,&lv_font_montserrat_20,0);
lv_obj_set_y(score_lable,40);
lv_obj_set_style_text_color(score_lable, lv_color_hex(0x00aaff), LV_PART_MAIN);
game_init();
}
static void game_init()
{
int i, j;
lv_obj_refr_size(game_window);
// 生成一個(gè)8*8的不同顏色的方塊
for(j=0;juser_data=&game_obj[j][i];
lv_obj_add_event_cb(game_obj[j][i].obj,move_obj_cb,LV_EVENT_PRESSING,0);
lv_obj_add_event_cb(game_obj[j][i].obj,move_obj_cb,LV_EVENT_RELEASED,0);
}
}

// 每次方塊填滿都會進(jìn)行檢測,是否有可以消除的方塊

if(map_is_full()&&same_color_check()){same_color_flash();lv_obj_clear_flag(refs_btn, LV_OBJ_FLAG_CLICKABLE);}

}

03、編譯燒錄

環(huán)境搭建安裝參考:小安派 R2 初體驗(yàn) - 開箱 + 環(huán)境搭建 + 編譯燒錄

編譯:make BL_SDK_BASE=E:/Aithinker_Ai/AiPi-Open-Kits/aithinker_Ai-M6X_SDK,BL_SDK_BASE 后面為自己的 aithinker_Ai-M6X_SDK 文件夾存儲地址

燒錄:

make flash COMX=

COM5 BL_SDK_BASE=

E:/Aithinker_Ai/AiPi-Open-Kits/aithinker_Ai-M6X_SDK

注:目前連接顯示屏燒錄的時(shí)候經(jīng)常會失敗,原因是 TTL 下載器供電不穩(wěn),因此有以下兩種解決方式:

  • 不連接顯示屏燒錄
  • 連接顯示屏,但需要連接 TYPE-C 供電,然后用 TTL 下載器燒錄

后續(xù),筆者也會嘗試移植更多的游戲,并試試看看能不能把背景音樂也添加上,可以關(guān)注原貼:【DIY電子作品】基于小安派AiPi-Eyes-R2的N合1觸摸屏游戲https://bbs.ai-thinker.com/forum.php?mod=viewthread&tid=45318&extra=page%3D1&_dsign=82a1e54b

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • 開源硬件
    +關(guān)注

    關(guān)注

    8

    文章

    210

    瀏覽量

    29878
收藏 人收藏

    評論

    相關(guān)推薦

    小安 DSL做一個(gè)天氣站

    前言 小安-DSL(AiPi-DSL) 是安信可開源團(tuán)隊(duì)專門為Ai-M61-32S設(shè)計(jì)的一款屏幕驅(qū)動開發(fā)板,支持2.8/3.5寸等30Pin SPI顯示屏、2.4寸及1.28寸等18Pin SPI
    的頭像 發(fā)表于 01-06 16:44 ?135次閱讀
    <b class='flag-5'>用</b><b class='flag-5'>小安</b><b class='flag-5'>派</b> DSL做一個(gè)天氣站

    零基礎(chǔ)開發(fā)小安-Eyes-S1【進(jìn)階篇】——初識 LVGL 并搭建最小工程

    等。 AiPi-Eyes-S1集成了SPI屏幕接口,DVP攝像頭接口,外置ES8388音頻編解碼芯片以及預(yù)留TF卡座,并且引出USB接口,可接入U(xiǎn)SB攝像頭。 從零開始學(xué)習(xí)小安: 1、零基礎(chǔ)開發(fā)
    的頭像 發(fā)表于 01-06 16:14 ?137次閱讀
    零基礎(chǔ)開發(fā)<b class='flag-5'>小安</b><b class='flag-5'>派</b>-<b class='flag-5'>Eyes</b>-S1【進(jìn)階篇】——初識 LVGL 并搭建最小工程

    零基礎(chǔ)開發(fā)小安-Eyes-S1——初識LVGL并搭建最小工程

    等。 AiPi-Eyes-S1集成了SPI屏幕接口,DVP攝像頭接口,外置ES8388音頻編解碼芯片以及預(yù)留TF卡座,并且引出USB接口,可接入U(xiǎn)SB攝像頭。 從零開始學(xué)習(xí)小安: 1、零基礎(chǔ)開發(fā)
    的頭像 發(fā)表于 01-03 14:09 ?330次閱讀

    使用小安DSL制作天氣站

    小安 DSL做天氣站 用戶分享DIY ? 前言 小安-DSL(AiPi-DSL) 是安信可
    的頭像 發(fā)表于 01-03 11:18 ?161次閱讀
    使用<b class='flag-5'>小安</b><b class='flag-5'>派</b>DSL制作天氣站

    零基礎(chǔ)開發(fā)小安-Eyes-S1 外設(shè)篇——DAC

    等。 AiPi-Eyes-S1集成了SPI屏幕接口,DVP攝像頭接口,外置ES8388音頻編解碼芯片以及預(yù)留TF卡座,并且引出USB接口,可接入U(xiǎn)SB攝像頭。 從零開始學(xué)習(xí)小安: 1、零基礎(chǔ)開發(fā)
    的頭像 發(fā)表于 12-27 10:55 ?787次閱讀
    零基礎(chǔ)開發(fā)<b class='flag-5'>小安</b><b class='flag-5'>派</b>-<b class='flag-5'>Eyes</b>-S1 外設(shè)篇——DAC

    零基礎(chǔ)開發(fā)小安-Eyes-S1外設(shè)篇——I2S

    等。 AiPi-Eyes-S1集成了SPI屏幕接口,DVP攝像頭接口,外置ES8388音頻編解碼芯片以及預(yù)留TF卡座,并且引出USB接口,可接入U(xiǎn)SB攝像頭。 從零開始學(xué)習(xí)小安: 1、零基礎(chǔ)開發(fā)
    的頭像 發(fā)表于 12-13 18:02 ?1076次閱讀
    零基礎(chǔ)開發(fā)<b class='flag-5'>小安</b><b class='flag-5'>派</b>-<b class='flag-5'>Eyes</b>-S1外設(shè)篇——I<b class='flag-5'>2</b>S

    零基礎(chǔ)開發(fā)小安-Eyes-S1【外設(shè)篇】——FLASH

    。 AiPi-Eyes-S1集成了SPI屏幕接口,DVP攝像頭接口,外置ES8388音頻編解碼芯片以及預(yù)留TF卡座,并且引出USB接口,可接入U(xiǎn)SB攝像頭。 從零開始學(xué)習(xí)小安: 1、零基礎(chǔ)開發(fā)
    的頭像 發(fā)表于 12-05 14:31 ?248次閱讀
    零基礎(chǔ)開發(fā)<b class='flag-5'>小安</b><b class='flag-5'>派</b>-<b class='flag-5'>Eyes</b>-S1【外設(shè)篇】——FLASH

    零基礎(chǔ)開發(fā)小安-Eyes-S1 外設(shè)篇 ——I2C

    。 AiPi-Eyes-S1集成了SPI屏幕接口,DVP攝像頭接口,外置ES8388音頻編解碼芯片以及預(yù)留TF卡座,并且引出USB接口,可接入U(xiǎn)SB攝像頭。 從零開始學(xué)習(xí)小安: 1、零基礎(chǔ)開發(fā)
    的頭像 發(fā)表于 11-27 16:39 ?268次閱讀
    零基礎(chǔ)開發(fā)<b class='flag-5'>小安</b><b class='flag-5'>派</b>-<b class='flag-5'>Eyes</b>-S1 外設(shè)篇 ——I<b class='flag-5'>2</b>C

    安信可AiPi-LoRaBoard擴(kuò)展板概述

    那是一款直接使用Ra-08 作為主控的,讀取AHT3x 溫濕度傳感器并使用LoRa協(xié)議上傳的一款小安,同時(shí)它也支持LoRaWan 協(xié)議。因?yàn)榻邮?b class='flag-5'>AiPi-LRW-TH1的數(shù)據(jù)需要LoRaWan 網(wǎng)關(guān),所以
    的頭像 發(fā)表于 11-15 15:16 ?245次閱讀
    安信可<b class='flag-5'>AiPi</b>-LoRaBoard擴(kuò)展板概述

    零基礎(chǔ)開發(fā)小安-Eyes-S1【入門篇】——工程文件架構(gòu)

    。AiPi-Eyes-S1集成了SPI屏幕接口,DVP攝像頭接口,外置ES8388音頻編解碼芯片以及預(yù)留TF卡座,并且引出USB接口,可接入U(xiǎn)SB攝像頭。從零開始學(xué)習(xí)小安:1、零基礎(chǔ)開發(fā)小安
    的頭像 發(fā)表于 11-06 16:10 ?195次閱讀
    零基礎(chǔ)開發(fā)<b class='flag-5'>小安</b><b class='flag-5'>派</b>-<b class='flag-5'>Eyes</b>-S1【入門篇】——工程文件架構(gòu)

    零基礎(chǔ)開發(fā)小安-Eyes-S1【外設(shè)篇】——PWM

    和 GPIO 等。AiPi-Eyes-S1集成了SPI屏幕接口,DVP攝像頭接口,外置ES8388音頻編解碼芯片以及預(yù)留TF卡座,并且引出USB接口,可接入U(xiǎn)SB攝像頭。從零開始學(xué)習(xí)小安:1、零基礎(chǔ)開發(fā)
    的頭像 發(fā)表于 11-06 16:10 ?186次閱讀
    零基礎(chǔ)開發(fā)<b class='flag-5'>小安</b><b class='flag-5'>派</b>-<b class='flag-5'>Eyes</b>-S1【外設(shè)篇】——PWM

    零基礎(chǔ)開發(fā)小安-Eyes-S1外設(shè)篇——GPIO中斷編程

    等。 AiPi-Eyes-S1集成了SPI屏幕接口,DVP攝像頭接口,外置ES8388音頻編解碼芯片以及預(yù)留TF卡座,并且引出USB接口,可接入U(xiǎn)SB攝像頭。 產(chǎn)品資料:https://docs.ai-thinker.com/eyes 從零開始學(xué)習(xí)
    的頭像 發(fā)表于 10-29 14:56 ?783次閱讀
    零基礎(chǔ)開發(fā)<b class='flag-5'>小安</b><b class='flag-5'>派</b>-<b class='flag-5'>Eyes</b>-S1外設(shè)篇——GPIO中斷編程

    零基礎(chǔ)開發(fā)小安-Eyes-S1外設(shè)篇——GPIO 輸入輸出

    等。 AiPi-Eyes-S1集成了SPI屏幕接口,DVP攝像頭接口,外置ES8388音頻編解碼芯片以及預(yù)留TF卡座,并且引出USB接口,可接入U(xiǎn)SB攝像頭。 從零開始學(xué)習(xí)小安: 1、零基礎(chǔ)開發(fā)
    的頭像 發(fā)表于 10-25 13:50 ?1057次閱讀
    零基礎(chǔ)開發(fā)<b class='flag-5'>小安</b><b class='flag-5'>派</b>-<b class='flag-5'>Eyes</b>-S1外設(shè)篇——GPIO 輸入輸出

    開發(fā)教程 零基礎(chǔ)開發(fā)小安-Eyes-S1入門篇——Win下SSH連接Linux

    AiPi-Eyes-S1 是安信可開源團(tuán)隊(duì)專門為Ai-M61-32S設(shè)計(jì)的一款開發(fā)板,支持WiFi6、BLE5.3。所搭載的Ai-M61-32S 模組具有豐富的外設(shè)接口,具體包括 DVP、MJPEG
    的頭像 發(fā)表于 09-24 14:31 ?322次閱讀
    開發(fā)教程 零基礎(chǔ)開發(fā)<b class='flag-5'>小安</b><b class='flag-5'>派</b>-<b class='flag-5'>Eyes</b>-S1入門篇——Win下SSH連接Linux

    功德+1,小安-Eyes-S1做一個(gè)電子木魚

    2024積德累功,心想事成!接下來 看看如何用小安-Eyes-S1做一個(gè)電子木魚 。 01、GUI-Guider 頁面設(shè)計(jì) 先新建一個(gè)工程。 直接進(jìn)入 UI 設(shè)計(jì)界面,這里用到了兩個(gè)組件, 一個(gè)是圖片按鈕,一個(gè)是文本框 。 先
    的頭像 發(fā)表于 01-16 14:33 ?815次閱讀
    功德+1,<b class='flag-5'>用</b><b class='flag-5'>小安</b><b class='flag-5'>派</b>-<b class='flag-5'>Eyes</b>-S1做一個(gè)電子木魚