Raspberry Pi 세그먼트 표현 질문입니다!!

조회수 262회

알파뱃 A, C, E, F, H, J, L, O, P, S, U 를 16진수로 표시하면 {0x88, 0xC6, 0x86, 0x8E, 0x89, 0xE1, 0xC7, 0xC0, 0x8C, 0x92, 0xC1}인데 6개의 세그먼트에 6개의 알파뱃이 표시된 후 0.5 초 후에 한 글자씩 왼쪽으로 움직이도록 구현할려고 하는데 현재 코드도 맞는지 모르겠고 추후 방향을 잡을수가 없어 힌트를 얻고자 질문드립니다...

import smbus
import time
PCA9535_OUTPUT = 0
PCA9535_INPUT = 1
FND = [0x88, 0xC6, 0x86, 0x8E, 0x89, 0xE1, 0xC7, 0xC0, 0x8C, 0x92, 0xC1]
_MODE = [0xFF, 0xFF]
_VALUE = [0xFF, 0xFF]
BUS = smbus.SMBus(1)
def pca9535_pin_mode(addr, port, pin, mode):
    if (mode == 1):
        _MODE[port] |= (1 << pin)
    else:
        _MODE[port] &= ~(1 << pin)
    BUS.write_word_data(addr, (port + 0x06), _MODE[port])
    print("pin:{:#010b}".format(port + 0x06),
          "mode:{:#010b}".format(_MODE[port]))
def fnd_write(addr, num):
    n = [
        (num % 1000000) // 100000,
        (num % 100000) // 10000,
        (num % 10000) // 1000,
        (num % 1000) // 100,
        (num % 100) // 10,
        (num % 10) // 1
    ]
    for i in range(6):
        BUS.write_word_data(addr, 0x03, 0x00)
        BUS.write_word_data(addr, 0x02, FND[n[i]])
        BUS.write_word_data(addr, 0x03, (1 << i))
def main():
    addr = 0x21
    try:
        for i in range(8):
            pca9535_pin_mode(addr, 0, i, PCA9535_OUTPUT)
            pca9535_pin_mode(addr, 1, i, PCA9535_OUTPUT)
            tmp = []
    while True:
        for i in range(11):
            for j in range(0):
                BUS.write_word_data(addr, 0x03, 0x00)
                BUS.write_word_data(addr, 0x02, FND[j])
                BUS.write_word_data(addr, 0x03, 1 << 5)
                time.sleep(0.5)
    except KeyboardInterrupt:
        pass
if __name__ == "__main__":
    main()

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)