- 3D-Druck Einstieg und Tipps         
Ergebnis 1 bis 10 von 17

Thema: Arduino Mega Matrix

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    03.10.2014
    Beiträge
    8
    Danke, das hab ich gemacht.

    Nun muß ich nur noch wissen, was die Zahlen bedeuten an der Matrix

    Da steht z. b. 16 15 11 6 10 4 3 13 oben und an der Seite 9 14 8 12 1 7 2 5

    Woher weiß ich, welche Matrix-Zahl an welche Arduino Zahl kommt, also damit verbunden wird?

    Und wo gibt es eine Legende, die die kryptischen Bezeichnungen auf der Pin-Map mir deutet?

    solche Sache, wie a - analog d-digital, pwm - power with modulation, tx und rx krieg ich ja gedeutet, aber OCA4 (sieht aus wie ne Adresse) und PE1 nicht.
    Geändert von oel (03.10.2014 um 22:37 Uhr)

  2. #2
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    13.01.2014
    Beiträge
    454
    Blog-Einträge
    3
    Ja, beim Anschluss kann man sich schnell vertun...
    Versuch mal folgende Belegung:


    o o o o o o o o
    22 24 26 28 30 32 34 36



    38 40 42 44 46 48 50 52
    o o o o o o o o
    __

    Hier das auf die neue Belegung abgestimmte Programm:
    Code:
    /*
    Matrix
    LED-Matrix zeigt ein Bild
    
    Dieses Beispiel aus dem Fritzing Creator Kit: www.fritzing.org/creator-kit.
    */
    
    // Belegung der Matrix (Z=Zeile / S=Spalte)
    // obere Pins
    // S1 Z5 Z3 S4 Z8 S2 Z2 Z1
    // untere Pins
    // S3 S6 Z4 S8 Z6 Z7 S7 S5
    
    // Anschluss Matrix an Arduino Mega
    // obere Pins
    // 22 24 26 28 30 32 34 36
    // untere Pins
    // 38 40 42 44 46 48 50 52
    
    // Pinbelegung für Arduino MEGA
    int reihenPins[8]  = {36,34,26,42,24,46,48,30};
    int spaltenPins[8] = {22,32,38,28,52,40,50,44};
    
    
    int image[8][8]={ // Bild, das auf der Matrix gezeigt wird. 1 = LED an, 0 = LED aus
    
    {0,1,0,0,0,0,1,0},
    {1,1,1,0,0,1,1,1},
    {0,1,0,0,0,0,1,0},
    {0,0,0,1,1,0,0,0},
    {0,0,0,1,1,0,0,0},
    {1,0,0,0,0,0,0,1},
    {0,1,1,1,1,1,1,0},
    {0,0,1,1,1,1,0,0}
    
    };
    
    void setup(){
      for (int i=0; i<8; i++){ // Alle Pins werden als OUTPUT declariert
        pinMode(reihenPins[i],OUTPUT);
        pinMode(spaltenPins[i],OUTPUT);
      }
    }
    
    void loop(){
      for (int y=0; y<8; y++){                  // zeilenweise werden
        for (int x=0; x<8; x++){                // von links nach rechts alle Einträge des Arrays geprüft
          if (image[x][y]==1){                  // ist der Eintrag = 1
            digitalWrite(spaltenPins[x],HIGH);  // wird der Spaltenpin eingeschalten
          } else {                              // sonst
            digitalWrite(spaltenPins[x],LOW);   // abgeschalten
          }
        }
        digitalWrite(reihenPins[y],LOW); // nun wird der Reihenpin auf LOW geschalten (da es die Kathode der LED betrifft bedeutet LOW eingeschalten: LOW = GND)
        delayMicroseconds(100); // das Programm hällt 100 Mikrosekunden an
        digitalWrite(reihenPins[y],HIGH); // danach wird der Reihenpin wieder auf HIGH (in diesem Fall also abge-) schalten
      }
    }
    Und wo gibt es eine Legende, die die kryptischen Bezeichnungen auf der Pin-Map mir deutet?
    Im Datenblatt des ATMega2560-Microcontrollers von Atmel.
    Aber wie schon geschrieben, dieses Wissen braucht man zum Arduino-Programmieren eigentlich nicht.

  3. #3
    Neuer Benutzer Öfters hier
    Registriert seit
    03.10.2014
    Beiträge
    8
    Danke, hab alles umgesetzt, aber er tuts noch nicht. Also das Muster vom Image-Befehl wird nicht angezeigt.

    Sag mir doch einfach mal, wie ich gezielt die Lampe A1 anspreche. Und dann muß dass doch analog für die anderen Zellen ebenso gelten, weil ich Zeile und Spalte hab ....

    Ich hab jetzt kapiert, die Zahlen bei int ReihenPins sind die Anschlüsse auf dem Arduino Board.


    Jetzt leuchten viele Zellen, außer A1, A8, A3, A4 und andere. Manche leuchten sehr stark, manche Glimmen nur. Wie das? Liegen unterschiedliche Spannungen auf den Ausgängen? Oder ist die Matrix kaputt?

    Wenn ich ein zweites Delay (200) aktiviere, gibt es ein Wandern der nicht vollständigen Zeilen.

  4. #4
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    13.01.2014
    Beiträge
    454
    Blog-Einträge
    3
    Jetzt leuchten viele Zellen, außer A1, A8, A3, A4 und andere. Manche leuchten sehr stark, manche Glimmen nur. Wie das? Liegen unterschiedliche Spannungen auf den Ausgängen? Oder ist die Matrix kaputt?
    Nein, falsch angeschlossen.
    Ich hab jetzt kapiert, die Zahlen bei int ReihenPins sind die Anschlüsse auf dem Arduino Board.
    Ja, aber nicht in der Reihenfolge.

    Leg die Matrix mal auf den Rücken, sodass du die Pins siehst. Du siehst jetzt, dass die Ecken der Matrix etwas erhöht sind.
    Aber da ist noch eine Erhöhung auf der Mitte einer Seite. Dreh die Matrix so, dass diese Erhöhung unten ist.
    Jetzt hast du die Matrix so liegen, wie sie auf dem Belegungs-Schema oben zu sehen ist.
    Mein Beispiel ist so gewählt, dass du das Matrix-Pin oben links mit Arduino-Pin 22 verbindest, das daneben mit 24 usw.

  5. #5
    Neuer Benutzer Öfters hier
    Registriert seit
    03.10.2014
    Beiträge
    8
    Zitat Zitat von Sisor Beitrag anzeigen
    Aber da ist noch eine Erhöhung auf der Mitte einer Seite.
    Meinst Du mit Erhöhung den Gnubbel links obere Hälfte Mitte auf der Linie, der einen Lötpunkt verdeckt im Bild?

    http://www.bilder-hochladen.net/files/kiyp-j-1f0e.jpg

    Wenn ich, wegen meines Rumfummelns alle Bits auf 1 setzt, bleibt alles dunkel. Warum das?

    Warum muß ich mich alle 3 Minuten hier im Forum neu einloggen?

    So ich hab die Verbindungen jetzt mir total allein rausklamüsert:


    MEGA PIN 36 34 32 30 28 26 24 22
    BredbrdNr 12 13 14 15 16 17 18 19
    Matrix Pin A B C D E F G H Oben
    legt dod S8 S7 Z2 S1 Z4 S6 S4 Z1
    A Zeile 1 DH H3 H4 GH H6 FH BH AH
    A Zeile 2 DC C3 C4 GC C6 FC BC AC
    A Zeile 3 D8 83 84 G8 86 F8 B8 A8
    A Zeile 4 DE E3 E4 GE E6 FE BE AE
    A Zeile 5 D1 13 14 G1 16 F1 B1 A1
    A Zeile 6 D7 73 74 G7 76 F7 B7 A7
    A Zeile 7 D2 23 24 G2 26 F2 B2 A2
    A Zeile 8 D5 53 54 G5 56 F5 B5 A5
    legt dod Z5 Z7 S2 S3 Z8 S5 Z6 Z3
    Matrix Pin 1 2 3 4 5 6 7 8 Unten
    BredbrdNr 12 13 14 15 16 17 18 19
    MEGA PIN 52 50 48 46 44 42 40 38

    Danach geht es so: Wenn ich Zelle A1 ansprechen will muß ich den Strom über oben D und oben H leiten. Matrix Pin 1 legt dod Z5 (Zeile 5)

    Was ich noch nicht verstehe ist, wenn ich im Image-Befehl alle Bits auf 0 setze, warum dann trotzdem in Zeile 3 alle Dioden außer H3 aufleuchten im bestimmten Rhythmus?

    Es stört, daß er zugleich mit Spalte A auch die Zelle E3 einschaltet. Wie kann das sein?
    Geändert von oel (04.10.2014 um 11:34 Uhr)

  6. #6
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    13.01.2014
    Beiträge
    454
    Blog-Einträge
    3
    Kein Wunder, dass es nicht klappt, meine Matrix ist eine andere. Die hat nur einen 'Gnubbel'. Hat anscheinend auch eine andere Verschaltung.

    Dann fangen wir halt ganz von vorn an und bestimmen die Pinbelegung selbst.
    Dazu folgendes Programm benutzen:
    Code:
    //------------------------------------------------------------------------------
    //                           Matrix Inspektor
    // (c) SISOR 10/2014
    //------------------------------------------------------------------------------
    /* Mit diesem Programm lässt sich die PinBelegung einer LED-Matrix bestimmen
       Vorgehensweise:
       -Zuerst eine Bennenung der MatrixPins festlegen
         Tipp: Orientierung der Matrix mit Edding markieren 
               (auf der Rückseite oben links einen Punkt malen) 
       -ArduinoPin 22 und 24 mit jeweils einem Pin der Matrix verbinden
       -Blinkt keine LED? -Andere MatrixPins wählen, solange versuchen, 
          bis eine Led blinkt
       -Blinkt nun eine LED: 
         -Das an ArduinoPin 22 angeschlossene MatrixPin ein ReihenPin
         -Das an ArduinoPin 24 angeschlossene MatrixPin ein SpaltenPin
       -Jetzt kann ein Belegungsplan erstellt und durch weitere Versuche
          ergänzt werden:
          -z.B.: MatrixPin 1: Reihe  6
                 MatrixPin 2: Spalte 2
                 MatrixPin 3: Spalte 1
                ...
       -Nun sind wir fast fertig und können den Belegungsplan erweitern,
          indem wir jetzt festlegen, wo wir die einzelnen MatrixPins
          am Arduino anschließen:
          -z.B.: MatrixPin 1: Reihe  6  ArduinoPin 22
                 MatrixPin 2: Spalte 2  ArduinoPin 24
                 MatrixPin 3: Spalte 1  ArduinoPin 26
                ...
       -Schließlich können wir die PinBelegung ins Fritzing-Programm übertragen:
                               1  2  3  4  5  6  7  8
       int spaltenPins[8]  = {26,24, ...             };
       int reihenPins[8]   = { ...         , 22, ... };  
       ...
    */    
    
    void setup(){
      pinMode(22, OUTPUT);
      pinMode(24, OUTPUT);
      digitalWrite(22, HIGH);
    }
    
    void loop(){
      digitalWrite(24, LOW); 
      delayMicroseconds(200); 
      digitalWrite(24, HIGH);
      delay(400); 
    }
    Geändert von Sisor (04.10.2014 um 11:33 Uhr)

  7. #7
    Neuer Benutzer Öfters hier
    Registriert seit
    03.10.2014
    Beiträge
    8
    Das hab ich alles schon durch (sieh Tabelle). Die Spaltenansprache klappt, bloß das Flackern in Zeile 3 weist auf irgendeinen elektrischen Kurzschluss hin....

    Was kann das sein?

    ich nehme übrigens dies Programm, und Fummel zum Abtasten in der Image-Matrix rum

    int spaltenPins [8] = {30,48,46,24,42,26,34,36} ; // also S1, S2 etc
    int reihenPins [8] = {22,32,38,28,52,40,50,44} ; // also Z1 etc
    int image[8][8]= {
    {0,0,0,0,0,0,0,0},
    {1,1,1,1,1,1,1,1},
    {0,0,0,0,0,0,0,0},
    {0,0,0,0,0,0,0,0},
    {0,0,0,0,0,0,0,0},
    {0,0,0,0,0,0,0,0},
    {0,0,0,0,0,0,0,0},
    {0,0,0,0,0,0,0,0},

    };
    void setup()
    {
    for (int i=0; i<8; i++)
    {
    pinMode (spaltenPins[i],OUTPUT);
    pinMode (reihenPins[i], OUTPUT);
    digitalWrite(spaltenPins[i],HIGH);
    }
    }

    void loop()
    {
    for (int x=0; x<8; x++)
    {
    for (int y=0; y<8; y++)
    {
    if (image[x][y]==1)
    {
    digitalWrite(reihenPins[y],HIGH);
    }
    else
    {
    digitalWrite(reihenPins[y],LOW);
    }
    }
    digitalWrite (spaltenPins[x],LOW);
    delayMicroseconds(20);
    delay (200);
    digitalWrite(spaltenPins[x],HIGH);
    }
    }

Ähnliche Themen

  1. 8X8 Matrix mit Arduino zum duchlaufen bringen
    Von PatrickHH im Forum Software, Algorithmen und KI
    Antworten: 4
    Letzter Beitrag: 12.07.2014, 07:36
  2. Arduino Mega upload Problem
    Von Artemis_Simetra im Forum Arduino -Plattform
    Antworten: 0
    Letzter Beitrag: 11.02.2014, 20:33
  3. Arduino UNO, MEGA und Bascom
    Von Ripper121 im Forum Arduino -Plattform
    Antworten: 1
    Letzter Beitrag: 27.03.2013, 16:57
  4. LED Matrix mit Arduino ansteuern?
    Von robots4-ever im Forum Elektronik
    Antworten: 2
    Letzter Beitrag: 01.03.2012, 07:56
  5. 2 x HDMM01 auf Arduino Mega
    Von arnoa im Forum Sensoren / Sensorik
    Antworten: 2
    Letzter Beitrag: 08.02.2012, 16:19

Stichworte

Berechtigungen

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

fchao-Sinus-Wechselrichter AliExpress