<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                >[info]## **3-第一篇:硬件篇**.............................................................. >[info]實踐出真知,實驗平臺必不可少!本篇將介紹我們用來開發的硬件平臺。 通過該篇的介紹,你將了解我們Smart模塊的硬件資源以及外設接口。 >[info]### **3.1-實驗平臺介紹:** >[info]#### **3.1.1-意想意創Smart模塊-資源初窺**...................................................... >[info]①-硬件平臺................................................................................................. ![](https://box.kancloud.cn/2334f1c516e9c2cbba3abae1a3bb33f4_554x242.png) >[info]#### **3.1.2意想意創Smart模塊-資源說明**....................................................... ![](https://box.kancloud.cn/a9a4c2ce6469e8996e19a1a206158dbd_554x495.png) ***** ***** >[info]## **4-第二篇:軟件篇**................................................................................. >本篇我們在軟件開發平臺TKStudio上介紹意想意創Smart模塊。 >[info]### **4.1-開發環境:TKStudio以及工程文件以介紹**................................ >?①-TKstudio下載地址: ②-工程文件下載地址: ③-工程文件夾介紹: ![](https://box.kancloud.cn/13d6423e66a4b67c7d4be11241c605b7_554x109.png) >[info]### **4.2-user_file文件**............................................................................ ![](https://box.kancloud.cn/cd6cc4c4b91cb244c15c76f02954268a_478x242.png) PS:用戶自己所編寫的程序都是在這個.c文件下。其他的文件無需操作,如果操作了其他文件夾可能會造成未知的錯誤。 >[info]## **5-第三篇:API接口介紹**............................................................... >意想意創Smart模塊API接口都是用C標準語言實現的。 API接口有對模塊的區分。比如:音樂模塊就有播放音樂的API接口,當然其他模塊是不能使用的。 ***** ***** >[info]### **5.1-Master_Setup函數**................................................................... >·PS:程序初始化函數,模塊上電時,該函數只執行一次。 ·語法: void Master_Setup(void) ??????·參數: | 參數 | 釋義 | | --- | --- | | void | void:沒有參數 | >[info]·返回值:無; ??????·實例: void Master\_Setup() ?//模塊初始化讓小燈亮500毫秒 { ??LedSet(ENABLE); ????//打開小燈 ??delay_ms(500); ?????//延時500毫秒 ? LedSet(DISABLE); ?????//所有輸出打開 } ***** ***** >[info]### **5.2-Master_Loop函數**................................................................................... >·ps:循環函數,用戶主要的函數都會在此函數里完成。 ·語法: void Master_Loop(void) ·參數: | 參數 | 釋義 | | --- | --- | | void | void:沒有參數 | >[info]·返回值:無; ·實例: void Master\_Loop()??//當輸入1有信號的時候,輸出1輸出。 { if(Read_Input(1)==1){ OutSet(1,ENABLE); } } ***** ***** >[info]### **5.3-delay_ms函數** ...................................................................................... >·PS:毫秒級延時函數,最大延時65535毫秒。 ·語法: void delay\_ms(unsigned int ms); //延時函數 ·參數 | 參數 | 釋義 | | --- | --- | | ms| ms:毫秒延時。可填寫(1-65535)毫秒 | >[info]·返回值:無; ·實例: uchar i=0; for(i=0;i<3;i++)//小燈1秒閃一次一共閃爍3秒 { LedSet(ENABLE); ????//打開小燈 delay_ms(500); ?????//延時500毫秒 ? LedSet(DISABLE); ?????//所有輸出打開 delay_ms(500); ?? } ***** ***** >[info]### **5.4-Read_Input函數**................................................................................... >·PS:輸入口讀取狀態函數; ·語法: ?uchar Read_Input(uchar Num_IO) ·參數 | 參數 | 釋義 | | --- | --- | | Num_IO| Num_IO:輸入口端口號。 | | | 基礎主控:(1-5)。 | | | 高級主控: (1-10)。? | | | 超級主控(1-12)。 | | | 廿級主控(1-20)。 | | | 根據硬件輸入口數量而定 | >[info]返回:對應口有信號輸入的時候,返回1。對應輸入口沒有信號輸入的時候,返回0。 ???·實例: if((Read\_Input(1)==1) ?&& ?((Read\_Input(2)==1)){ ????//輸入1,2同時有信號,打開電磁鎖。 LockSet(POWEROPEN); } ***** ***** >[info]### **5.5-LedSet函數**.................................................................................................. >·PS:模塊指示燈狀態設置函數。 ·語法: ?void LedSet(uchar Sta);//設置小燈狀態 ·參數 | 參數 | 釋義 | | --- | --- | | Sta| Sta: LEDOPEN,打開小燈 | | | Sta: LEDCLOSED,關閉小燈 | >[info]·返回:無; ·實例: LedSet(LEDOPEN); ????//打開小燈 ***** ***** >[info]### **5.6-LedDisable函數**....................................................... >·PS:關閉模塊指示燈函數 ·語法: ?void LedDisable(void);//關閉小燈 ·參數 | 參數 | 釋義 | | --- | --- | | void | void:沒有參數 | >[info]·返回:無; ·實例: LedDisable(); ????//關閉小燈 ***** ***** >[info]### **5.7-LedEnable函數**......................................................................... >·PS:打開模塊指示燈函數 ·語法: ?void LedEnable(void);//關閉小燈 ·參數 | 參數 | 釋義 | | --- | --- | | void | void:沒有參數 | >[info]·返回:無; ·實例: LedEnable(); ????//關閉小燈 ***** ***** >[info]### **5.8-OutSet函數**............................................................. >·PS:模塊輸出口設置函數。 ·語法: ?void OutSet(uchar Num,uchar Sta);//關閉小燈 ·參數 | 參數 | 釋義 | | --- | --- | | Num| Num:輸出口端號。 | | | 基礎主控(1-5)。| | | 高級主控(1-10)。| | | 超級主控(1-12)。 | | | 廿級主控(1-20)。 | | | 255:對應所有輸出口。 | | | 根據硬件輸出口定。 | | Sta | Sta:DISABLE-相應口不輸出。| | | Sta:ENABLE-相應口輸出。| >[info]·返回:無; ·實例: OutSet(1,ENABLE);delay\_ms(1000); OutSet(2,ENABLE);delay\_ms(1000); OutSet(3,ENABLE);delay\_ms(1000); OutSet(4,ENABLE);delay\_ms(1000); OutSet(5,ENABLE);delay\_ms(1000);//一秒動作一個輸出口 ***** ***** >[info]### **5.9-OutDisable函數**...................................................... >·PS:關閉模塊輸出口函數 ·語法: ?void OutDisable(uchar Num);//關閉輸出口 ·參數 | 參數 | 釋義 | | --- | --- | | Num| Num:輸出口端號。 | | | 基礎主控(1-5)。| | | 高級主控(1-10)。| | | 超級主控(1-12)。 | | | 廿級主控(1-20)。 | | | 255:對應所有輸出口。 | | | 根據硬件輸出口定。 | >[info]·返回:無; ·實例: OutDisable(1); ????//關閉輸出口1 ***** ***** >[info]### **5.10-OutEnable函數**.......................................................................................... >·PS:打開模塊輸出口函數 ·語法: void OutEnable(uchar Num);//打開輸出 ·參數 | 參數 | 釋義 | | --- | --- | | Num| Num:輸出口端號。 | | | 基礎主控(1-5)。| | | 高級主控(1-10)。| | | 超級主控(1-12)。 | | | 廿級主控(1-20)。 | | | 255:對應所有輸出口。 | | | 根據硬件輸出口定。 | >[info]·返回:無; ·實例: OutEnable(255); ????//打開所有的輸出口。 ***** ***** >[info]### **5.11-LockSet函數**............................................................................................... >·PS電磁鎖狀態設置函數。 ·語法: void LockSet(uchar Sta);//燈鎖口狀態設置 ·參數 | 參數 | 釋義 | | --- | --- | | Sta | Sta:POWEROPEN, ???關閉電磁鎖口,打開燈口; | | | Sta:POWERCLOSED, 打開電磁鎖口,關閉燈口; | >[info]·返回:無; ·實例: LockSet(POWEROPEN); ????//關閉電磁鎖,打開燈口 ***** ***** >[info]### **5.12-LockClose函數**......................................................... >·PS:電磁鎖關閉函數。 ·語法: ?void LockClose(void);//關閉電磁鎖函數 ·參數 | 參數 | 釋義 | | --- | --- | | void | void:沒有參數 | >[info]·返回:無; ·實例: LockClose(); ????//關閉電磁鎖,打開燈口 ***** ***** >[info]### **5.13-LockOpen函數**............................................................................................. >·PS:打開電磁鎖函數。 ·語法: void LockOpen(void);//關閉電磁鎖函數 ·參數 | 參數 | 釋義 | | --- | --- | | void | void:沒有參數 | >[info]·返回:無; ·實例: LockOpen(); ????//打開電磁鎖口,關閉燈口。 ***** ***** >[info]### **5.14-UART\_ReceiveBuffer函數**........................................................ >·PS:串口接受函數。(和UART1_SendBuffer配套使用) ·語法: void UART\_ReceiveBuffer(uchar *buf,uchar len);//串口接受函數 ·參數 | 參數 | 釋義 | | --- | --- | | buf| buf:接收到的數據緩存。| | len| len:接收到的數據長度。| >[info]·返回:無; ·實例: void UART_ReceiveBuffer(uchar \*buf,uchar len) { ?????uchar i=0; ?????????/*下面這個例程,接受到什么數據,在轉發出去的功能*/ ?????????UART1_SendBuffer(buf,len); } ***** ***** >[info]### **5.15-UART1_SendBuffer函數**............................................................. >·PS:串口發送函數。(和UART\_ReceiveBuffer配套使用) ·語法: ?void UART1_SendBufferr(uchar *buf,uchar len); ??//串口發送數組函數 ·參數 | 參數 | 釋義 | | --- | --- | | buf| buf:需要發送的數據緩存。| | len| len:需要發送的數據長度 。| >[info]·返回:無; ·實例: uchar Arry\[5\]={1,2,3,4,5}; UART1\_SendBuffer(Arry,sizeof(Arry)); //把Arry發送出去。 ***** ***** >[info]### **5.16-UART1_SendData函數**.......................................... >·PS:串口單字節發送函數。 ·語法: void UART1_SendData(uchar dat); //串口發送單字節函數。 ·參數 | 參數 | 釋義 | | --- | --- | | dat| dat:需要發送的數據| >[info]·返回:無; ·實例: uchar a=1; UART1_SendData(a); ?//發送數據 ***** ***** >[info]### **5.17-Music_Play函數**........................................................................ >·PS:音樂播放函數。(音樂模塊,音樂主控獨有函數,其他模塊不能使用) ·語法: ?Music_Play(uchar PlayerNum); //播放音樂函數 ·參數 | 參數 | 釋義 | | --- | --- | | PlayerNum| PlayerNum:音樂編號(1-255)| >[info]·返回:無; ·實例: ?Music_Play(1); ?//播放音樂1 ***** ***** >[info]### **5.18-Music_Read_FeedBack函數**........................................................ >·PS:音樂播完反饋函數。(音樂模塊,音樂主控獨有函數,其他模塊不能使用) ·語法: uchar Music_Read_FeedBack(void);///播放音樂函數 ·參數 | 參數 | 釋義 | | --- | --- | | void | void:沒有參數 | >[info]·返回:當前音樂播放完畢返回1,沒有播放完成返回0; ·實例: ?If( Music\_Read_FeedBack(1)==1){ ????//當前音樂播放完畢,輸出1口輸出 OutSet(1,ENABLE); } ***** ***** >[info]### **5.19-PF_Tim0_1msIT函數**............................................................. >·PS:1毫秒定時器函數。 ·語法: ?void PF_Tim0_1msIT(void);//1毫秒定時器函數 ·參數 | 參數 | 釋義 | | --- | --- | | void | void:沒有參數 | >[info]·返回:無; ·實例: ?void PF\_Tim0\_1msIT(void) { ??static uint t=0; If(++t>=1000){ LockSet(POWEROPEN); ???//計時1秒打開電磁鎖 } } ***** ***** >[info]### **5.20-Light_Function函數**........................................................................... >·PS:超級主控輸入端燈效函數。(超級主控獨有函數,其他模塊不能使用) ·語法: ?void Light\_Function(uchar Num,uchar Sta);//超級主控效果等函數 ·參數 | 參數 | 釋義 | | --- | --- | | Num| 效果燈編號(1-12)| | | 1-輸入1的燈。 | | | 2-輸入2的燈。 | | | 3-輸入3的燈。 | | | 4-輸入4的燈。 | | | 5-輸入5的燈。 | | | 6-輸入6的燈。 | | | 7-輸入7的燈。 | | | 8-輸入8的燈。 | | | 9-輸入9的燈。 | | | 10-輸入10的燈。| | | 11-輸入12的燈。| | | 12-輸入12的燈。| |Sta|Sta:DISABLE-不亮 | | | Sta:ENABLE-亮 | >[info]·返回:無; ·實例: ????If(Read_Input(1)==1){ ?????????//當輸入1有信號的時候,輸入1效果燈亮。沒有信號的時候輸入1,效果燈滅 Light\_Function(1,ENABLE); } else{ Light_Function(1,DISABLE); } ***** ***** >[info]### **5.21-Read\_User_Confign函數**.................................................................. >·PS:讀取用戶配置函數。 ·語法: ???????????uchar *Read_User_Config(void); ?????????????//讀取用戶配置函數 ·參數 | 參數 | 釋義 | | --- | --- | | void | void:沒有參數 | >[info]·返回:讀取到的有效數據; ·實例: ??uchar len=0;uchar *P=NULL; uchar i=0; P=Read_User_Config(); while(*(P+len)!=0){ ????????//有效數據不為0, len++; ??????????????//讀取到的數據長度 } UART1_Send(P,len); ???????//發送出接受的數據 ***** ***** >[info]### **5.22-DigitronDisplay函數**.................................................................. >·PS:數碼管顯示函數,只能在點陣主控-數碼管SDK中調用。 ·語法: ???????????void DigitronDisplay(unsigned char wei,unsigned char value);//數碼管顯示函數 ·參數 | 參數 | 釋義 | | --- | --- | | void | void:沒有參數 | >[info]·返回:讀取到的有效數據; ·實例:下面這個歷程,實現了輸入1234有信號的時候,數碼管對應顯示 uchar i=0; for(i=0;i<4;i++){ if(Read_Input(i+1)==1){ DigitronDisplay(i+1,i+1); } } ***** ***** >[info]### **5.23-Set_rgb_AllColour函數**.................................................................. >·PS:七彩燈顯示函數,只能在七彩燈SDK中調用。 ·語法: ???????????void Set_rgb_AllColour(uchar colour,uchar Value); //七彩燈顯示函數 ·參數 | 參數 | 釋義 | | --- | --- | | colour | 選擇顏色 | | | RGB_RED //紅色 | | | RGB_GREEN //綠色 | | | RGB_BLUE //藍色 | | | RGB_YELLOW //黃 | | | RGB_PURPLE //紫 | | | RGB_CYAN //青 | | | RGB_WHITE //白 | | Value | 0-0xFF; //0為熄滅,0xFF為最亮 | >[info]·返回:讀取到的有效數據; ·實例:顯示紅色。 Set_rgb_AllColour(RGB_RED,0xFF); //紅色 ***** ***** >[info]### **5.24-void Ws2812_SetPixelColor**.................................................................. >·PS:可控燈畫點函數,只能在可控燈SDK中調用。 ·語法: ???????????void Ws2812_SetPixelColor(unsigned int num,unsigned char r,unsigned char g,unsigned char b);//可控燈畫點函數 ·參數 | 參數 | 釋義 | | --- | --- | | num| 燈珠位置 (0-99)| | r | 紅色 (0-255) | | g | 綠色 (0-255) | | b | 藍色 (0-255) | >[info]·返回:無; ·實例:顯示紅色。 Ws2812_SetPixelColor(0,255,0,0); //設置一個燈珠紅色 ***** ***** >[info]### **5.25-Ws2812_Show**.................................................................. >·PS:可控燈刷新函數,只能在可控燈SDK中調用。 ·語法: ???????void Ws2812_Show(void); //可控燈刷新函數 ·參數 | 參數 | 釋義 | | void | void:沒有參數 | >[info]·返回:無; ·實例:顯示紅色。 Ws2812_SetPixelColor(0,255,0,0); //設置一個燈珠紅色 Ws2812_Show();//讓顏色顯示 ***** ***** >[info]## **6-第四篇:實戰篇**............................................................... >[info]### **1-案例演示-手印機關** >[info]**1-游戲玩法:** ①\-觸摸傳感器摸一下(一共5個觸摸感應),一個燈亮。 ②\-5個按照順序(1,2,3,4,5的順序)都摸對之后,一個電磁鎖斷電,游戲結束,觸摸無效。 ③\-5個都摸完之后,但是順序不對,所有的燈都熄滅,重新觸摸。 **2-視頻演示:** >[info] **3-程序源碼:** ``` #include "user_file.h" /********************************************************************************** +---------------------------------------------------------+ 用戶函數部分(user_file.h里面有詳細使用介紹) +---------------------------------------------------------+ - 目前進展: - 日期 :2018-09-08 - 作者 :意想意創. - 硬件環境:意想意創-A0001-2.6代-白色盒子-基礎主控。 - 軟件版本號:V1.0 - 技術論壇:XXXXXXX - 備注 :本示例在 TKStudio 開發環境下,用2.6代-基礎主控調試OK。 - Copyright(C):青島意想意創技術發展有限公司。 - All rights reserved **********************************************************************************/ uchar Game_isGo=0; //游戲流程變量 uchar Index[5]={0}; uchar Order[5]={1,2,3,4,5}; //需要比對的順序 uchar Order_Len=0; //觸摸的次數 /*============================== 功能:這是一個串口接受函數,接受到的數據都在buf中配合S(uchar *buf,uchar len)使用 參數:發送的數據和數據長度; 返回:無; ===============================*/ void UART_ReceiveBuffer(uchar *buf,uchar len) { uchar i=0; /*下面這個歷程,接受到什么數據,在轉發出去的功能*/ UART1_SendBuffer(buf,len); } /*============================== 功能:這是一個1毫秒的中斷函數; 參數:無; 返回:無; ===============================*/ void PF_Tim0_1msIT(void) { /*下面這個歷程,實現了200毫秒小燈執行一次閃爍功能*/ /* static uchar Sta=0; static uint t=0; if(++t>=100){ if(Sta==NO){ LedSet(LEDOPEN);Sta=YES; //打開小燈; } else if(Sta==YES){ LedSet(LEDCLOSED);Sta=NO; //關閉小燈; }else{ } t=0; } */ } /*************************************** 功能:這個是一個執行一次的函數; 參數:無; 返回:無; ***************************************/ void Master_Setup() { return ; } /*************************************** 功能:游戲效果執行函數; 參數:無; 返回:成功返回1,失敗返回2; ***************************************/ uchar Game_result(void)//游戲效果函數 { uchar i=0; static uchar buf[5]={0}; for(i=1;i<=5;i++){ if((Read_Input(i)==1) && (Index[i-1]==0)){ //掃描5個輸入口 OutSet(i,ENABLE); //觸摸一個點亮一個 buf[Order_Len++]=i; //緩存當前的順序 Index[i-1]=1; } } if(Order_Len==5){ //5點都觸摸之后 if(UART_Compare(buf,Order,sizeof(buf))){ return 1; } else{ Clean_dat(buf,sizeof(buf)); //錯誤清空當前緩存 Clean_dat(Index,sizeof(Index)); Order_Len=0; //清空長度 return 2; } } return 0; } /*************************************** 功能:游戲正確效果函數; 參數:無; 返回:成功返回1,失敗返回0; ***************************************/ uchar Game_Right(void)//游戲正確結果 { LockSet(POWEROPEN); return 1; } /*************************************** 功能:游戲錯誤效果函數; 參數:無; 返回:成功返回1,失敗返回0; ***************************************/ uchar Game_Wrong(void)//游戲錯誤結果 { uchar i=0; OutSet(255,DISABLE); //關閉所有的燈; /*------需要注意,這里需要按鍵釋放--------*/ for(i=0;i<5;i++){ if(Read_Input(i+1)==1)break; //有輸入的時候,說明手還沒有拿開 } if(i==5)return 1; return 0; } /************************************** 功能:是一個循環函數; 參數:無; 返回:無; PS:游戲玩法: 1-每觸摸一個手印,對應一盞燈亮。 2-當五盞燈都亮了之后,如果觸摸的順序正確那么電磁鎖打開。 3-沒有按照順序,熄滅所有的燈。 **************************************/ void Master_Loop() { switch (Game_isGo) { case 0: Game_isGo=Game_result(); break; case 1: Game_Right(); break; case 2: if(Game_Wrong())Game_isGo=0; //錯誤效果執行完畢,并且觸摸已經全部釋放,從新開始 break; default: break; } } ``` >[info]### **2-案例演示-語音版打地鼠** >[info]**1-游戲玩法:** 1-上個機關啟動之后,所有的指示燈閃爍3次,開始播放循環播放北京音效,該游戲啟動。 2-此時,隨機播放一首音效(1-5首其中一個),并且對應的燈箱亮起, 如果,如果在3秒內按下對應的地鼠按鍵,燈箱熄滅,連續擊中N(可以設置)次之后,所有地鼠快速閃爍5次,播放成功音效,電磁鎖打開。 3-如果在規定時間內,沒有擊中對應的地鼠,或者擊錯地鼠,游戲失敗,播放錯誤音效,需要從頭開始。 **2-視頻演示:** >[info] **3-程序源碼:** ``` #include "user_file.h" /********************************************************************************** +---------------------------------------------------------+ 用戶函數部分(user_file.h里面有詳細使用介紹) +---------------------------------------------------------+ - 目前進展: - 日期 :2018-09-08 - 作者 :意想意創. - 硬件環境:意想意創-A0001-2.6代黑色盒子-音樂模塊。 - 軟件版本號:V1.0 - 技術論壇:XXXXXXX - 備注 :本示例在 TKStudio 開發環境下,用2.6代-音樂模塊調試OK。 - Copyright(C):青島意想意創技術發展有限公司。 - All rights reserved **********************************************************************************/ MODU_Game_Tim Game_Tim={//游戲計時變量 0,0,0 }; uchar Game_Right_Num=0; //游戲成功的次數標記 uchar Game_isGo=0; //游戲流程標記 /*============================== 功能:這是一個串口接受函數,接受到的數據都在buf中配合S(uchar *buf,uchar len)使用 參數:發送的數據和數據長度; 返回:無; ===============================*/ void UART_ReceiveBuffer(uchar *buf,uchar len) { /*下面這個歷程,接受到什么數據,在轉發出去的功能*/ UART1_SendBuffer(buf,len); } /*============================== 功能://這是一個1毫秒的中斷函數; 參數:無; 返回:無; ===============================*/ void PF_Tim0_1msIT(void) { Game_ADD_Tim(); return ; } /*************************************** 功能:游戲啟動函數; 參數:無; 返回:成功1,失敗0; ***************************************/ uchar Game_Star(void)//游戲啟動函數 { uchar i=0; for(i=0;i<3;i++){ //游戲啟動之后,所有燈箱閃爍三次 OutSet(0xFF,ENABLE); delay_ms(500); OutSet(0xFF,DISABLE); delay_ms(500); } return 1; } /*************************************** 功能:游戲隨機播放音效函數; 參數:無; 返回:返回隨機的音樂編號; ***************************************/ uchar Game_Rand_Music(void)//音樂隨機播放音效函數 { uchar Value=0; while(1){ Value=rand()%6; //隨機數值應該比實際需要的數值大1 if(Value!=NO){ Music_Play(Value); //播放對應的音效 return Value; } } } /*************************************** 功能:游戲按鍵值比對函數; 參數:無; 返回:成功返回1,失敗返回2; ***************************************/ uchar Game_Key_ComPare(uchar Value) //游戲按鍵比對函數; { uchar i=0; static uchar Key_Index[5]={0,0,0,0,0}; for(i=1;i<=5;i++){ //掃描5個地鼠按鍵 if((Read_Input(i)==1) && (Key_Index[i-1]==NO)){ //如果有按鍵按下 Key_Index[i-1]=YES; if(i==Value){ return 1; } else{ return 2; } } else if((Read_Input(i)==0) && (Key_Index[i-1]==YES)){ Key_Index[i-1]=NO; } } return 0; } /*************************************** 功能:地鼠在線定時器函數; 參數:無; 返回:無; ***************************************/ uchar Game_ADD_Tim(void)//游戲計時函數; { if(Game_Tim.Star==YES){ if(++Game_Tim.Sec>=1000){ Game_Tim.Sec=NO; if(++Game_Tim.Cnt>=GAME_TIME){ Game_Tim.Star=second;Game_Tim.Cnt=Game_Tim.Sec=NO; //GAME_TIME秒計時函數 } } } return 1; } /*************************************** 功能:游戲流程執行函數; 參數:無; 返回:成功返回1,失敗返回2; ***************************************/ uchar Game_result(void)//游戲效果執行函數 { static uchar Index=0; static uchar Music_Num=0; uchar Sta=0; if(Index==NO){ Music_Num=Game_Rand_Music(); //隨機播放一首音效 OutSet(Music_Num,ENABLE); //打開對用的燈箱 Game_Tim.Star=YES;Game_Tim.Sec=Game_Tim.Cnt=NO; //打開按鍵定時器函數 Index=YES; } else if(Index==YES){ Sta=Game_Key_ComPare(Music_Num); //按鍵值和隨機的音效值進行比較 if(Sta==YES){ //表示此次按鍵按對 Game_Tim.Star=Game_Tim.Cnt=Game_Tim.Sec=NO; Index=NO; return 1; } else if(Sta==second){ //表示是此次按鍵按錯 Index=NO; Game_Tim.Star=Game_Tim.Cnt=Game_Tim.Sec=NO; return 2; } } if(Game_Tim.Star==second){ Game_Tim.Star=Game_Tim.Cnt=Game_Tim.Sec=NO; Index=NO;return 2; } return 0; } /*************************************** 功能:游戲正確效果執行函數; 參數:無; 返回:成功1次返回1,全部成功返回2,; ***************************************/ uchar Game_Right(void)//游戲正確結果執行函數 { uchar i=0; Game_Right_Num++; /*======游戲過關效果=======*/ if(Game_Right_Num>=GAME_TURE_NUM){ //游戲過關之后 Music_Play(6); //游戲過關之后,播放成功音效,并且讓所有的地鼠閃爍5次 LockSet(POWEROPEN); //打開電磁鎖 for(i=0;i<5;i++){ OutSet(0xFF,ENABLE); delay_ms(300); OutSet(0xFF,DISABLE); delay_ms(300); } return 2; } /*=======擊中一次地鼠效果=======*/ OutSet(0xFF,DISABLE); //關閉正確的燈箱 return 1; } /*************************************** 功能:游戲錯誤執行函數; 參數:無; 返回:執行完畢返回1,失敗返回0; ***************************************/ uchar Game_Wrong(void)//游戲錯誤效果執行函數 { static uchar Index=0; Game_Right_Num=NO; //清空地鼠的連擊次數 OutSet(0xFF,DISABLE); //所有燈箱的燈熄滅 if(Index==NO){ Music_Play(7); //播放錯誤的地鼠音效 Index=YES; } else if((Index==YES) && (Music_Read_FeedBack()==1)){ //等待錯誤的效果執行完畢 Index=NO; return 1; } return 0; } /*************************************** 功能:這是一個執行一次的任務; 參數:無; 返回:無; ***************************************/ void Master_Setup() { Game_Star(); //游戲啟動函數 } /************************************** 功能:這是一個循環函數; 參數:無; 返回:無; PS:1-上個機關啟動之后,所有的指示燈閃爍3次,開始播放循環播放北京音效,該游戲啟動。 2-此時,隨機播放一首音效(1-5首其中一個),并且對應的燈箱亮起, 如果,如果在3秒內按下對應的地鼠按鍵,燈箱熄滅,連續擊中N(可以設置)次之后,所有地鼠快速閃爍5次,播放成功音效,電磁鎖打開。 3-如果在規定時間內,沒有擊中對應的地鼠,或者擊錯地鼠,游戲失敗,播放錯誤音效,需要從頭開始。 **************************************/ void Master_Loop() { uchar Sta=0; switch (Game_isGo) { case 0: Game_isGo=Game_result(); //游戲結果函數 break; case 1: Sta=Game_Right(); if(Sta==YES){ Game_isGo=NO; } else if(Sta==second){ Game_isGo=3; } break; case 2: if(Game_Wrong())Game_isGo=NO; break; default: break; } } ```
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看