Tastatur-Matrix mit MEGA 2560 Pin-Belegung

Ich plane folgendes Projekt umzusetzen:

Mir ist nicht klar (und das ist aus der Seite auch nicht deutlich zu erkennen) welche Pins der Steckerleiste in der Schreibmaschine mit denen auf dem Controller zu verbinden sind.

Kann mir jemand helfen und die genauen Anschlüsse (in Zahlen) übermitteln?

Danke

Im englischen Teil des Forum müssen die Beiträge und Diskussionen in englischer Sprache verfasst werden. Deswegen wurde diese Diskussion in den deutschen Teil des Forums verschoben.

mfg ein Moderator.

Doch, das ist klar und eindeutig zu ermitteln! (mit 3 fetten Rufzeichen)

#include <Streaming.h> // die Lib findest du selber ;-)
Print &cout = Serial; // cout Emulation für "Arme"

// cols are input (left connector)
byte get_pin_col(byte col)
{
  return 33 - col;
}

// rows are output (right connector)
byte get_pin_row(byte row)
{
  return 23 - row;
}


void setup()
{
  Serial.begin(9600);
  cout << F("Start: ") << F(__FILE__) << endl;
  cout << F("Linker Stecker  -- arduino Pin")   << endl;
  
  for (byte i = 0; i < 10; i++)
    cout << i << " -- " << get_pin_col(i) << endl;
    
  cout << endl;
  
  cout << F("rechter Stecker  -- arduino Pin")   << endl;
  for (byte i = 0; i < 10; i++)
  {
    switch(i)
    {
      case 4 :  cout << i << " -- " << get_pin_row(i) << " GND" << endl; break;
      case 5 :  cout << i << " -- " << endl; break;
      default : cout << i << " -- " << get_pin_row(i) << endl; break;
    }
  }
}

void loop(){}

Der TypeWriter.ino code auf github fängt dankenswerterweise direkt mit den Funktionen get_pin_col und get_pin_row an.
Wenn man die Pins anders haben möchte, reicht es, diese Funktionen anzupassen.

Und dummer weise wird dort char verwendet.
Eine gruselige Nummer.

1 Like

Danke.
Also, beginnend mit 23 und 33 aufsteigend.

Jetzt sehe ich das auch.

Ich bin neu in der Sache.

Danke.
Das werde ich beim nächsten Mal beherzigen.

Das solltest du nochmal überdenken.

Das sehe ich!
Wie kommst du auf die lustige Idee, dass wir das nicht bemerken würden.

Tipp:
Erfahrungsgemäß gibt es 2 gewichtige Gründe, warum sich hier jemand als Anfänger betitelt.

Der Erste: Er/Sie/Es hält uns für zu doof, um das zu bemerken.

Der Zweite: Der/Die betreffende möchte dass dieser Zustand der Hilflosigkeit und Unselbständigkeit erhalten bleibt. Somit wird aus "Ich bin Anfänger" ein Mantra gebildet und vielfach wiederholt.

Weder Erstes noch Zweites.

Einfach nur so.
Ich bin sehr gewillt vom Anfänger zu einem Profi zu werden.
Das ist mir in vielen Dingen auf anderen Gebieten schon gelungen. Das muss ich mir nicht mehr beweisen.

Ich wünsche einen schönen Tag

P.S.: Der raue Ton erinnert mich an die Debian Mailingliste der Neunziger.

Diesen Hinweis erhält hier von Combie jeder, der eine entsprechende Bemerkung macht.
Wer ihn einfach ignoriert, ist dadurch über den beschworenen Anfänger-Status hinaus.


... oder @combie 's Testprogramm in #3 ausprobieren...

Da wird subtrahiert, also wohl absteigend:

┌────────┐
│33    23│
│32    22│
│31    21│
│30    20│
│29    19│
│28    18│
│27    17│
│26    16│
│25    15│
│24    14│
└────────┘

Ich könnte mir eine bessere Pinwahl vorstellen, um z. B. SCL/SDA freizuhalten:

┌────────┐
│41    31│
│40    30│
│39    29│
│38    28│
│37    27│
│36    26│
│35    25│
│34    24│
│33    23│
│32    22│
└────────┘

oder

┌────────┐
│41    40│
│39    38│
│37    36│
│35    34│
│33    32│
│31    30│
│29    28│
│27    26│
│25    24│
│23    22│
└────────┘

Äh, ja. Schreibfehler.

Danke für die wirkliche Hilfe.

Deine Vorschläge schau ich mir an. Das muss ich erst noch etwas für mich vertiefen. :wink:

Okay. Diese Überheblichkeit kenne ich aus Erfahrung in anderen Gebieten.
Das hilft niemanden ist einfach nur unsympathisch.

Die Pins 14 bis 21 sind mit serieller Kommunikation belegt, weshalb ich sie freihalten würde. Beispielsweise gibt es I²C-Displays, die an SCL und SCA angeschlossen werden möchten.

Für den mittleren Vorschlag so (ungetestet):

// cols are input (left connector)
byte get_pin_col(byte col)
{
  return 41 - col;
}

// rows are output (right connector)
byte get_pin_row(byte row)
{
  return 31 - row;
}

Für den unteren Vorschlag so (ungetestet):

// cols are input (left connector)
byte get_pin_col(byte col)
{
  return 41 - col * 2;
}

// rows are output (right connector)
byte get_pin_row(byte row)
{
  return 40 - row * 2;
}
1 Like

Danke.
Interessant. Jedenfalls für spätere Projekte.
Dieser Controller wird nur diese eine Aufgabe haben.

Ich habe jetzt schon einige interessante Projekte gesichtet. Auch welche, die das Display für Status etc. verbaut haben.
Schauen wir mal, was mich da noch so interessiert.

Ganz normal, ich verzeihe dir!

Auf Kompetenzstufe 1 ist es eben noch nicht möglich Arroganz von Kompetenz zu unterscheiden.


Das ist übrigens keine Erklärung!
Sie macht bestenfalls klar, dass diese aus einem antrainiertem unbewusstem Verhalten/Methode entspringt. Reflektiert, und bewusst würde sich doch eigentlich kein normaler Mensch freiwillig selber erniedrigen.


Ich bin neu in der Sache.

Hat eine emotionale Zielsetzung.
Es soll Mitleid erregt werden.
So zur Hilfe angeregt werden.

Üblich ist auch, wenn diese emotionale Zielsetzung kritisiert wird, eine weit ausufernde Retourkutsche.
Was in etwa dem historischen "töten des Boten bei schlechten Nachrichten" entspricht.
Es wird nicht das eigene Verhalten analysiert, sondern das Gegenüber aggressiv angegangen.

Alles total Menschlich, total normal, allerdings fürchterlich nervig und vom eigentlich technischen Thema ablenkend.

Hier scheint die Sonne.

1 Like

Bitte gerne :slightly_smiling_face:

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.