树莓派 Sense HAT LED 矩阵控制代码分析
if xInit then Sense_Hat.adwPixel := adwPixel_Init; xInit := FALSE; END_IF
//calculate color value dwColor := USINT_TO_UDINT(usiRed) * DWORD#16#10000 + USINT_TO_UDINT(usiGreen) * DWORD#16#100 + USINT_TO_UDINT(usiBlue);
//prepare initialization for pixel field sInitPixel := '$tadwPixel_Init: ARRAY[0..63] OF DWORD := ['; ps := ADR(sInitPixel) + Len(sInitPixel); FOR ui:=0 TO 63 DO IF axSet[ui] OR (ui=uiSel AND Sense_Hat.xJoystickEnter) THEN Sense_hat.adwPixel[ui] := dwColor; axSet[ui] := FALSE; END_IF sTemp := DWORD_TO_STRING(Sense_hat.adwPixel[ui]); stu.StrConcatA(ADR(sTemp), ps, 5000); ps := ps + LEN(sTemp); IF ui < 63 THEN sTemp := ', '; stu.StrConcatA(ADR(sTemp), ps, 5000); ps := ps + LEN(sTemp); ELSE sTemp := '];'; stu.StrConcatA(ADR(sTemp), ps, 5000); ps := ps + LEN(sTemp); END_IF IF ui MOD 8 = 7 THEN sTemp := '$r$n$t$t'; stu.StrConcatA(ADR(sTemp), ps, 5000); ps := ps + LEN(sTemp); END_IF END_FOR
//move selection IF Sense_Hat.xJoystickUp AND uiSel >= 8 THEN uiSel := uiSel - 8; END_IF IF Sense_Hat.xJoystickDown AND uiSel < 56 THEN uiSel := uiSel + 8; END_IF IF Sense_Hat.xJoystickLeft AND uiSel MOD 8 > 0 THEN uiSel := uiSel - 1; END_IF IF Sense_Hat.xJoystickRight AND uiSel MOD 8 < 7 THEN uiSel := uiSel + 1; END_IF
原文地址: https://www.cveoy.top/t/topic/ler9 著作权归作者所有。请勿转载和采集!