Aujourd’hui, nous vous montrons comment mettre notre écran en 7 segments en opération via le Raspberry Pi.
Je commence par un nouveau Framboise Pi 3 Modèle BLla affichage à quatre chiffres de 7 segmentset une poignée de Câble Jumper.
Selon le modèle, les broches GPIO de la Raspberry Pi sont sous-therin. Je connecte l’annonce comme suit:
Après un premier départ, le bureau Raspbian vide nous accueille.
Nous voulons la bibliothèque largement utilisée WiringPipour contrôler les broches GPIO.
La bibliothèque nous permet, entre autres choses, de
- Épingles à définir
- Épingles à définir comme entrée ou sortie
- Écrivez sur des épingles ou lisez-les à partir d’eux
Pour ce faire, nous ouvrons un terminal et entrons dans la commande suivante :
sudo pip3 installer câblage
La sortie suivante apparaît :
Nous utilisons une version légèrement modifiée de https://github.com/johnlr/raspberrypi-tm1637
Nous commençons notre Python3 IDLE, aller à "File" -gt; "New File" et insérer le code suivant:
#!/Usr/Suis/Env python3 Importation sous-traitement De Temps Importation Temps, Dormir, Localtime De câblagepi Importation câblagePiSetupGpio, pinMode, digitalRead (en), digitalWrite (en), Gpio câblagePiSetupGpio() Clk = 21 Dio = 20 """ Un --- Q | | B -G- E | | C --- D """ Classe TM1637: I2C_COMM1 = 0x40 I2C_COMM2 = 0xC0 I2C_COMM3 = 0x80 digit_to_segment = [ 0b011111, # 0 0b0000110, # 1 0b1011011, # 2 0b1001111, # 3 0b1100110, # 4 0b1101101, # 5 0b11111101, # 6 0b0000111, # 7 0b11111111, # 8 0b1101111, # 9 0b1110111, # Un 0b1111100, # B 0b0111001, # C 0b1011110, # D 0b1111001, # E 0b1110001 # Q ] Def __init__(Auto, Clk, Dio): Auto.Clk = Clk Auto.Dio = Dio Auto."Je ne suis pas = 0x0f pinMode(Auto.Clk, Gpio.Entrée) pinMode(Auto.Dio, Gpio.Entrée) digitalWrite (en)(Auto.Clk, Gpio.Faible) digitalWrite (en)(Auto.Dio, Gpio.Faible) Def bit_delay(Auto): Dormir(0.001) Retour Def set_segments(Auto, Segment, Article=0): # Écrire COMM1 (en) Auto.Commencer() Auto.write_byte(Auto.I2C_COMM1) Auto.Arrêter() # Écrire COMM2 + Première Chiffre Adresse Auto.Commencer() Auto.write_byte(Auto.I2C_COMM2 + Article) Pour Seg Dans Segment: Auto.write_byte(Seg) Auto.Arrêter() # Écrire COMM3 (en) + "Je ne suis pas Auto.Commencer() Auto.write_byte(Auto.I2C_COMM3 + Auto."Je ne suis pas) Auto.Arrêter() Def Commencer(Auto): pinMode(Auto.Dio, Gpio.Sortie) Auto.bit_delay() Def Arrêter(Auto): pinMode(Auto.Dio, Gpio.Sortie) Auto.bit_delay() pinMode(Auto.Clk, Gpio.Entrée) Auto.bit_delay() pinMode(Auto.Dio, Gpio.Entrée) Auto.bit_delay() Def write_byte(Auto, B): # 8 Données Bits Pour Ⅰ. Dans Gamme(8): # Clk Faible pinMode(Auto.Clk, Gpio.Sortie) Auto.bit_delay() pinMode(Auto.Dio, Gpio.Entrée Si B & 1 Autre Gpio.Sortie) Auto.bit_delay() pinMode(Auto.Clk, Gpio.Entrée) Auto.bit_delay() B >>= 1 pinMode(Auto.Clk, Gpio.Sortie) Auto.bit_delay() pinMode(Auto.Clk, Gpio.Entrée) Auto.bit_delay() pinMode(Auto.Clk, Gpio.Sortie) Auto.bit_delay() Retour Def show_ip_address(Tm): ipaddr = sous-traitement.check_output("hostname -I", Shell=Vrai, Timeout=1).Bande().Split(B".") Pour Octet Octet Dans ipaddr: Tm.set_segments([0, 0, 0, 0]) Dormir(0.1) Tm.set_segments([Tm.digit_to_segment[Int(X) & 0xf] Pour X Dans Octet Octet]) Dormir(0.9) Def show_clock(Tm): T = Localtime() Dormir(1 - Temps() % 1) d0 = Tm.digit_to_segment[T.tm_hour 10] si t.tm_hour / 10 autres 0 d1 = Tm.digit_to_segment[T.tm_hour % 10] d2 = Tm.digit_to_segment[T.tm_min // 10] d3 = Tm.digit_to_segment[T.tm_min % 10] Tm.set_segments([d0, 0x80 + d1, d2, d3]) Dormir(.5) Tm.set_segments([d0, d1, d2, d3]) Si __name__ == "__main__": Tm = TM1637(Clk, Dio) show_ip_address(Tm) Tandis que Vrai: show_clock(Tm)
Maintenant, nous allons aller à "Run" -gt; "Run module", spécifier un nom pour enregistrer notre code source, et attendre un court laps de temps.
L’écran 7-segment affiche maintenant l’adresse IP locale d’abord, puis l’heure actuelle:
A partir de maintenant, vous pouvez facilement produire des informations sur notre écran 7 segment avec le Raspberry Pi.
1 commentaire
Erich Zwiefelhofer
Danke für das Beispielprogramm. Funktioniert mit der Darstellung der Systemzeit bestens.
Für die Darstellung der Temperatur möchte ich aber anstelle des Doppelpunktes in der Mitte nur den Kommapunkt verwenden. Wie wird der dargestellt? Kann mir da jemand helfen?