洪嵐峰 發表於 2023-4-30 10:13:30

PIC18F2420

製作遙控車所需零件:

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,停止馬達運動。
這個程式碼可以根據具體需求進行修改,例如可以添加障礙物檢測和避障功能等。

mikeyunlin 發表於 2023-4-30 10:17:42

:):)
頁: [1]
查看完整版本: PIC18F2420