![]() |
發布時間: 2018-12-5 22:48
正文摘要:求助 在用nRF24L01無線模塊做遙控小車中遇到一個奇葩的問題 我有兩個nRF24L01無線模塊 一發一收 還有一個USB轉nRF24L01無線模塊 現已實現單片機與單片機 電腦與單片機的無線傳輸 遇到的問題 ... |
經過無數次調試 終于實現了單片機1通過nrf2401無線控制單片機2 控制兩個電機,可是為什么能成功完全不明白 請大神指教 程序 void main() { uchar i, sdat; 此處聲明變量,就無法通過單片機1無線控制 但是在開頭聲明此兩個全局變量,把驅動電機子程序替換這個子程序的函數 就能實現單片機1的無線控制了 ,但是有個新問題,每個數據只能按一次,電機執行一次,再按就沒有反應了,單片機復位后又可以每個鍵控制一遍,,,,,求大神分析分析啊 while(NRF24L01_Check()); //檢測到nrf2401才執行下一步 NRF24L01_RT_Init(); while(1) { if(NRF_IRQ==0) // 如果接收到數據 { if(NRF24L01_RxPacket(rece_buf)==0)//如果接受數據完成 { if(rece_buf[1]==1) //如果收到數據是1 { led=0; delay(100); led=1; //led等閃一下 HC595SendData(0x18);驅動電機正轉的子程序 }}} delay(100);}} 此程序只有用電腦發送數據才能將電機驅動 單片機1發射不行 void HC595SendData(uchar sdat) //L293D·驅動電機正轉的子程序 { uchar i; for(i=0;i<8;i++) { SER = sdat>>7; sdat= sdat<<1; SCK = 1; _nop_(); _nop_(); SCK = 0; RCK=1; _nop_(); _nop_(); RCK=0; } } 經過改了程序 刪除 HC595SendData(0x18);驅動電機正轉的子程序 在void main()主函數外聲明全局變量就可以了 |
硬件應該沒有問題,LED亮了。應該查下字符有沒有對上,電腦發的字符和單片機發送的字符,最好查看下發送的ascii碼。 |