|
遥控接收发射程序(STC15程序)
- #include <STC15W4K60S2.H>
- #include <NRF24L01.H>
- #include <AD.H>
- #include <intrins.h>
- uchar TxBuf[20]={0};
- uchar RxBuf[20]={0};
- unsigned int ax,ay,bx,by;
- unsigned int cx,cy,dx,dy;
- /*
- P1.2 左 上下
- P1.3 左 左右 有问题
- P1.4 右 上下
- P1.5 右 左右
- */
- void AD() //获取AD采样值 P1ASF=0x3c
- {
- cx=getADCResult(3); //左 X 左 左右 =cx
- Delay(5);
- cy=getADCResult(2); //左 Y 左 上下 =cy
- Delay(5);
- dx=getADCResult(5); //右 X 右 左右 =dx
- Delay(5);
- dy=getADCResult(4); //右 Y 右 上下 =dy
- Delay(5);
- }
- void main()
- {
- P0M0=0x00;
- P0M1=0x00;
- P1M0=0x00;
- P1M1=0x3c;
- P2M0=0x00;
- P2M1=0x00;
- P3M0=0x00;
- P3M1=0x00;
- P4M0=0x00;
- P4M1=0x00;
- P5M0=0x00;
- P5M1=0x00;
- P6M0=0x00;
- P6M1=0x00;
- P7M0=0x00;
- P7M1=0x00;
- //TxBUf[4] TRO 1俯仰 2横滚 3偏航
- //左 X 左 左右 =cx
- //左 Y 左 上下 =cy
- //右 X 右 左右 =dx
- //右 Y 右 上下 =dy
- init_NRF24L01(); //2401初始化
- adc_init(); // adc初始化
- ay=getADCResult(2)-128;
- Delay(5);
- ax=getADCResult(3)-128;
- Delay(5);
- bx=getADCResult(5)-128;
- Delay(5);
- by=getADCResult(4)-128;
- Delay(5);
- TxBuf[1]=128; //设置遥杆中值
- TxBuf[2]=128;
- TxBuf[3]=128;
- TxBuf[4]=128;
- while(1)
- {
- AD(); //adc采集数据 返回顺序 3 2 5 4
- TxBuf[0]++; //前 和 左 右边太软,可能机械问题
- if((cx-ax)>=255){TxBuf[3]=255;} else if((cx-ax)<=0){TxBuf[3]=0;}else TxBuf[3]=cx-ax;
- if((dx-bx)>=255){TxBuf[2]=255;} else if((dx-bx)<=0){TxBuf[2]=0;}else TxBuf[2]=dx-bx;
- if((255-cy)>=255){TxBuf[1]=255;} else if((255-cy)<=0){TxBuf[1]=0;}else TxBuf[1]=255-cy;
- if((255-dy)>=255){TxBuf[4]=255;} else if((255-dy)<=0){TxBuf[4]=0;}else TxBuf[4]=255-dy;
- //TxBuf[4]=255-dy;
- nRF24L01_TxPacket(TxBuf);//发送 tx_buf中数据
- Delay(1000);
- }
- }
复制代码
|
|