|
可能寫(xiě)得不太好啊 呵呵
所有資料51hei提供下載:
yaokong_heise.rar
(305.16 KB, 下載次數(shù): 33)
2017-8-6 16:28 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
單片機(jī)源程序如下:
- #include "sys.h"
- #include "head.h"
- #include "key.h"
- /*******************************************************
- 前后 Get_Adc_Average(11,5);
- 左右 Get_Adc_Average(10,5);
- 油門(mén) Get_Adc_Average(2,5);
- 旋轉(zhuǎn) Get_Adc_Average(1,5);
- *******************************************************/
- /*
- 發(fā)送的數(shù)組
- 0:0X12 校驗(yàn)碼
- 1:起飛標(biāo)志 1:可以起飛 0:不可起飛 2:參數(shù)調(diào)節(jié)
- 2:前后方向控制 0:停止 1:后 2:前
- 3:左右方向控制 0:停止 1:左 2:右
- 4:油門(mén)控制 0:停止 1:下降 2:上升
- 5:旋轉(zhuǎn)控制 0:停止 1:逆時(shí)針 2:順時(shí)針
- */
- u8 nrf_send[6];
- void xianshi_fly(void);
- void check_main(void);
- //按鍵參數(shù)
- extern key_type key;
- //接收信號(hào)標(biāo)志
- u8 jieshou_error=0;
- //搖桿電位器參數(shù)
- extern yaogan yaogan_ad;
- //通用參數(shù)
- extern tongyong_type tongyong;
- /*
- 起飛標(biāo)志
- 值為0 可以起飛
- 1 初始化未完成
- */
- u8 jishen_error=0;
- int main(void)
- {
- u16 t=0;
- u8 tmp_buf_rec[4];
- nrf_send[1]=0; //不可起飛 定時(shí)器開(kāi)啟后可以起飛
- nrf_send[0]=0x12;
- delay_init();//初始化延時(shí)函數(shù)
- NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //設(shè)置NVIC中斷分組2:2位搶占優(yōu)先級(jí),2位響應(yīng)優(yōu)先級(jí)
- led_init(); //GPIO初始化
- ad_init(); //AD初始化
- key_init();
- OLED_Init();
- OLED_Clear();
- canshu_chushihua();
- OLED_ShowString(20,3,"WAIT...",16);
- NRF24L01_Init(); //NRF24L01初始化
- while(NRF24L01_Check())//檢測(cè)NRF24L01是否存在
- {
- OLED_ShowString(20,5,"NRF_ERROR",16);
- }
- OLED_ShowString(20,5," ",16);
- //等待接收機(jī)身初始化結(jié)果
- NRF24L01_RX_Mode(); //接收模式
- delay_ms(3000);
- while(NRF24L01_RxPacket(tmp_buf_rec))//一旦接收到信息,則顯示出來(lái).
- {
- delay_ms(1);
- t++;
- if(t>1000) break;
-
- }
- tongyong.dianya_jishen=tmp_buf_rec[2]+256;
- //機(jī)身電壓顯示
- OLED_ShowNum(8*10,0,tongyong.dianya_jishen/100,1,16);
- OLED_ShowString(8*11,0,".",16);
- OLED_ShowNum(8*12,0,tongyong.dianya_jishen%100,2,16);
- OLED_ShowString(0,0,"fus power:",16);
- //機(jī)身狀態(tài)返回
- if(tmp_buf_rec[3]==0)
- {
- OLED_ShowString(20,5,"FUS OK!",16);
- }
- else if(tmp_buf_rec[3]==1)
- {
- jishen_error=1;
- OLED_ShowString(20,5,"MPU ERROR!",16);
- }
- else if(tmp_buf_rec[3]==2)
- {
- jishen_error=1;
- OLED_ShowString(20,5,"NRF ERROR!",16);
- }
- else if(tmp_buf_rec[3]==3)
- {
- jishen_error=1;
- OLED_ShowString(20,5,"POWER LOW!",16);
- }
- if(jieshou_error==1)
- {
- OLED_ShowString(20,5,"REC ERROR!",16);
- }
- NRF24L01_TX_Mode(); //接收模式
- /***********此處需改***************/
- //主函數(shù)循環(huán)函數(shù)
- check_main();
- }
- void check_main(void)
- {
- int ceshi_x0,ceshi_y0,ceshi_x1,ceshi_y1;
- u8 t=0;
- OLED_ShowString(20,3,"INIT OK!",16);
- while(1)
- {
- if(nrf_send[1]!=2) //發(fā)送函數(shù)
- {
- if(NRF24L01_TxPacket(nrf_send)==TX_OK)
- {
- LED1=!LED1;
- }
- else
- {
- LED3=!LED3;
- }
- }
- //起飛操作:兩搖桿拉至最低保持一秒
- if(nrf_send[1]==0)
- {
-
- ceshi_x0=Get_Adc_Average(10,5);
- ceshi_y0=Get_Adc_Average(2,5);
- if(ceshi_x0<100&&ceshi_y0<100)
- {
- delay_ms(10);
- ceshi_x1=Get_Adc_Average(10,5);
- ceshi_y1=Get_Adc_Average(2,5);
- if(ceshi_y1<100&&ceshi_x1<100)
- {
- t++;
- if(jishen_error==0&&t>10)
- {
- OLED_Clear();
- nrf_send[1]=1; //可以起飛
- xianshi_fly();
- time3_init(10);
- }
- }
- else
- {
- t=0;
- }
- }
-
-
- }
- }
- }
- void xianshi_fly(void)
- {
- OLED_ShowCHinese(85,0,0); //上
- OLED_ShowCHinese(85,4,1); //下
- OLED_ShowCHinese(69,2,2); //左
- OLED_ShowCHinese(101,2,3); //右
- OLED_ShowString(0,0,"Y:",16);
- OLED_ShowString(0,4,"X:",16);
- }
復(fù)制代碼
|
|