feat: use redis to communicate movement

This commit is contained in:
2020-08-27 16:37:54 +02:00
parent 32e2e0dfae
commit 24a36e156f
5 changed files with 147 additions and 72 deletions

View File

@@ -11,9 +11,28 @@
**********************************************************************
'''
import smbus
from smbus2 import SMBus
import time
import math
import os
class MockSMBus:
def __init__(self, bus_number):
self.bus_number = bus_number
self.data = {}
def write_byte_data(self, addr, res, value):
print(f"SMBus write {addr}[{res}] {value}")
if addr not in self.data:
self.data[addr] = {}
self.data[addr][res] = value if value else 0
def read_byte_data(self, addr, res):
print(f"SMBus read {addr}[{res}]")
if addr not in self.data:
self.data[addr] = {}
return self.data[addr][res] if res in self.data[addr] else 0
def map_range(x, in_min, in_max, out_min, out_max):
@@ -53,7 +72,10 @@ class PWM:
self.bus_number = 1
else:
self.bus_number = bus_number
self.bus = smbus.SMBus(self.bus_number)
if os.environ['PCA9685_MOCK_SMBUS'] == 'true':
self.bus = MockSMBus(self.bus_number)
else:
self.bus = SMBus(self.bus_number)
self._frequency = 60
def _debug_(self, message):
@@ -109,7 +131,7 @@ class PWM:
prescale = math.floor(prescale_value + 0.5)
self._debug_('Final pre-scale: %d' % prescale)
old_mode = self._read_byte_data(self._MODE1);
old_mode = self._read_byte_data(self._MODE1)
new_mode = (old_mode & 0x7F) | 0x10
self._write_byte_data(self._MODE1, new_mode)
self._write_byte_data(self._PRESCALE, int(math.floor(prescale)))