Python Raspberry Pi 7 Segment Bildschirm
lima-city → Forum → Programmiersprachen → Python
abfrage
ahnung
art
beispiel
code
dank
display
funktion
helfen
high
liegen
nummer
output
page
programmieren
segment
steuerung
url
wandeln
ziffer
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Hallo,
Eine Siebensegementanzeige sind ja eigentlich nur 7 leds .
Das heißt du kannst einfach jedes Tut über led Steuerung mit Pythen benuzen.
Zum Beilpiel dieses http://www.thirdeyevis.com/pi-page-2.php hier.
Es ist genauso als würdest du 28 einzelne Leds ansteuern. -
Ja w3J ...
Aber wie soll ich das jetzt um wandeln wenn ich z.B. eine "8" schreiben will ... Müsste ich dann 7 Segment LED anschalten ! Aber wie schreibe ich die Rotiene ... ;/
Trotzdem Danke! :) -
Du machst einfach eine Funktion, der du dann z.B eine 8 und die Nummer des Segements übergiebst und dann eine if Abfrage durchfürst.
(Ich kann leider kein Python mehr, desshalb pythonähnlicher pseudocode (hoffe ich))
Beilspielsweise:
funktion nummer_anzeigen(num,seg): if num=0: ledseg_an(1,seg) ledseg_an(2,seg) ... ledseg_aus(4,seg) ... if num=1: ledseg_an(1,seg) ... ... funktion ledseg_an(segp,segn): gipo(1,segp*segn+1) ...
Bei diesem Schnipsel muss das 1. Segement an den gipos 1-7 liegen das 2. an 8-14 ...
dann kanst du einfach
nummer_anzeigen(nummer,segement)
aufrufen und fertig
w3j -
Schon mal Danke :)
Ich hab nämlich auch keine Ahnung von Python ...
... Des wegen habe ich es jetzt in C(++) zsm gestöbselt ...
#include <wiringPi.h> #include <stdio.h> #define Bit0 8 #define Bit1 9 #define Bit2 10 #define Bit3 11 unsigned char const SegCode[10] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; unsigned char DatBuf[4] = {0,0,0,0}; int cnt = 0; void sysInit(void) { int i; for(i=0;i<12;i++){ pinMode(i, OUTPUT); digitalWrite(i, HIGH); } } void do_cnt(void) { DatBuf[0] = SegCode[cnt % 10]; DatBuf[1] = SegCode[cnt % 100 / 10]; DatBuf[2] = SegCode[cnt % 1000 / 100]; DatBuf[3] = SegCode[cnt / 1000]; } void display(void) { int i; for(i=0;i<100;i++){ digitalWrite(Bit0, 0); digitalWrite(Bit1, 1); digitalWrite(Bit2, 1); digitalWrite(Bit3, 1); digitalWriteByte(DatBuf[0]); delay(1); digitalWrite(Bit0, 1); digitalWrite(Bit1, 0); digitalWrite(Bit2, 1); digitalWrite(Bit3, 1); digitalWriteByte(DatBuf[1]); delay(1); digitalWrite(Bit0, 1); digitalWrite(Bit1, 1); digitalWrite(Bit2, 0); digitalWrite(Bit3, 1); digitalWriteByte(DatBuf[2]); delay(1); digitalWrite(Bit0, 1); digitalWrite(Bit1, 1); digitalWrite(Bit2, 1); digitalWrite(Bit3, 0); digitalWriteByte(DatBuf[3]); delay(1); } cnt++; if(cnt == 10000){ cnt = 0; } } int main(void) { if(wiringPiSetup() == -1){ printf("setup wiringPi failed !"); return 1; } sysInit(); while(1){ do_cnt(); display(); } return 0; }
Dann muss ich es halt auf die Art wie zuvor machen in c(++) programmieren ...
Nochmal Vielen Dank für die bemühungen!
Gruß
Luca -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage