- UID
- 373967
- 帖子
- 8882
- 主題
- 2609
- 精華
- 0
- 積分
- 1000
- 楓幣
- 0
- 威望
- 977
- 存款
- 34955
- 贊助金額
- 0
- 推廣
- 0
- GP
- 1205
- 閱讀權限
- 70
- 在線時間
- 455 小時
- 註冊時間
- 2023-1-12
- 最後登入
- 2024-11-25
|
製作遙控車所需零件:
PIC18F2420 微控制器
遙控器(可以使用基於無線電頻段的 RF 遙控器,或者基於紅外線的 IR 遙控器)
雙向直流馬達驅動板
雙向直流馬達(一個或兩個,視車身設計而定)
車輪
電池(6V-12V)
杜邦線
麵包板(用於製作原型)
PIC18F2420 腳位連接:
以下是 PIC18F2420 的腳位連接:
RA0 - 用於連接馬達驅動器的 IN1 輸入
RA1 - 用於連接馬達驅動器的 IN2 輸入
RA2 - 用於連接馬達驅動器的 EN1 輸入
RA3 - 用於連接馬達驅動器的 EN2 輸入
RC6 - 用於接收遙控器訊號
RC7 - 用於連接馬達驅動器的 IN3 輸入
RD0 - 用於連接馬達驅動器的 IN4 輸入
RD1 - 用於連接馬達驅動器的 EN3 輸入
VCC - 用於連接正極電源
GND - 用於連接負極電源
程式碼:
以下 PIC18F2420 程式碼,用於控制遙控車的前進、後退、左轉和右轉。
這個程式碼需要使用 PIC C 編譯器進行編譯。
#include <p18f2420.h>
#pragma config OSC = INTIO7
#pragma config FCMEN = OFF
#pragma config IESO = OFF
#pragma config PWRT = ON
#pragma config BOR = OFF
#pragma config WDT = OFF
#pragma config MCLRE = ON
#pragma config PBADEN = OFF
#pragma config LVP = OFF
void delay_ms(unsigned int ms)
{
unsigned int i, j;
for (i = 0; i < ms; i++) {
for (j = 0; j < 1000; j++) {
asm("NOP");
}
}
}
void main()
{
TRISA = 0x00;
TRISC = 0xFF;
TRISD = 0x00;
while (1) {
if (PORTCbits.RC6 == 0) {
PORTAbits.RA0 = 1;
PORTAbits.RA1 = 0;
PORTAbits.RA2 = 1;
PORTAb
bits.RA3 = 1;
PORTCbits.RC7 = 1;
PORTDbits.RD0 = 0;
PORTDbits.RD1 = 1;
delay_ms(1000);
} else {
PORTAbits.RA0 = 0;
PORTAbits.RA1 = 0;
PORTAbits.RA2 = 0;
PORTAbits.RA3 = 0;
PORTCbits.RC7 = 0;
PORTDbits.RD0 = 0;
PORTDbits.RD1 = 0;
}
}
}
這個程式碼中,我們設置 RA0、RA1、RA2、RA3、RC7、RD0 和 RD1 這些輸出腳位,用於控制馬達驅動器的輸入腳位。
在主函數中,我們使用無限迴圈來持續監聽遙控器訊號,並根據訊號來控制馬達的運動方向和速度。
如果收到的訊號為 0,則將所有輸出腳位都設置為 0,停止馬達運動。
這個程式碼可以根據具體需求進行修改,例如可以添加障礙物檢測和避障功能等。 |
|