- Akku Tests und Balkonkraftwerk Speicher         
Seite 2 von 3 ErsteErste 123 LetzteLetzte
Ergebnis 11 bis 20 von 23

Thema: Mutliplxing Code kürzen

  1. #11
    Neuer Benutzer Öfters hier
    Registriert seit
    13.01.2008
    Beiträge
    16
    Anzeige

    Praxistest und DIY Projekte
    ich habe doch aber 9 spalten - also 9 zustände. der eine bezieht sich ja auch auf einen andern pin.

    die ebenen sind GND leitungen - wenn ich sie auf input (high-z) stelle, ist die ebene aus - wenn ich sie auf output - 0v - stelle, is sie an.
    um sie wieder auszuschalten, muss ich sie auf input stellen.
    und weil ich ja immer nur 1 led pro durchlauf anhaben will, muss ich sie ja auch wieder aus machen!

  2. #12
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    16.02.2006
    Beiträge
    1.113
    Was kann ich jetzt noch machen?
    Ich würde es so machen:

    Code:
    $regfile = "m32def.dat"
    $framesize = 32
    $swstack = 32
    $hwstack = 32
    $crystal = 1600000
    $baud = 9600
    
    Config Porta = Input
    Config Portb = Output
    Config Portc = Output
    
    Dim Col As Byte
    Dim Row As Byte
    Dim Time as Byte
    
    Porta=0
    Portb=0
    Portc=0
    Time=1
    Do
        For Row = 0 To 2
           DDRA.Row = 1
           For Col = 0 To 7
              Portc.Col = 1
              Waitms Time
              Portc.Col = 0
           Next Col
           Portb.7 = 1
           Waitms Time
           Portb.7 = 0
           DDRA.Row=0
        Next Row
    Loop
    Annahme ist, dass immer nur eine LED an sein soll, nicht mehrere gleichzeitig.
    Die LEDs sind praktisch zwischen den PINs angeschlossen, d.h. 5V an Portc (und Portb.7), dann die LED, dann ein Vorwiderstand, dann in Porta.
    An jedem Pin von Portc sind 3 LEDs angeschlossen, an jedem Vorwiderstand 9.

    Gruß

    Rolf

  3. #13
    Neuer Benutzer Öfters hier
    Registriert seit
    13.01.2008
    Beiträge
    16
    Ich brauch nochmal eure Hilfe, weil ich bekomms einfach nicht gebacken...:

    Mein Code lässt ja jetzt jede LED einmal kurz aufleuchten und das ganze geschieht so schnell, dass das träge Auge es als ein Aufleuchten aller LEDs wahrnimmt.

    Wie muss ich meinen Code nun erweitern, dass ein paar Animationen für meine 3x3x3 Matrix schreieben kann?

    Ich habe zwar schon ein paar gemacht:
    http://youtube.com/watch?v=zqiS05Tdc5A

    jedoch werden da noch alle LEDs einzeln angesprochen und bei vielen Animationen wäre das schon ein Haufen Programmcode.
    Und ich glaube kaum, dass bei den LED Matritzen, die man noch so auf YouTube findet, dass bei den schönen Animationen alle LEDs einzeln angeschaltet werden, um die Modi abzulaufen.

    Könnt ihr mir da vllt helfen?

  4. #14
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    26.05.2007
    Beiträge
    594
    Wie gesagt: Den Zustand aller LEDs mit einer 32-Bit Variable festhalten und dann viele dieser Variablen nutzen.
    Oder eine weitere Ebene der Abstraktion schaffen und das Shadow-RAM direkt manipulieren. Das wäre z.B. wie wenn man in Bascom auf nem Grafikdisplay nen Kreis per Mittelpunkt und Radius zeichnet. Das eigentliche Zeichnen macht der AVR mit ner Routine für dich.

  5. #15
    Neuer Benutzer Öfters hier
    Registriert seit
    13.01.2008
    Beiträge
    16
    wie sieht eine 32 bit variable aus, und wie sähe dann eine animation z.b. alle leds nacheinacner sichbar anschalten, so dass man dann erst ein standbild hat?

  6. #16
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    26.05.2007
    Beiträge
    594
    na ne 32Bit Variable is z.B. ne LONG.
    Die hat anstelle von 8 Bit (Byte) einfach 32 Bit (also 4x Word).
    Somit kann sie den gesamten Inhalt des Würfels festhalten.

    Das Programm wäre so aufgebaut:
    eine Timer-Interrupt-Routine geht alle paar Millisekunden hin und liest den Inhalt der nächsten Spalte ein und stellt ihn in dieser da, dann macht er das mit der übernächsten usw...
    Wenn alle Spalten geschrieben sind macht er den Gesamtvorgang nochmal so 100x oder so, je nachdem wie lange das Bild stehen soll.
    Dann wird einen neue Variable mit neuen Spalteninhalten geladen, wieder 100x angezeigt und so weiter und sofort.
    eine LONG Variable ist laut Handbuch:
    Long (four bytes). Longs are stored as signed 32-bit binary numbers ranging in value from -2147483648 to 2147483647.
    Aber dich interessiert die binäre Abbildung, also das Bitmuster.

  7. #17
    Neuer Benutzer Öfters hier
    Registriert seit
    13.01.2008
    Beiträge
    16
    gut - nur hab ich noch keine ahnung von timer und von interrupt ^^
    und wenn ich den inhalt der nähcsten spalte in dieser da stelle, is das bild doch verschoben oder?
    und würde ein bild dann so ausehen:

    bild = 001011001001101001001101001

    wenn ja, wie sage ich dann dem Code, dass er daraus immer durchschaltet? dann müsste ich die code ja auseinander fuseln?!

  8. #18
    Neuer Benutzer Öfters hier
    Registriert seit
    13.01.2008
    Beiträge
    16
    kannst du vllt mal ein beispiel code schnipsel schreiben?
    wär echt super

  9. #19
    Neuer Benutzer Öfters hier
    Registriert seit
    13.01.2008
    Beiträge
    16
    nicht?
    ich verstehe nicht, wie das gehen soll?!

  10. #20
    Neuer Benutzer Öfters hier
    Registriert seit
    13.01.2008
    Beiträge
    16
    habs hinbekommen!

    Code:
    $regfile = "m32def.dat"
    $framesize = 32
    $swstack = 32
    $hwstack = 32
    $crystal = 1600000
    $baud = 9600
    
    Config Portc = Output
    Config Portb = Output
    
    Dim Col As Byte
    Dim Row As Byte
    Dim Count As Byte
    Dim Bild As Long
    Bild = &B00000100100100010010010001001001
    Count = 0
    Do
    
      For Col = 0 To 8
    
        Config Porta = Input
        Portc = 0
        Portb = 0
        Portc.col = 1
        If Col = 8 Then
          Portb.7 = 1
        End If
        For Row = 0 To 2
           Config Porta = Input
           Ddra.row = Bild.count
           waitms 7
           Incr Count
        Next
    
      Next
    Count = 0
    Loop
    jetzt muss ich das nur noch als funktion definieren - also den mutliplexing teil.

    mach ich das mit:
    decalare function multiplexing() as long

    fuction multiplexing()
    'code
    end function

    und dann mit function() aufrufen?

    finde hier nix brauchbares!

Seite 2 von 3 ErsteErste 123 LetzteLetzte

Berechtigungen

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

12V Akku bauen