尝试为 Python 创建导入模块(对于 RPi GPIO)
Trying to create import module for Python (for RPi GPIO)
我是 Python 的新手。我正在尝试为我的 Raspberry Pi 创建一个使用 PWM 电机的假 GPIO 模块,以便我的解释器(使用 Visual Studio 代码)可以理解它并无错误地传递它。
这就是我想要实现的:
#Motor.py
import RPi.GPIO as GPIO
GPIO.PWM(16,100).start(0)
这是我在尝试学习 python 如何处理模块的基本方式后尝试创建的假模块
#RPi/GPIO.py
#(RPi folder has an empty __init__.py file along with the GPIO.py file)
BOARD = 1
IN = 1
OUT = 1
def setmode(a):
print(a)
def setup(a):
print(a)
def output(a):
print(a)
def PWM(a, b):
print(a)
def start(c):
print(c)
我得到的错误是这样的:
AttributeError: 'NoneType' object has no attribute 'start'
我不知道如何正确创建可以处理多个周期的模块。
我应该如何修复它才能达到我想要的效果?
GPIO.PWM
是 class - start
是 class 的成员函数。
因此您需要查看 classes 是如何使用 __init__()
方法构造的,以及成员函数如何工作。
这是您需要创建的 PWM class 示例:
class PWM:
def __init__(self, channel, frequency):
print(f"PWM({channel},{frequency})");
def start(self, duty_cycle):
print(f"PWM.start({duty_cycle})")
所以看看 GPIO.PWM(16,100).start(0)
- 这将首先通过调用 PWM __init__()
方法构造一个 PWM 对象 - 然后对该对象调用 start()
方法。
如果需要 PWM 对象,也可以将其拆分为两个调用。即
motor_pwm = GPIO.PWM(16.100)
motor_pwm.start(0)
如果这样更有意义?
我是 Python 的新手。我正在尝试为我的 Raspberry Pi 创建一个使用 PWM 电机的假 GPIO 模块,以便我的解释器(使用 Visual Studio 代码)可以理解它并无错误地传递它。
这就是我想要实现的:
#Motor.py
import RPi.GPIO as GPIO
GPIO.PWM(16,100).start(0)
这是我在尝试学习 python 如何处理模块的基本方式后尝试创建的假模块
#RPi/GPIO.py
#(RPi folder has an empty __init__.py file along with the GPIO.py file)
BOARD = 1
IN = 1
OUT = 1
def setmode(a):
print(a)
def setup(a):
print(a)
def output(a):
print(a)
def PWM(a, b):
print(a)
def start(c):
print(c)
我得到的错误是这样的:
AttributeError: 'NoneType' object has no attribute 'start'
我不知道如何正确创建可以处理多个周期的模块。 我应该如何修复它才能达到我想要的效果?
GPIO.PWM
是 class - start
是 class 的成员函数。
因此您需要查看 classes 是如何使用 __init__()
方法构造的,以及成员函数如何工作。
这是您需要创建的 PWM class 示例:
class PWM:
def __init__(self, channel, frequency):
print(f"PWM({channel},{frequency})");
def start(self, duty_cycle):
print(f"PWM.start({duty_cycle})")
所以看看 GPIO.PWM(16,100).start(0)
- 这将首先通过调用 PWM __init__()
方法构造一个 PWM 对象 - 然后对该对象调用 start()
方法。
如果需要 PWM 对象,也可以将其拆分为两个调用。即
motor_pwm = GPIO.PWM(16.100)
motor_pwm.start(0)
如果这样更有意义?