Framboos met 7-segment display

Vandaag laten we je zien hoe je ons 7-segment display in gebruik nemen via de Raspberry Pi.

 

Ik begin met een nieuw geïnstalleerde Raspberry Pi 3 Model BDe viercijferig 7-segment displayen een handvol Jumper kabel.

Afhankelijk van het model zijn de GPIO-pinnen van de Raspberry Pi undertherin. Ik verbind de advertentie als volgt:

Bedrading 7-segment naar RasPi  

 

Na een eerste start begroet de lege Raspbian Desktop ons.

 

We willen de veelgebruikte bibliotheek WiringPiom de GPIO-pinnen te bedienen.

De bibliotheek stelt ons onder andere in staat om

  • Pinnen om te definiëren
  • Pinnen die u wilt instellen als invoer of uitvoer
  • Schrijf op pinnen, of lees van hen

Om dit te doen, openen we een terminal en voeren we de volgende opdracht in:

sudo pip3 installeren wiringpi

De volgende uitvoer wordt weergegeven:

 

We gebruiken een licht gewijzigde versie van https://github.com/johnlr/raspberrypi-tm1637

We starten onze Python3 IDLE, gaan naar 'Bestand' -> 'Nieuw bestand' en voegen de volgende code in:

 

 

#!/Usr/Am/Env python3

Importeren subproces
Van Tijd Importeren Tijd, Slaap, Lokaal

Van wiringpi Importeren bedradingPiSetupGpio, pinMode, digitaalLezen, digitalWrite, Gpio
bedradingPiSetupGpio()

Clk = 21
Dio = 20

"""       A      ---   V |   | B      -G-   E |   | C      ---       D
"""


Klasse TM1637:     I2C_COMM1 = 0x40     I2C_COMM2 = 0xC0     I2C_COMM3 = 0x80     digit_to_segment = [         0b0111111, # 0         0b0000110, # 1         0b1011011, # 2         0b1001111, # 3         0b1100110, # 4         0b1101101, # 5         0b1111101, # 6         0b0000111, # 7         0b1111111, # 8         0b1101111, # 9         0b1110111, # A         0b1111100, # B         0b0111001, # C         0b1011110, # D         0b1111001, # E         0b1110001  # V         ]     Verslaat __init__(Zelf, Clk, Dio):         Zelf.Clk = Clk         Zelf.Dio = Dio         Zelf."Ik ben niet = 0x0f         pinMode(Zelf.Clk, Gpio.Input)         pinMode(Zelf.Dio, Gpio.Input)         digitalWrite(Zelf.Clk, Gpio.Lage)         digitalWrite(Zelf.Dio, Gpio.Lage)     Verslaat bit_delay(Zelf):         Slaap(0.001)         Terug         Verslaat set_segments(Zelf, Segment, Item=0):         # Schrijven COMM1         Zelf.Start()         Zelf.write_byte(Zelf.I2C_COMM1)         Zelf.Stoppen()         # Schrijven COMM2 + Eerste Cijfer Adres         Zelf.Start()         Zelf.write_byte(Zelf.I2C_COMM2 + Item)         Voor Seg Inch Segment:             Zelf.write_byte(Seg)         Zelf.Stoppen()         # Schrijven COMM3 COMM3 + "Ik ben niet         Zelf.Start()         Zelf.write_byte(Zelf.I2C_COMM3 + Zelf."Ik ben niet)         Zelf.Stoppen()     Verslaat Start(Zelf):         pinMode(Zelf.Dio, Gpio.Output)         Zelf.bit_delay()         Verslaat Stoppen(Zelf):         pinMode(Zelf.Dio, Gpio.Output)         Zelf.bit_delay()         pinMode(Zelf.Clk, Gpio.Input)         Zelf.bit_delay()         pinMode(Zelf.Dio, Gpio.Input)         Zelf.bit_delay()        Verslaat write_byte(Zelf, B):       # 8 Gegevens Bits         Voor I. Inch Bereik(8):             # Clk Lage             pinMode(Zelf.Clk, Gpio.Output)             Zelf.bit_delay()             pinMode(Zelf.Dio, Gpio.Input Als B & 1 Anders Gpio.Output)             Zelf.bit_delay()             pinMode(Zelf.Clk, Gpio.Input)             Zelf.bit_delay()             B >>= 1                pinMode(Zelf.Clk, Gpio.Output)         Zelf.bit_delay()         pinMode(Zelf.Clk, Gpio.Input)         Zelf.bit_delay()         pinMode(Zelf.Clk, Gpio.Output)         Zelf.bit_delay()         Terug


Verslaat show_ip_address(Tm):     Ipaddr = subproces.check_output("hostname -I", Shell=Waar, Timeout=1).Strip().Split(B".")     Voor Octet Inch Ipaddr:         Tm.set_segments([0, 0, 0, 0])         Slaap(0.1)         Tm.set_segments([Tm.digit_to_segment[Int(X) & 0xf] Voor X Inch Octet])         Slaap(0.9)


Verslaat show_clock(Tm):         T = Lokaal()         Slaap(1 - Tijd() % 1)         d0 = Tm.digit_to_segment[T.tm_hour 10] als t.tm_hour / 10 anders 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])         Slaap(.5)         Tm.set_segments([d0, d1, d2, d3])


Als __name__ == "__main__":     Tm = TM1637(Clk, Dio)     show_ip_address(Tm)     Terwijl Waar:         show_clock(Tm)

 

 

 

 

Laten we nu naar "Run" gaan -> "Run-module", geef een naam op om onze broncode op te slaan en wacht even.

Het 7-segment display geeft nu eerst het lokale IP-adres weer en vervolgens de huidige tijd:

 

 

 

Vanaf nu u eenvoudig informatie naar ons 7-segment display met de Raspberry Pi brengen.

 

 

 

 

 

DisplaysProjekte für anfängerRaspberry pi

1 Kommentar

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?

Einen Kommentar hinterlassen

Alle Kommentare werden vor der Veröffentlichung moderiert

Aanbevolen blog berichten

  1. Installeer ESP32 nu van de raad van bestuur
  2. Lüftersteuerung Raspberry Pi
  3. Arduino IDE - Programmieren für Einsteiger - Teil 1
  4. ESP32 - das Multitalent
  5. OTA - Over the Air - ESP Programmeren via Wi-Fi