• Willkommen im Geoclub - dem größten deutschsprachigen Geocaching-Forum. Registriere dich kostenlos, um alle Inhalte zu sehen und neue Beiträge zu erstellen.

Telefon mit 4x4 Matrix

Haenigser

Geocacher
Hallo zusammen!

Ich habe ein paar alte Tastentelefone mit 4x4 Ziffernblock (Deutsche Fernsprecher GmbH, Telefon 01-093) bekommen und würde diese gern für einen Cache nutzen.

Da ich in Sachen µC ein absoluter Neuling bin, habe ich versucht die hierfür nötigen Infos im Netz zu finden. Auf
http://mikrocontroller.heldt.eu/index.php?page=atmega8-zahlenschloss
bin ich auf den Bascom Code und den Schaltplan für ein Atmega8 Zahlenschloss gestoßen.

Meine Frage ist jetzt: Kann ich diese Schaltung mit der Tastatur des Telefons umsetzen oder benötigt man dafür eine andere Tastatur?
Außerdem würde ich die "Telefonstation" gern mit einem 9V-Block-Anschluss versehen, um sie möglichst wartungsfrei zu halten.

Für Hilfe jeder Art bin ich sehr dankbar. :)

Viele Grüße

Florian
 
A

Anonymous

Guest
Jo, ich würde sagen das funktionirt beides. Müsste man mal das Telefon aufmachen
 

peter51d

Geocacher
Das wirst du erst sehen, wenn du das gute Stück aufgeschraubt hast, ist ja schnell gemacht.
Ich habe hier ein 0164, da geht es, da die Tastatur tatsächlich eine Matrix ist.
Ein anderes, das Typenschild lässt sich leider nicht mehr lesen, geht nicht, da hier keine Matrix verbaut war.
War so ein seltsames Zwischending. Zwar mit Tastatur, aber für IWV. Hatte aber auch keine 4x4 sondern nur eine 3x4 Tastatur.

Spannungsversorgung ist kein Problem. Passende Anschlussklemme und ein 7805 sollten reichen.
 
OP
H

Haenigser

Geocacher
Hier ist das Innenleben eines der Telefone. Ich hoffe ihr könnt damit etwas anfangen.
Bei der Tastatur kann man eine Matrix erkennen, oder?

Sollten die Bilder zu klein sein, kann ich sie auch größer posten.

img_2262.jpg


img_2265.jpg


img_2266.jpg


img_2267.jpg
 

Finckenbande

Geocacher
Hallo, ist ganz klar eine 4x4 Matrix, Die kann man an einen Micro Controller anklemmen und Die wird nativ in Bascom unterstützt.
Wenn du zu viele von den Dingern hast, nur her ;-)
 

Bussard

Geocacher
englishfire schrieb:
Woran genau erkenne ich die 4x4 Matrix auf dem Foto?
Ein "normaler" Taster hat je 2 Drähte, macht bei 16 Tasten 32 Leitungen. Bei dieser 4x4 (Spalten x Zeilen) Tastatur braucht man nur 8 Leitungen, dafür aber Auswerteelektronik. In Bascom ganz einfach mit dem Befehl GETKBD auszuwerten. In der dortigen Hilfe ist das mit Anschluß- und Programmbeispiel dargestellt.
Zum Foto: die "Kämme" werden bei Tastendruck gebrückt, entsprechen den Kreisen der linken Skizze.
Gruß Bussard
 

Anhänge

  • Tastaturmatrix.jpg
    Tastaturmatrix.jpg
    21,2 KB · Aufrufe: 2.388

upigors

Geowizard
also ich hab die oben verlinkte schaltung einfach aus interesse eben mal aufgebaut und getestet, irgendwo ist da noch der wurm drin. die abfrage der taster ist ....hmmm verzögert d.h. man muss schon > 2 sek drücken um die bestätigung zu bekommen.
ausserdem finde ich nicht die korrekte zuordnung der matrix zum controller.
die matrix ist zwar mit 1-8 beschriftet aber von 2 stk 4x4 matrixen die ich hier liegen habe haben beide schon eine unterschiedlichen anordnung der kontakte.
hab jetzt den quellcode noch nicht "durchgelesen" aber einfach controller schreiben und glücklich sein scheint (jedenfalls bei mir) nicht zu funktionieren.
hat jemand die schon nachgebaut und andere erfahrungen gemacht?
 
OP
H

Haenigser

Geocacher
Ich habe die Tastatur im Moment leider nicht vor mir liegen, aber ich glaube, wenn man sich an dem Foto orientiert, ergibt sich folgende Belegung:

1 - Zeile1 (PB4)
2 - Zeile2 (PB5)
3 - Spalte1 (PB0)
4 - Spalte2 (PB1)
5 - Spalte3 (PB2)
6 - Spalte4 (PB3)
7 - Zeile4 (PB7)
8 - Zeile3 (PB6)

Müssen Tastatur und µC dann wie in Klammern angegeben verbunden werden?
 

Bussard

Geocacher
"Na denn mal Butter zu die Fische" :/ , wie man in manchen Gegenden so sagt.

Habe im Herbst mal eine Matrixtastatur von dx.com bestellt und in i-net nach Beispielen gesucht. Im Quelltext sind eine Anschlußvariante und der für 3 Matrixanordnungen gültige Tasten-String angegeben (bei der 12- Tasten-Variante von dx wird einfach die letzte Spalte ignoriert/weggelassen).
Auch die Ansteuerports sind frei wählbar, es müssen aber für die BASCOM-Routine alle Tastenanschlüsse an einem Port liegen. Aufpassen bei PC6 (Reset), den nicht verwenden!
Entscheidend für die Tastenzuordnung ist der String "Asciichars".
Um es leichter zu haben, habe ich zu Testzwecken den Tastencode auf ein LCD-Display ausgegeben.

Gruß Bussard


'######################################################################################
'ATMEGA8 Universalplatine von Bussard
'Ansteuerung LCD-Display 2x16 Zeichen an Port C (Pin 0 bis 5, Pin 6= /Reset frei)
'Keyboard an Port D
'
' Quellen: mikrokontroller.net, halvar.at
' erstellt am : 12.10.2012
' letzte Änderung: 17.10.2012
'
'##### Init ###################################################

$regfile = "m48def.dat"
$crystal = 1000000 'Werkseinstellung

'LCD am Port C
Config Lcd = 16 * 2 '2 x 16 Zeichen Display (1602A weiß auf blau)
Config Lcdpin = Pin , Db4 = Portc.3 , Db5 = Portc.2 , Db6 = Portc.1 , Db7 = Portc.0 , E = Portc.4 , Rs = Portc.5
Waitms 200
Cls
Cursor Off
'oder auch Cursor On, Blink


'Keyboard 0..9, *, #
Dim Keycode As Byte
Dim Asciichars As String * 16

'dx.com #117718 (3x4 Matrix Pin1 an PD6, Pin7 an PD0), (4x4 Matrix #117720)
Asciichars = "147*2580369#ABCD"
'Asciichars = "123 456 789 *0# " 'Conrad.de Matrix nach Halvar.at

Config Kbd = Portd , Debounce = 20 , Delay = 10 ' Tastatur an Port D0 bis D6 angeschlossen


'Variablen
Dim Bt As Byte
Dim S As String * 2
Dim Taste As String * 2


'##### Main ##################################################


Cls 'loesche das LCD Display
Locate 1 , 1 'Cursor auf 1 Zeile, 1 Spalte
Lcd "Hallo Bussard_BB" 'String auf Display anzeigen

Waitms 500

Do
Keycode = Getkbd()
  If Keycode <> 16 Then ' 16 = KEINE Taste gedrückt
  Keycode = Keycode + 1
  Locate 2 , 1
  Lcd " "
  Locate 2 , 1
  Lcd "Code " ; Keycode
  Locate 2 , 9
  Taste = Mid(asciichars , Keycode , 1)

  'Lcd "Taste" ; Chr(34) ; Mid(asciichars , Keycode , 1) ; Chr(34)
  Lcd "Taste" ; Chr(34) ; Taste ; Chr(34)
  Waitms 200
  End If

Loop

'##########################################################################


End
 

Anhänge

  • Tastatur_LCD_Mega48_Klein.jpg
    Tastatur_LCD_Mega48_Klein.jpg
    60,9 KB · Aufrufe: 2.032
OP
H

Haenigser

Geocacher
Irgendetwas scheint an den Tastaturen der analogen Telefone anders zu sein. Ich habe jetzt diverse Schaltungen bzw. Programmcodes ausprobiert und nie das gewünschte Ergebnis erhalten.

Zum Beispiel der einfache Code aus der AVR Hilfe:
Wenn keine Taste gedrückt wird, soll hier 16 ausgegeben werden, bei Tastendruck ein entsprechend anderer Wert. Ich bekomme allerdings nur den Wert 15 angezeigt - egal ob Taste gedrückt oder nicht (und keine Taste klemmt ;) ).

Ich verwende zum Programmieren Bascom-AVR, den "mySmartUSB light", zusammen mit dem Pollin-Board + Adapter fürs Steckbrett. Den Code bzw. die Schaltung aus der Bascom Hilfe habe ich mit einem ATmega88 verwendet. Liegt hier vielleicht der Fehler? Einen ATmega48 habe ich momentan nicht hier.
 

stonewood

Geowizard
Hast Du mal mit nem Multimeter nachgemessen? Am besten natürlich nicht am Atmel, nicht daß der irgendwas stört. Wenn keine Taste gedrückt ist sollte nichts verbunden sein, also alles hochohmig. Wenn eine Taste gedrückt ist sollten 2 Drähte niedrigohmig sein (also z.b. PB0 - PB4 in der Schaltung von Bussard unten). Eventuell funktioniert Deine Matrix ja nicht?

Übrigens müssen die 'Kämme' auf die die Tasten drücken sauber sein, wenn da Schmutz drauf ist kann das als ein Tastendruck gewertet werden.

Der Code von Bussard ist für einen atmega48 ($regfile = "m48def.dat"), das mußt Du natürlich je nach Prozessor ändern, außerdem dann eventuell die Pins die der mega48 hat und Deiner nicht.
 

Bussard

Geocacher
Haenigser schrieb:
Ich bekomme allerdings nur den Wert 15 angezeigt - egal ob Taste gedrückt oder nicht
Hast Du ein Display angeschlossen oder wie bekommst Du den Code angezeigt?

Wenn Du keine Tastatur angeschlossen hast, muß jedenfalls 16 kommen. Es sein denn, Du spielst das Ganze nur mit dem Bascom-Simulator durch, dann kommt 15 (siehe http://halvar.at/elektronik/kleiner_bascom_avr_kurs/3x4_tastenfeld/ ).
Ob Atmega48 oder 88 oder 8 oder 168, spielt hier keine Rolle, ist vornehmlich die Speichergröße, welche die Typen unterscheidet. Zum Programmieren muß, wie stonewood schreibt, eben der passende Chip in den Einstellungen von Bascom oder gleich hier im Basic-File angegeben sein.

Gruß Bussard
 
OP
H

Haenigser

Geocacher
Bussard schrieb:
Wenn Du keine Tastatur angeschlossen hast, muß jedenfalls 16 kommen. Es sein denn, Du spielst das Ganze nur mit dem Bascom-Simulator durch, dann kommt 15

Tütüütüüü... :eek:ps:
Hab den Bascom-Simulator genutzt. Ich dachte der reagiert auch auf die Tastatur, oder doch nicht?
 
OP
H

Haenigser

Geocacher
Hier noch die Steckerbelegung der Tastatur:

1: Spalte 1 -> PD0
2: Spalte 2 -> PD1
3: Zeile 1 -> PD4
4: Zeile 2 -> PD5
5: Zeile 3 -> PD6
6: Zeile 4 -> PD7
7: Spalte 4 -> PD3
8: Spalte 3 -> PD2
 
Oben