Raspberry Pi + WebIOPi + PCA9685(I2C PWM) with Python Script
次の手順で環境を整える。
#!/usr/bin/python
# coding: UTF-8
#from webiopi import deviceInstance
from webiopi.devices.analog.pca9685 import PCA9685
import random
class MyWebIOPi(object):
def __init__(self):
'''
Constructor
'''
# self.pca0 = deviceInstance("pwm0")
# self.pca1 = deviceInstance("pwm1")
self.pca0 = PCA9685(slave=0x40, frequency=100)
self.pca1 = PCA9685(slave=0x41, frequency=100)
self.ch_list = range(32)
random.shuffle(self.ch_list)
self.kMinPWM = 1
self.kMaxPWM = 4095
self.vals =
self.kmms =
self.mms = []
for ch in self.ch_list:
self.vals.append(self.kMinPWM)
mm = 1.05 + float(ch) / 60.0
self.kmms.append(mm)
self.mms.append(mm)
def demo(self):
for ch in self.ch_list:
val = self.vals[ch]
kmm = self.kmms[ch]
mm = self.mms[ch]
val *= mm
if val > self.kMaxPWM:
val = self.kMaxPWM
mm = 1.0 / kmm
elif val < self.kMinPWM:
val = self.kMinPWM
mm = kmm
pwm_percent = val / self.kMaxPWM
if ch < 16:
self.pca0.pwmWriteFloat(ch, pwm_percent)
else:
self.pca1.pwmWriteFloat(ch - 16, pwm_percent)
self.vals[ch] = val
self.mms[ch] = mm
if __name__ == '__main__':
my_webiopi = MyWebIOPi()
whileTrue:
my_webiopi.demo()
Apache + wsgi + Python/Pyramid の環境よりも、ぎこちない動きになっている。変なところに時間がかかっている?