这是lib_robotis的代码片段,值n是我们输入的角度(旋转dimexel马达)。
根据电机内部芯片的结构,我们要求将目标位置的低位(由lo标识)输入地址0x1e,将目标位置的高位(由hi标识)输入地址0x1f。

def move_to_encoder(self,n);
    n=min(max(n,0),self.settings['max_encoder'])
    hi,lo=n/256, n%256
    return self.write_address(0x1e, [hi,lo])

最佳答案

n是0<=n<256*256范围内的数字。表示这个数字需要两个字节,因为一个字节可以编码0到255之间的值。
hi,lo=n/256, n%256

hi = n / 256
lo = n % 256

/是除法运算符,%是余数运算符,因此上面的代码将n除以256,并将商存储在hi中,余数存储在lo中。hilo中的每一个都将在0到255的范围内,因此它们都将适合一个字节。n==(256*hi)+lo,因此没有丢失任何信息&马达控制器拥有执行所需操作所需的所有信息。
我假设您文章中的代码是为Python2编写的;它在Python3上不能正常工作。您应该将n / 256替换为n // 256以使代码在所有版本的Python上工作。
FWIW,有很多更好的方法可以把一个数字分成高字节和低字节。一个使用内置的divmod功能:
hi, lo = divmod(n, 256)

关于python -/256和%256的用途是什么,地址如何分为高位和低位?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28086076/

10-15 22:56
查看更多