Raspberry mit 7-Segment Anzeige - AZ-Delivery

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:

Câblage 7-segment à RasPi  

 

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.

 

 

 

 

 

DisplaysProjekte für anfängerRaspberry pi

1 commentaire

Erich Zwiefelhofer

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?

Laisser un commentaire

Tous les commentaires sont modérés avant d'être publiés

Articles de blog recommandés

  1. ESP32 jetzt über den Boardverwalter installieren - AZ-Delivery
  2. Internet-Radio mit dem ESP32 - UPDATE - AZ-Delivery
  3. Arduino IDE - Programmieren für Einsteiger - Teil 1 - AZ-Delivery
  4. ESP32 - das Multitalent - AZ-Delivery