Как отобразить двоичное число на светодиодах (Raspberry Pi GPIO) Python - PullRequest
0 голосов
/ 21 ноября 2019

У меня есть несколько светодиодов, подключенных к выводам GPIO моего Pi, и я хочу отобразить, скажем, 8-битное двоичное число на светодиодах. Поэтому, если число равно 11110000, я хочу, чтобы первые четыре светодиода были включены, а последние четыре были выключены.

Я преобразовал десятичное число в двоичное, и я хочу отображать это двоичное число с помощью простогосветодиоды.

Ответы [ 2 ]

0 голосов
/ 21 ноября 2019

Я понял это, но может быть немного сложнее в этом подходе. Таким образом, мой номер представлен как 0b1000101

temp = 0b1000101
binF = temp[2:].zfill(7) #prints 1000101
binF1 = temp[3:].zfill(6) #prints 000101
binF2 = temp[4:].zfill(5) #prints 00101
binF3 = temp[5:].zfill(4) #prints 0101
binF4 = temp[6:].zfill(3) #prints 101
binF5 = temp[7:].zfill(2) #prints 01
binF6 = temp[8:].zfill(1) #prints 1

#Now we want the most significant bit
binFA = binF[1:].zfill(1) #prints 1
binF1A = binF1[1:].zfill(1) #prints 0
binF2A = binF2[1:].zfill(1) #prints 0
binF3A = binF3[1:].zfill(1) #prints 0
binF4A = binF4[1:].zfill(1) #prints 1
binF5A = binF5[1:].zfill(1) #prints 0
binF6A = binF6[1:].zfill(1) #prints 1

И отсюда мы можем присвоить значения определенным выводам GPIO

if binFA == '1':
    GPIO.output(21, 1)
else:
    GPIO.output(21, 0)

Установить все выводы GPIO по мере необходимости для количества битов

0 голосов
/ 21 ноября 2019

Вы, вероятно, можете начать с преобразования двоичного числа в пригодный для использования список значений, чтобы решить, какой из 8 светодиодов оставить включенным.

state = 0b11110000

expanded = []
for x in range(8):
    val = state & 0x01
    state = state >> 1
    expanded.append(val)
expanded = list(reversed(expanded))
print(expanded)    # [1, 1, 1, 1, 0, 0, 0, 0]

Используя expanded, вы можете решить, какие светодиоды должныоставаться включенным.

...