如何在pi上使用十六进制和二进制值进行计算,并在gpi上进行快速输出

2024-10-04 09:19:47 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图用Pi来控制led矩阵。我已经在Arduino Uno上做了同样的事情。我是python新手,需要帮助将以下Arduino代码转换为python:

byte RGB = 0b00000000;
uint64_t  rowR[16]
uint64_t  temp;
uint8_t   i;
int row   = 0;

void setup(){
temp     = 0x0000000000000001;
rowR[0] = 0XFA24D2241F701070;
rowR[1] = 0X122472271070DF70;
rowR[2] = 0X1324000010480000;
rowR[3] = 0X13240000104C0000;
rowR[4] = 0X12A400001E440000;
rowR[5] = 0X12A4000010440000;
rowR[6] = 0X12640000104C0000;
rowR[7] = 0X9264000010480000;
rowR[8] = 0XFA24D2241F701070;
rowR[9] = 0X122472271070DF70;
rowR[10] = 0X1324000010480000;
rowR[11] = 0X13240000104C0000;
rowR[12] = 0X12A400001E440000;
rowR[13] = 0X12A4000010440000;
rowR[14] = 0X12640000104C0000;
rowR[15] = 0X9264000010480000;
}

void loop(){
for (row = 0; row < 8; row++)
{

for (i = 0; i < 64; i++)
{
RGB     = ((!!(rowR[row] & (temp << (63 - i)))) << (2)) /*pin2*/
        | ((!!(rowG[row] & (temp << (63 - i)))) << (3)) /*pin3*/
        | ((!!(rowB[row] & (temp << (63 - i)))) << (4)) /*pin4*/
        | ((!!(rowR[row + 8] & (temp << (63 - i)))) << (5)) /*pin5*/
        | ((!!(rowG[row + 8] & (temp << (63 - i)))) << (6)) /*pin6*/
        | ((!!(rowB[row + 8] & (temp << (63 - i)))) << (7)); /*pin7*/

PORTD = RGB; //writing to pins 0-7
}
}

这显然不是完整的代码,但这是我感到困惑的地方。我试图将此系统转换为一个带有GPIO引脚的pi,主要用于LED矩阵的最高刷新率

编辑:还有没有比使用“GPIO.output()更快的方法来操作raspberry pi的GPIO引脚


Tags: 代码forgpiopi矩阵rgbtemparduino