- MultiPlus Wechselrichter Insel und Nulleinspeisung Conrad         
Seite 2 von 7 ErsteErste 1234 ... LetzteLetzte
Ergebnis 11 bis 20 von 67

Thema: Eine LED-Matrix 5x7 ansteuern

  1. #11
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    26.05.2007
    Beiträge
    594
    Anzeige

    Praxistest und DIY Projekte
    Die Helligkeit der LEDs ändert sich halt mit der Anzeigedauer und der gewünschten Refresh-Rate.
    Die LEDs ohne Pause durchrattern zu lassen gibt die meisten FPS, aber wenn der µC vor jeder Zeile ein paar Zyklen rumkramen muss, dann wird das Bild schnell dunkel, weil er länger nachdenkt als das Bild zu zeigen.

    Ein paar Waitms vor der nächsten Zeile kehren das Verhältnis dann um, die FPS werden aber weniger.

    Am saubersten wirds mit einem Timer-Interrupt, der dem µC Raum für eventulle Berechnungen läßt und für eine feste Framrate sorgt.

    Ganz wichtig ist auf jeden Fall das schwarz-schalten der Reihe vor dem einlesen des neuen Bitmusters in die Spalte. Ansonsten bekommt man Geisterbilder.
    Auch kann die letzte/erste Zeile unterschiedlich hell sein, wenn der µC nach jedem Volldurchgang noch was anderes macht...

  2. #12
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    16.02.2006
    Beiträge
    1.113
    Zitat Zitat von Tryan
    Nur habe ich es da leider noch nicht geschafft in die zweite "Datenzeile" zu springen, wie es mit dem deinem Programm so einfach war.
    In diesem Programm werden die Data Zeilen mit dem Read Befehl in ein Array geschrieben. Mit Read kannst du nur sequentiell ab dem Restore Label einlesen. Du musst also entweder alles in ein genügend großes Array einlesen (z.B. AR(100)), oder du fügst vor jedem Zeichen ein neues Label ein. Dann muss aber dein Restore immer auf verschiedene Label gehen.
    Auch in diesem Programm kannst du die Lookup-Funktion benutzen, um von einer beliebigen Stelle einzulesen.

    Für die gleichmäßige Ausleuchtung müsstest du mal mehr von dem Gesamtsystem erzählen. Gibt es z.B. mehrere dieser 5x7 Anzeigen und hast du vielleicht zeitaufwändige Berechnungen vor dem Anzeigen zu machen und so weiter.
    Ansonsten gilt das was Stefan sagte. Lass einen Timer laufen, der bei jedem Überlauf eine Spalte weiterspringt und dann die Werte anzeigt. Dann sind alle immer gleichlang. Und mit der Zeit zwischen zwei Überläufen kannst du die Helligkeit steuern.

    Gruß

    Rolf

  3. #13
    Benutzer Stammmitglied
    Registriert seit
    16.09.2008
    Ort
    Hamburg
    Beiträge
    49
    Danke für eure Hilfe soweit.
    Wenn das Programm irgendwann mal fertig ist soll es zwei Aufgaben erfüllen.

    1. Frequenz-messen und auf ein LCD anzeigen.
    Das ist schon soweit fertig. Habe dafür Timer1 und den ICP genutzt.

    2. Taste 1 => zeigt eine 1 bei der Matrix an
    Taste 2 => zeigt eine 2 bei der Matrix an
    usw.....

    Da ich leider mit Arrays noch nicht gearbeitet habe, stehe ich da ganz schön auf dem schlauch
    Mit dem Timer ist es eine gut Idee.
    Aber wenn nur eine LED in einer Spalte anzeigt wird, wird diese doch heller sein, als z.b. 7 oder?

    Wenn dies der Fall ist, wäre es doch besser den Spalten ein Bitmuster zu geben und die Zeilen nach und nach freizuschalten....

    Mfg Tryan

    P.S. sorry für die ganzen fragen

  4. #14
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    26.05.2007
    Beiträge
    594
    Nein, die LEDs einer Spalte sind alle einzeln geschaltet - leuchten also immer gleich hell.

  5. #15
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    16.02.2006
    Beiträge
    1.113
    Zitat Zitat von Tryan
    2. Taste 1 => zeigt eine 1 bei der Matrix an
    Taste 2 => zeigt eine 2 bei der Matrix an
    usw.....
    Wenn du nur die zwei Zustände anzeigen willst, wäre es dann nicht besser, nur eine LED pro Zustand oder maximal eine 7-Segment Anzeige für beide Ziffern zusammen zu verwenden? Oder hat die Matrix noch eine andere Anzeigefunktion?

    Gruß

    Rolf

  6. #16
    Benutzer Stammmitglied
    Registriert seit
    16.09.2008
    Ort
    Hamburg
    Beiträge
    49
    Es kommen noch mehr Tasten hinzu und es müssen auch Buchstaben angezeigt werden wie z.b. ein "R" und darum hab ich mit für die 5x7 Matrix entschieden.

    Mfg Tryan

  7. #17
    Benutzer Stammmitglied
    Registriert seit
    16.09.2008
    Ort
    Hamburg
    Beiträge
    49
    Hi for_ro,

    leider komm ich mit dem Timer Interrupt bei deinem Programm nicht weiter..
    Wo genau muss ich dein Programm unterrechen, sodass ich die LEDs gleich hell leuchten?

    Mfg Tryan

  8. #18
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    16.02.2006
    Beiträge
    1.113
    ich denke mir das ungefähr so:
    Code:
    $regfile = "m16DEF.DAT"
    $crystal = 16000000
    Config Porta = Input
    Config Portb = Output
    Config Portc = Output
    Config Portd = Output
    
    Dim Offset As Word                                      'kann auch byte sein, wenn du nicht mehr als 50 Zeichen brauchst
    Dim Zeichen As Byte
    Dim Spalte As Byte
    Dim Werte As Byte
    
    Config Timer0 = Timer , Prescale = 64                   'timer läuft alle 16.000.000/64/256=1000.stel Sekunde über, also etwa jede ms
    On Timer0 Timer0_isr
    Enable Timer0
    Enable Interrupts
    Spalte = 0
    Do
       Zeichen = Asc( "2")
    Loop
    
    Timer0_isr:
       Offset = Zeichen - 49                                'sucht Werte für Zeichen "1" ab EEProm Adresse 1
       Offset = Offset * 5                                  'immer 5 Werte pro Zeichen
       Incr Spalte
       If Spalte = 6 Then
          Spalte = 1
       End If
       Offset = Offset + Spalte
       Portd = 0                                            'zum Verhindern von Geisterbildern
       'werte=lookup(offset,zeichen_data)
       Readeeprom Werte , Offset
       'Print Spalte ; ":" ; Bin(werte)                     'nur zum Testen, ACHTUNG!!! langsam
       Portc = Werte                                        'lädt die Werte
       Portd.spalte = 1                                     'Gibt die Spalte frei
    Return
    
    'zeichen_data:
    $eeprom
    Data &B00000000                                         'Zelle 0 im EEProm nicht benutzen!!!
    Data &B11111111 , &B10111101 , &B10000000 , &B10111111 , &B11111111       '1
    Data &B10111101 , &B10011110 , &B10101110 , &B10110110 , &B10111001       '2
    Musst du mal auf deiner Hardware ausprobieren, im Simulator geht es.

  9. #19
    Benutzer Stammmitglied
    Registriert seit
    16.09.2008
    Ort
    Hamburg
    Beiträge
    49
    Hi for_ro
    erstmal danke für deine ganze mühe!
    Die Ausleuchtung ist schon deutlich besser geworden, jedoch immer noch nicht gleichmäßig.
    Leider erkennt man das auf einem Foto nicht so gut darum habe ich mal Paint an geschmissen um es zu verdeutlichen. (siehe Anhang).

    Aber es macht irgendwo auch sinn das das die LEDS in der mitte dunkler sind als die Außen. Der Strom verteilt sich auf die 7 LEDs und links und recht der "1" nur auf eine bzw. auf zwei Leds. Darum leuchten sie ungleichmäßig...

    Ist diese Problem überhaupt Software technisch zu lösen? Oder muss das per Hardware gelöst werden ( z.b. über Transistoren?)?

    Mfg Tryan
    Miniaturansichten angehängter Grafiken Miniaturansichten angehängter Grafiken dotmatrix_-_1.jpg  

  10. #20
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    16.02.2006
    Beiträge
    1.113
    Wie hast du die ganze Sache denn angeschlossen?
    Schau mal das Jpeg im Anhang, wie ich mir das vorstelle.

    Gruß

    Rolf
    Miniaturansichten angehängter Grafiken Miniaturansichten angehängter Grafiken tryan.jpg  

Seite 2 von 7 ErsteErste 1234 ... LetzteLetzte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

Solar Speicher und Akkus Tests