Hallo liebe Roboter Gemeinde!

Ich hab mir jetzt einen 3x3x3 LED Cube gebaut und die einzelnen LED`s per Matrix verschaltet. Es sind also alle Kathoden in der wagerechten und alle Anoden in der Senkrechten miteinerander verbunden. Durch diese anordnung brauche ich für 9 LED`s nur 6 Ports am µC und kann jede LED einzeln ansteuertn.

Mein eigentliches Problem ist aber die Programmierung. Ich habe mir jetzt 2 Subroutinen geschrieben jeweils für LED_AN und LED_AUS. Die Subroutinen werden mit 3 Parametetn aufgerufen in Form von der X, Y und Z Koordinate. Durch dieses vorgehen wird das Programm aber riesig werden, da ich ja jeden Fall respektieren muss. Ich poste mal kurz meinen Ansatz des Codes für die Sub LED_AN den ich noch im Kopf habe (Bin leider grade auf der Arbeit):

Code:
Sub LED_AN(X as INTEGER, Y as INTEGER, Z as INTEGER)
IF X=1 THEN
  IF Y= 1 THEN

    IF Z=1 THEN
      PORTA.0 = 1
      PORTB.0 = 1
    END IF

    IF Z=2 THEN
      PORTA.1 = 1
      PORTB.1 = 1
    END IF

    IF Z=3 THEN
      PORTA.2 = 1
      PORTB.2 = 1
    END IF

  END IF

  IF Y= 2 THEN

    IF Z=1 THEN
      PORTC.0 = 1
      PORTD.0 = 1
    END IF

    IF Z=2 THEN
      PORTC.1 = 1
      PORTD.1 = 1
    END IF

    IF Z=3 THEN
      PORTC.2 = 1
      PORTD.2 = 1
    END IF

  END IF

END IF
END SUB
Die Portnamen und Nummern sind rein willkürlich gewählt da ich die "echten" nicht im Kopf habe.

Es muss doch eine einfacherer Möglichkeit geben als die ganzen möglichen Kombinationen mit If abfragen ineinander zu verschachteln oder? Hat da eventuell jemand einen Tipp für mich?


Edit: Mir kommt grade noch eine Idee: Gibt es sowas wie 3 Dimensionale Arrays in Bascom? Das wäre mit Sicherheit eine der einfacheren Lösungen!