- fchao-Sinus-Wechselrichter AliExpress         
Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 17

Thema: Arduino Mega Matrix

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    03.10.2014
    Beiträge
    8

    Arduino Mega Matrix

    Anzeige

    Powerstation Test
    Hallo,

    habe von Papa einen Fritzing Creator Kit bekommen mit Arduino Mega. Im Buch ist aber ein Arduino Uno. Nun sitzen wir und wollen die Matrix anschließen. Wo bekommt man die Info, wie man diese, bzw an welche Pins des Bords man die 8x8 Matrix anschließt.

    Danke für die Information

  2. #2
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    13.01.2014
    Beiträge
    454
    Blog-Einträge
    3
    Hier gibts das Programm:
    Matrix

    Im Code steht...
    Code:
    /*
    Matrix
    LED-Matrix zeigt ein Bild
    
    Dieses Beispiel aus dem Fritzing Creator Kit: www.fritzing.org/creator-kit.
    */
    
    // Pinbelegung für Arduino UNO
    int reihenPins[8] = {9,3,2,12,15,11,7,6}; // Anschlüsse der Reihenpins am Arduino
    int spaltenPins[8] = {13,8,17,10,5,16,4,14}; // Anschlüsse der Spaltenpins am Arduino
    
    
    // Pinbelegung für Arduino MEGA
    // int reihenPins[8] = {9,3,2,12,55,11,7,6}; // Anschlüsse der Reihenpins am Arduino
    // int spaltenPins[8] = {13,8,57,10,5,56,4,54}; // Anschlüsse der Spaltenpins am Arduino
    
    ...
    Für den Mega müssen die Kommentarzeichen '//' entfernt werden, und der Uno-Teil wird am besten gelöscht.
    Dein Programm sollte dann so beginnen:

    Code:
    /*
    Matrix
    LED-Matrix zeigt ein Bild
    
    Dieses Beispiel aus dem Fritzing Creator Kit: www.fritzing.org/creator-kit.
    */
    
    // Pinbelegung für Arduino MEGA
    int reihenPins[8] = {9,3,2,12,55,11,7,6}; // Anschlüsse der Reihenpins am Arduino
    int spaltenPins[8] = {13,8,57,10,5,56,4,54}; // Anschlüsse der Spaltenpins am Arduino
    
    ...
    Wie du sieht, bleiben die Reihenpins die gleichen, die Spaltenpins ändern sich zum Teil.
    Z.B. wird Matrix-Spaltenpin 3 auf Arduino-Mega-Pin 57 gelegt (statt 17 beim Uno).
    Also insgesamt 3 Änderungen:
    57 statt 17
    56 statt 16
    54 statt 14

    Viel Spass mit dem Arduino!
    Geändert von Sisor (03.10.2014 um 19:31 Uhr)

  3. #3
    Neuer Benutzer Öfters hier
    Registriert seit
    03.10.2014
    Beiträge
    8

    Arduino Mega und Matrix

    Danke, soweit war ich schon. Das hatte ich auch im Netz gefunden und empfand es teils als hilfreich.

    Ich finde die Pins auf dem Bord nicht. Sollten es die Zahlen neben der Steckleiste sein, dann ist bei mir mit 53 Schluss, 54 und 55 sind dann wahrscheinlich GND aber 56 und 57 ist nicht zu finden.

    Gibt es nicht ein Bild, wo die Steckverbindungen zu sehen sind, oder eine Schaltzeichnung, denn die Pin-Belegung von Uno und Mega scheint doch recht verschieden zu sein. ICH BIN ABSOLUTER NEULING.

    Danke für die weitere Hilfe

    http://pighixxx.com/unov3pdf.pdf
    Das hab ich angesehen und das
    http://arduino.cc/en/Hacking/PinMapping2560

    Was ist zum Beispiel der unterschied zwischen digital Pin und mapped Pin?

  4. #4
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    13.01.2014
    Beiträge
    454
    Blog-Einträge
    3
    Na sowas, die Pins gibts ja gar nicht.
    Naja, dann schreiben wir das Programm halt um, und suchen uns die Pins selbst aus.
    Wir können im Prinzip alle Digital-Pins (0-53) als Digitalausgang benutzen.
    Vorschlag: Statt 57, 56, 54 nehmen wir 47, 46, 44.

    Sähe dann so aus:
    Code:
    /*
    Matrix
    LED-Matrix zeigt ein Bild
    
    Dieses Beispiel aus dem Fritzing Creator Kit: www.fritzing.org/creator-kit.
    */
    
    // Pinbelegung für Arduino MEGA
    int reihenPins[8] = {9,3,2,12,55,11,7,6}; // Anschlüsse der Reihenpins am Arduino
    int spaltenPins[8] = {13,8,47,10,5,46,4,44}; // Anschlüsse der Spaltenpins am Arduino
    
    ...

    Was ist zum Beispiel der unterschied zwischen digital Pin und mapped Pin?
    Mapped bedeutet, dass sich die Arduino-Entwickler eine eigene Pin-Bezeichnung überlegt haben.
    Sie nennen die Pins des Boards z.B. Analog- oder Digitalpins. Das dient der Vereinfachung.
    In Wirklichkeit liegen die Pins an unterschiedlichen Ports und haben andere, kryptische Bezeichnungen.
    Diese kann man im Datenblatt des Microcontrollers finden.
    Unter der Haube wird also z.B. Digitalpin 40 über eine Art Tabelle (Map) in eine Adresse überführt,
    die den Port direkt adressiert. Man kann auch nicht direkt ein Bit eines Ports setzen, sondern nur alle 8.
    Das geht über eine Bitoperation, die im Hintergrund ausgeführt wird, und für den Arduino-Programmierer
    nicht sichtbar sind.
    Für den normalen Arduino-Nutzer reicht daher zu wissen, wieviele Pins sein Arduino hat,
    und welche davon durch sein Programm schon belegt sind.
    Die Grundidee von Arduinos: Dem Programmierer den Low-Level Kram abzunehmen,
    sodass er eigentlich kein Datenblatt des Microcontrollers lesen braucht, und sich stattdessen auf das
    Lösen der eigentlichen Aufgabe konzentrieren kann (z.B. Ansteuerung einer Led-Matrix).
    Geändert von Sisor (03.10.2014 um 22:12 Uhr)

  5. #5
    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)

  6. #6
    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.

  7. #7
    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.

  8. #8
    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.

  9. #9
    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)

  10. #10
    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)

Seite 1 von 2 12 LetzteLetzte

Ä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
  •  

Solar Speicher und Akkus Tests