Telefon mit 4x4 Matrix

Basteleien analog und digital mit Strom und Spannung.

Moderator: radioscout

Benutzeravatar
Bussard
Geocacher
Beiträge: 191
Registriert: Mi 7. Okt 2009, 03:29
Wohnort: BRB

Re: Telefon mit 4x4 Matrix

Beitrag von Bussard » Mo 11. Feb 2013, 19:27

"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
Dateianhänge
Tastatur_LCD_Mega48_Klein.jpg
Tastatur_LCD_Mega48_Klein.jpg (60.89 KiB) 1173 mal betrachtet
Lächeln und Winken. Die Dosenfischer - Zwölf Elfen

Werbung:
Haenigser
Geocacher
Beiträge: 58
Registriert: Mi 26. Okt 2011, 08:51

Re: Telefon mit 4x4 Matrix

Beitrag von Haenigser » Do 14. Feb 2013, 14:31

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
Beiträge: 1062
Registriert: Mo 3. Apr 2006, 10:15
Kontaktdaten:

Re: Telefon mit 4x4 Matrix

Beitrag von stonewood » Do 14. Feb 2013, 16:46

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.

Benutzeravatar
Bussard
Geocacher
Beiträge: 191
Registriert: Mi 7. Okt 2009, 03:29
Wohnort: BRB

Re: Telefon mit 4x4 Matrix

Beitrag von Bussard » Do 14. Feb 2013, 18:02

Haenigser hat geschrieben: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_bas ... astenfeld/ ).
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
Lächeln und Winken. Die Dosenfischer - Zwölf Elfen

Haenigser
Geocacher
Beiträge: 58
Registriert: Mi 26. Okt 2011, 08:51

Re: Telefon mit 4x4 Matrix

Beitrag von Haenigser » Do 14. Feb 2013, 20:18

Bussard hat geschrieben: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üüü... :ops:
Hab den Bascom-Simulator genutzt. Ich dachte der reagiert auch auf die Tastatur, oder doch nicht?

Benutzeravatar
Bussard
Geocacher
Beiträge: 191
Registriert: Mi 7. Okt 2009, 03:29
Wohnort: BRB

Re: Telefon mit 4x4 Matrix

Beitrag von Bussard » Do 14. Feb 2013, 21:54

:p .
Das Leben ist hart, dafür real.

Gruß Bussard
Lächeln und Winken. Die Dosenfischer - Zwölf Elfen

Haenigser
Geocacher
Beiträge: 58
Registriert: Mi 26. Okt 2011, 08:51

Re: Telefon mit 4x4 Matrix

Beitrag von Haenigser » Fr 15. Feb 2013, 13:01

So, da ich denke, dass ich hier ohne Display nicht weiterkomme, habe ich erstmal eins bestellt.

Haenigser
Geocacher
Beiträge: 58
Registriert: Mi 26. Okt 2011, 08:51

Re: Telefon mit 4x4 Matrix

Beitrag von Haenigser » So 24. Feb 2013, 00:20

@ Bussard:

Läuft... Vielen Dank!
Bild

Jetzt kann ich mich ans Schloss ranmachen. :-)

Haenigser
Geocacher
Beiträge: 58
Registriert: Mi 26. Okt 2011, 08:51

Re: Telefon mit 4x4 Matrix

Beitrag von Haenigser » So 24. Feb 2013, 00:36

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

Benutzeravatar
Bussard
Geocacher
Beiträge: 191
Registriert: Mi 7. Okt 2009, 03:29
Wohnort: BRB

Re: Telefon mit 4x4 Matrix

Beitrag von Bussard » So 24. Feb 2013, 06:33

Super!
Mit Display und Steckbrett wird auch der Rest der Schaltung leichter.

Gruß Bussard
Lächeln und Winken. Die Dosenfischer - Zwölf Elfen

Antworten

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder