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:
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.
1 commento
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?