1. 确定对象

以小车为例,假设小车上有'车灯'和'四个电机'两种对象.

车灯:需要确定车灯接在那个pin上,还需要提供'on','off'和'闪烁n次'三种功能。

电机:需要确定四个电机的八根信号线接在哪些pin上,还需要提供'forward','backward','stop'等功能

2. 实例化对象并调用功能

小车上可以有多个车灯,每个车灯都可以实例化

led = car.LED(13) # 在引脚13上创建一个LED对象

四个电机构成一个整体'move',实例化方法

move = car.MOVE(5,6,7,8,9,10,11,12) # 在引脚5-12上创建一个小车MOVE对象

3. 代码实现方法:

分成两个文件:

# car_main.py

import car

def main():
    led = car.LED(13)    # 在引脚13上创建一个LED对象
    move = car.MOVE(5,6,7,8,9,10,11,12)    # 在引脚5-12上创建一个小车MOVE对象

    led.blink(2)    # LED闪烁2次
    move.forward()
    
    led.blink(2)  
    move.backward()

    led.blink(2)   
    move.stop()
    
if __name__ == '__main__':
    main()
# car.py
from machine import Pin
import time

class LED:
    def __init__(self, pin_num):
        self.pin = Pin(pin_num, Pin.OUT)

    def on(self):
        self.pin.value(1)

    def off(self):
        self.pin.value(0)

    def blink(self, times, duration=0.5):
        for i in range(times):
            self.on()
            time.sleep(duration)
            self.off()
            time.sleep(duration)

class MOVE:
    def __init__(self, w1_1, w1_2, w2_1, w2_2, w3_1, w3_2, w4_1, w4_2):
        self.zq1 = Pin(w1_1, Pin.OUT) #左前
        self.zq2 = Pin(w1_2, Pin.OUT)
        self.yq1 = Pin(w2_1, Pin.OUT) #右前
        self.yq2 = Pin(w2_2, Pin.OUT)
        self.zh1 = Pin(w3_1, Pin.OUT) #左后
        self.zh2 = Pin(w3_2, Pin.OUT)
        self.yh1 = Pin(w4_1, Pin.OUT) #右后
        self.yh2 = Pin(w4_2, Pin.OUT)

    def forward(self):
        self.zq1.value(1)
        self.zq2.value(0)
        self.yq1.value(1)
        self.yq2.value(0)
        self.zh1.value(1)
        self.zh2.value(0)
        self.yh1.value(1)
        self.yh2.value(0)
    
    def backward(self):
        self.zq1.value(0)
        self.zq2.value(1)
        self.yq1.value(0)
        self.yq2.value(1)
        self.zh1.value(0)
        self.zh2.value(1)
        self.yh1.value(0)
        self.yh2.value(1)
    
    def stop(self):
        self.zq1.value(0)
        self.zq2.value(0)
        self.yq1.value(0)
        self.yq2.value(0)
        self.zh1.value(0)
        self.zh2.value(0)
        self.yh1.value(0)
        self.yh2.value(0)  

发表评论