Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/281.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/joomla/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 属性错误:RPi.GPIO.PWM没有属性';变更责任周期';_Python_Raspberry Pi_Gpio_Pwm - Fatal编程技术网

Python 属性错误:RPi.GPIO.PWM没有属性';变更责任周期';

Python 属性错误:RPi.GPIO.PWM没有属性';变更责任周期';,python,raspberry-pi,gpio,pwm,Python,Raspberry Pi,Gpio,Pwm,所以我用树莓皮B+做了一个小机器人,一切都进行得相当顺利,但我得到了这个错误信息,我似乎无法解决 属性错误:RPi.GPIO.PWM没有“ChangeDutyCycle”属性 这里有两件事你可能需要知道::D -在我把它作为一个类之前,代码运行得很好,ChangeDutyCycle确实存在 -如果我将鼠标放在一个“不允许”的位置,即给ChangeDutyCycle一个小于0或大于100的值,错误就会改变,变成“ChangeDutyCycle不能接受小于0或大于100的值”(因此,首先你告诉我没有

所以我用树莓皮B+做了一个小机器人,一切都进行得相当顺利,但我得到了这个错误信息,我似乎无法解决

属性错误:RPi.GPIO.PWM没有“ChangeDutyCycle”属性

这里有两件事你可能需要知道::D -在我把它作为一个类之前,代码运行得很好,ChangeDutyCycle确实存在 -如果我将鼠标放在一个“不允许”的位置,即给ChangeDutyCycle一个小于0或大于100的值,错误就会改变,变成“ChangeDutyCycle不能接受小于0或大于100的值”(因此,首先你告诉我没有这样的函数,然后告诉我它不能有一些值?:roll:)

所以我现在有点疯了。 注意:我是python的完全初学者,老实说,在我看来这是一个糟糕的java版本,但RPi GPIO似乎针对这种语言进行了优化,所以我正在尝试,所以如果您看到任何其他错误或不好的事情,一定要让我知道:D

现在的代码是:

我的“main”,从pygame窗口获取输入(鼠标位置)

和我的类,具有控制电机的功能,control.py:

import RPi.GPIO as GPIO
from time import sleep
import sys
import Tkinter as tk

class control:

   def __init__(self):

      import RPi.GPIO as GPIO

      GPIO.setmode(GPIO.BCM)

      GPIO.setup(3, GPIO.OUT)# set GPIO 25 as output for white led  
      GPIO.setup(18, GPIO.OUT)# set GPIO 24 as output for red led  
      GPIO.setup(2, GPIO.OUT)
      GPIO.setup(17, GPIO.OUT)


      self.Rb = GPIO.PWM(2, 100)
      self.Lf = GPIO.PWM(18, 100)
      self.Lb = GPIO.PWM(17, 100)
      self.Rf = GPIO.PWM(3, 100)


      self.Rb.start(0)
      self.Rf.start(0)
      self.Lb.start(0)
      self.Lf.start(0)

  def cleanup(self):
      self.Rb.stop()
      self.Rf.stop()
      self.Lb.stop()
      self.Lf.stop()

  def updateEngine(self, x, y):
      self.clear()
      if y>15 and (x>15 or x<-15) :
         self.Rf.ChangeDutyCucle(y-15-x)
         self.Lf.ChangeDutyCycle(y-15+x)

      elif y<-15 and (x>15 or x<-15) :
         self.Rb.ChangeDutyCycle(-15-y-x)
         self.Lb.ChangeDutyCycle(-15-y+x)

   def clear(self):
      self.Rf.ChangeDutyCycle(0)
      self.Rb.ChangeDutyCycle(0)
      self.Lf.ChangeDutyCycle(0)
      self.Lb.ChangeDutyCycle(0)
将RPi.GPIO导入为GPIO
从时间上导入睡眠
导入系统
将Tkinter作为tk导入
类控制:
定义初始化(自):
将RPi.GPIO导入为GPIO
GPIO.setmode(GPIO.BCM)
GPIO.setup(3,GPIO.OUT)#将GPIO 25设置为白色led的输出
GPIO.setup(18,GPIO.OUT)#将GPIO 24设置为红色led的输出
GPIO.setup(2,GPIO.OUT)
GPIO.setup(17,GPIO.OUT)
self.Rb=GPIO.PWM(2100)
Lf=GPIO.PWM(18100)
self.Lb=GPIO.PWM(17100)
self.Rf=GPIO.PWM(3100)
self.Rb.start(0)
自射频启动(0)
自磅启动(0)
自左开始(0)
def清理(自):
self.Rb.stop()
self.Rf.stop()
self.Lb.stop()
self.Lf.stop()
def更新引擎(自身、x、y):
self.clear()

如果y>15和(x>15或x,我将我的问题追溯到一个打字错误:我的
updateEngine
函数调用了
self.Rf.changedutycle
,而它本应该是
self.Rf.changedutycle

import RPi.GPIO as GPIO
from time import sleep
import sys
import Tkinter as tk

class control:

   def __init__(self):

      import RPi.GPIO as GPIO

      GPIO.setmode(GPIO.BCM)

      GPIO.setup(3, GPIO.OUT)# set GPIO 25 as output for white led  
      GPIO.setup(18, GPIO.OUT)# set GPIO 24 as output for red led  
      GPIO.setup(2, GPIO.OUT)
      GPIO.setup(17, GPIO.OUT)


      self.Rb = GPIO.PWM(2, 100)
      self.Lf = GPIO.PWM(18, 100)
      self.Lb = GPIO.PWM(17, 100)
      self.Rf = GPIO.PWM(3, 100)


      self.Rb.start(0)
      self.Rf.start(0)
      self.Lb.start(0)
      self.Lf.start(0)

  def cleanup(self):
      self.Rb.stop()
      self.Rf.stop()
      self.Lb.stop()
      self.Lf.stop()

  def updateEngine(self, x, y):
      self.clear()
      if y>15 and (x>15 or x<-15) :
         self.Rf.ChangeDutyCucle(y-15-x)
         self.Lf.ChangeDutyCycle(y-15+x)

      elif y<-15 and (x>15 or x<-15) :
         self.Rb.ChangeDutyCycle(-15-y-x)
         self.Lb.ChangeDutyCycle(-15-y+x)

   def clear(self):
      self.Rf.ChangeDutyCycle(0)
      self.Rb.ChangeDutyCycle(0)
      self.Lf.ChangeDutyCycle(0)
      self.Lb.ChangeDutyCycle(0)