Raspberry con Indicatore a 7 segmenti

Oggi vi mostreremo come usare il raspberry Pi anche attraverso il Raspberry Pi, come potete vedere.

 

Sono morto con un preparato fresco. Raspberry Pi 3 Modello B, che: segmento a 4 cifre di 7 segmenti e una manciata Cavo Jumper.

A seconda del modello, le GPIO Pins si discheranno di Raspberry Pi. Il pannello che si sta collegando è il seguente:

cablaggio 7 - segmento di RasPi  

 

Dopo un primo avvio, ci si è seppelliti il desktop di Raspbian.

 

Vogliamo la biblioteca molto diffusa. EffingPi Utilizzare per controllare i Pins GPIO.

La biblioteca ci permette di farlo.

  • Definizione di Pins
  • Sospensione di Pins come entrata o uscita
  • Scrivi a Pins o a leggere da loro

A tal fine, apriremo un terminale e digitare il seguente comando:

sudo pip3 install wiringpi

Viene visualizzato il seguente output:

 

Per il controllo della visualizzazione dei 7 segmenti, utilizziamo una versione leggermente modificata di https://github.com/johnlr/raspberrypi-tm1637

Inizia il nostro Python3 IDLE, camminiamo su File - > New File e inserisci il codice seguente:

 

 

#!/ù/bin/env python3

importazione subprocess
da time importazione time, sleep, localtime

da wiringpi importazione wiringPiSetupGpio, pinMode, diga digitale, scrittura digitale, GPIO
wiringPiSetupGpio()

CLK = 21
VALUTAZIONE = 20

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


classe TM1637:     I2C_COMM1 = 0x40     I2C_COMM2 = 0xC0     I2C_COMM3 = 0x80     segmento - to_- segmento = [         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  # F         ]     def __init__(self, clk, dio):         self.clk = clk         self.dio = dio         self.brightness = 0x0f         pinMode(self.clk, GPIO.INPUT)         pinMode(self.dio, GPIO.INPUT)         scrittura digitale(self.clk, GPIO.LOW)         scrittura digitale(self.dio, GPIO.LOW)     def bit_delay(self):         sleep(0.001)         return         def segmento set_segments(self, segmentazione, pos=0):         # Scrivi COMM1         self.start()         self.write_byte(self.I2C_COMM1)         self.stop()         # Scrivi COMM2 + first digit address         self.start()         self.write_byte(self.I2C_COMM2 + pos)         per seg in segmentazione:             self.write_byte(seg)         self.stop()         # Scrivi COMM3 + brightness         self.start()         self.write_byte(self.I2C_COMM3 + self.brightness)         self.stop()     def start(self):         pinMode(self.dio, GPIO.OUTPUT)         self.bit_delay()         def stop(self):         pinMode(self.dio, GPIO.OUTPUT)         self.bit_delay()         pinMode(self.clk, GPIO.INPUT)         self.bit_delay()         pinMode(self.dio, GPIO.INPUT)         self.bit_delay()        def write_byte(self, b):       # 8 Data Bit         per i in range(8):             # CLK low             pinMode(self.clk, GPIO.OUTPUT)             self.bit_delay()             pinMode(self.dio, GPIO.INPUT if b & 1 else GPIO.OUTPUT)             self.bit_delay()             pinMode(self.clk, GPIO.INPUT)             self.bit_delay()             b >>= 1                pinMode(self.clk, GPIO.OUTPUT)         self.bit_delay()         pinMode(self.clk, GPIO.INPUT)         self.bit_delay()         pinMode(self.clk, GPIO.OUTPUT)         self.bit_delay()         return


def show_ip_address(tm):     ipaddr = subprocess.check_output("hostname -I", shell=Vero, timeout=1).strip().split(b".")     per ocato in ipaddr:         tm.segmento set_segments([0, 0, 0, 0])         sleep(0.1)         tm.segmento set_segments([tm.segmento - to_- segmento[int(x) & 0xf] per x in ocato])         sleep(0.9)


def show_clock(tm):         t = localtime()         sleep(1 - time() % 1)         d0 = tm.segmento - to_- segmento[t.tm_hour / / 10 ] if t.tm_hour // 10 else 0         d1 = tm.segmento - to_- segmento[t.tm_hour % 10]         d2 = tm.segmento - to_- segmento[t.tm_min // 10]         d3 = tm.segmento - to_- segmento[t.tm_min % 10]         tm.segmento set_segments([d0, 0x80 + d1, d2, d3])         sleep(.5)         tm.segmento set_segments([d0, d1, d2, d3])


if __name__ == "__main__":     tm = TM1637(CLK, VALUTAZIONE)     show_ip_address(tm)     while Vero:         show_clock(tm)

 

 

 

 

 Ora, andremo a "Run" - e "Run module", per salvare un nome per salvare il nostro testo di origine, e stiamo aspettando un attimo.

La visualizzazione di 7 segmenti visualizza prima l'indirizzo IP locale e poi l'ora corrente:

 

 

 

 A partire da ora, quindi, è possibile prelevare facilmente le informazioni sul nostro segmento 7, utilizzando il metodo Raspberry Pi.

 

 

 

 

 

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

Post di blog consigliati

  1. Installa ESP32 ora dal gestore del consiglio di amministrazione
  2. Lüftersteuerung Raspberry Pi
  3. Arduino IDE - Programmieren für Einsteiger - Teil 1
  4. ESP32 - das Multitalent
  5. OTA - Over the Air - Programmazione ESP tramite WLAN