シフトレジスターには74HC595を使う。
ここでは、別々のGPIOから7セグメントLEDを点灯させたときと逆に、a→dpのビット順にしていて、コードではLSBから順に読みだしてシフトレジスターに送ることにした。
表示 | a b c d e f g dp | Hex |
0 | 11111100 | 0xfc |
1 | 01100000 | 0x60 |
2 | 11011010 | 0xda |
3 | 11110010 | 0xf2 |
4 | 01100110 | 0x66 |
5 | 10110110 | 0xb6 |
6 | 10111110 | 0xbe |
7 | 11100000 | 0xe0 |
8 | 11111110 | 0xfe |
9 | 11110110 | 0xf6 |
A | 11101110 | 0xee |
B | 00111110 | 0x3e |
C | 10011100 | 0x9c |
D | 01111010 | 0x7a |
E | 10011110 | 0x9e |
F | 10001110 | 0x8e |
以下はRaspberry Piで7セグメントLEDを点灯させるコード。リストのpatternsに0~Fまでのセグメント点灯パターンを入れ、対応する桁数分シフトしてシフトレジスターに送っている。そして、各パターンを0.5秒ずつ表示させてカウントアップさせている。
キットのテキストのコードでは、time.sleep()を入れていたり入れていなかったりするが、特にこれがなくても問題なく動作する。