Telefon mit 4x4 Matrix

Basteleien analog und digital mit Strom und Spannung.

Moderator: radioscout

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

Re: Telefon mit 4x4 Matrix

Beitrag von Haenigser » So 24. Feb 2013, 15:09

Das Zahlenschloss von http://mikrocontroller.heldt.eu/index.p ... lenschloss funktioniert auf meinem Steckbrett allerdings nicht. Es leuchtet lediglich die Kontroll-LED.

Werbung:
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, 23:31

Hast Du die beiden wichtigsten Grundeinstellungen des Programms an Deinen (neuen?) Controler angepaßt?
Taktfrequenz bei Heldt ist 16MHz über externen Quarz und ATMEGA8, beim neuen ATMEGA sind immer 1MHz und intern erzeugter Takt ohne Quarz voreingestellt (was für das Codeschloßprogramm vollkommen ausreicht). Der Typ und die Taktfrequenz muß dem BASCOM-Compiler über das REGfile mitgeteilt werden, damit er die universellen Basic-Befehle in genau zum Prozessor passenden Maschinencode compiliert. Da mußt Du keine fuses ändern!).
Also z.B. '
'##### Init ###################################################
$regfile = "m48def.dat"
$crystal = 1000000 'Werkseinstellung

Weiter paßt die Belegung des Tastaturports schon Port D, im vorigen Beispiel wird aber der Port C vom Display belegt, der bei Heldt als Ausgang für die beiden LEDs, Relais und Summer verwendet wird. Also ohne Display verwenden oder das Display an Port B anschließen. Da dort die Pins nicht ganz reichen, kannst Du R/W=Rs auch fest auf Masse/ 0V legen. Aber auch ihne Display sollte das Programm es dann "tun".
Beim Compilieren dürfen keine Fehler auftauchen, erst dann den ersten Versuch des Brennens machen!

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

Benutzeravatar
hihatzz
Geomaster
Beiträge: 578
Registriert: Sa 19. Jun 2004, 15:42

Re: Telefon mit 4x4 Matrix

Beitrag von hihatzz » Mo 25. Feb 2013, 13:28

Wo habt ihr eigentlich das/die Display/s her die man am Steckbrett verwenden kann?
Oder habt ihr da erst vorher Drähte/(Flachband-)Kabel angelötet?
Ich sag' nur ein Wort: "Vielen Dank!"

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

Re: Telefon mit 4x4 Matrix

Beitrag von Haenigser » Mo 25. Feb 2013, 14:46

@hihatzz:
Bei Reichelt und dann gelötet...

@Bussard:
Die Grundeinstellungen passen.
Mit dem Display wollte ich in erster Linie testen, ob die Tastatur in Ordnung ist - und das ist sie. :-)
Daraufhin habe ich den Schaltplan auf mein Brett gesteckt. Allerdings ohne der Relais.
Es müsste doch aber auch ohne funktionieren, oder?
Im Grunde ist das Zahlenschloss auch viel mehr als ich brauche. Mir reicht es eigentlich, wenn bei der richtigen Telefonnummer ein Soundmodul gestartet wird. Bzw. wenn ich bei Upigors shoppen war (Soundmodul microSD), eine Ansage bei korrekter Nr. und eine Ansage "kein Anschluss unter dieser Nr." zu hören ist.

Benutzeravatar
peter51d
Geomaster
Beiträge: 394
Registriert: Do 8. Okt 2009, 12:09
Wohnort: 49661 Kellerhöhe

Re: Telefon mit 4x4 Matrix

Beitrag von peter51d » Mo 25. Feb 2013, 20:16

Genau das habe ich hier liegen. Einmal mit einem Tastentelefon und Mega 8 und einmal mit einem Wählscheibentelefon mit einem Tiny13 für die Auswertung.
Müsste, bei Bedarf mal den Code raussuchen.
Grüße aus dem Norden

peter51d

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

Re: Telefon mit 4x4 Matrix

Beitrag von Haenigser » Mo 25. Feb 2013, 20:27

@ Peter: BEDARF :-) :-)

Benutzeravatar
peter51d
Geomaster
Beiträge: 394
Registriert: Do 8. Okt 2009, 12:09
Wohnort: 49661 Kellerhöhe

Re: Telefon mit 4x4 Matrix

Beitrag von peter51d » Mo 25. Feb 2013, 20:59

Leider sind die Codes nicht oder nur leidlich Kommentiert.
Sollte aber verständlich sein, da nicht sehr umfangreich.

Tastentelefon:

Code: Alles auswählen

$regfile = "m8def.dat"
$crystal = 1000000

Config Kbd = Portb , Debounce = 20 , Delay = 50             'Matrixtastatur 3x4 an PortB angeschlossen

Config Portd.0 = Output
Ddrd = &B11111111
Freizeichen Alias Portd.0                                   'Freizeichen
Verwaehlt Alias Portd.1                                     'Verwählt
Ansage Alias Portd.7                                        'Textansage



Dim Eingabe As String * 20
Dim Code As String * 20


'***Hier Initial-Code eingeben ***

Code = "0123456789"




Dim Tastencode As Byte




Eingabe = ""

Freizeichen = 0
Verwaehlt = 1
Ansage = 1

Do


Tastencode = Getkbd()

If Tastencode <> 16 Then
  Select Case Tastencode

   Case 0 : Eingabe = Eingabe + "1"                         'Eingabenstring zusammensetzen
   Case 1 : Eingabe = Eingabe + "2"
   Case 2 : Eingabe = Eingabe + "3"
   Case 4 : Eingabe = Eingabe + "4"
   Case 5 : Eingabe = Eingabe + "5"
   Case 6 : Eingabe = Eingabe + "6"
   Case 8 : Eingabe = Eingabe + "7"
   Case 9 : Eingabe = Eingabe + "8"
   Case 10 : Eingabe = Eingabe + "9"
   Case 12 : Eingabe = Eingabe + "*"
   Case 13 : Eingabe = Eingabe + "0"
   Case 14 : Eingabe = Eingabe + "#"

  End Select





  If Len(eingabe) = Len(code) Then Gosub Auswerten
 Do
   Tastencode = Getkbd()

  Loop Until Tastencode = 16

End If
Loop
End

Auswerten:


   If Eingabe = Code Then
                                                            'code korrekt

    Freizeichen = 1                                         'Freizeichen aus
    Ansage = 0                                              'Textansage auslösen
    Wait 3
    Ansage = 1

    Else


    Freizeichen = 1
    Verwaehlt = 0                                           'Verwählt Zeichen
    Wait 3
    Verwaehlt = 1


    End If





Eingabe = ""
End
Wälscheibentelefon:
$regfile = "attiny13.dat"
$crystal = 9600000
$hwstack = 2
$swstack = 5


'Codeabfrage über Wählscheibentelefon


'Ein und Ausgänge konfigurieren

Config Pinb.0 = Input
Config Pinb.1 = Input
Config Pinb.2 = Output
Config Pinb.3 = Output
Config Pinb.4 = Output

'Alias Namen zuweisen
Falsch Alias Portb.2 'rufzeichen "kein Anschluss unter dieser Nummer"
Nsi Alias Pinb.1 'Impulsleitung vom Nummernschalter
Nsa Alias Pinb.0 'Nummernschalterkontakt, für Wählscheibe dreht oder steht
Ansage Alias Portb.3 'Ansage der Informationen
Bereit Alias Portb.4 'Wählbereitschaft anzeigen

'Interne pullups zuschalten
Portb.0 = 1
Portb.1 = 1

'Variablen zuweisen
Dim A As Byte 'Anzahl der Impulse pro Wahlvorgang
Dim Nummer As String * 10 'Der String in dem die gewählte Nummer geschrieben wird
' !!genau so gross wie der String "Rufnummer"!!
Dim Rufnummer As String * 10 'Der String in dem die zu wählende Nummer festgelegt wird
'die max länge ist hier auf 10 Nummern beschränkt


'Alle Variablen auf Null setzen
A = 0
Nummer = "" 'Sicherstellen, das String leer

'Alle Ausgänge auf 1 setzen
Falsch = 1
Ansage = 1
Bereit = 1


'Hauptprogrammschleife

Rufnummer = "7634528109" 'Hier die zu wählende Nummer eintragen

'Abfrage des Nummernschalters
Do
Bereit = 0 'Wählbereitschaft anzeige

Debounce Nsi , 1 , Impulse , Sub 'Impulsschalter entprellen und Sprunganweisung
Debounce Nsa , 1 , Auswerten , Sub 'Wählscheibe abgelaufen entprellen und Sprunganweisung
Loop

'Implse hochzählen

Impulse:

Bereit = 0
A = A + 1
Return

Auswerten:
If A = 0 Then 'Verhindern, das beim Start schon etwas in den Sting "Nummer"geschrieben wird
Return
End If
If A = 10 Then 'beim wählen der Nummer 0 werden 10 Impulse erzeugt.
A = 0 'hier durch wird im String eine "0" geschrieben
End If
Nummer = Nummer + Str(a) 'Die ermittelten Impulse der Rufnummer hinzufügen
If Len(nummer) = Len(rufnummer) Then 'Länge der gewählten Nummer mit Länge der zu wählenden Nummer vergleichen
'durch den Längenvergleich der Strings, muss keine extra längen Angabe mehr gemacht werden
Goto Kontrolle 'wenn Länge gleich dann zur Kontrolle
End If
A = 0 'Impulse für nächste Nummer löschen
Return


Kontrolle:
Bereit = 1
If Nummer = Rufnummer Then 'zu wählende Nummer mit gewählter Nummer vergleichen
Ansage = 0 'wenn gleich dann Ansage
Else
Falsch = 0 'wenn ungleich dann "kein Anschluss unter dieser Nummer"
End If

End 'end program
Ich hoffe, geholfen zu haben.
Grüße aus dem Norden

peter51d

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

Re: Telefon mit 4x4 Matrix

Beitrag von Bussard » Mo 25. Feb 2013, 21:04

hihatzz hat geschrieben:Wo habt ihr eigentlich das/die Display/s her die man am Steckbrett verwenden kann?
Oder habt ihr da erst vorher Drähte/(Flachband-)Kabel angelötet?
Entweder von Pollin oder so ein Teil (versch. Anbieter) http://www.ebay.de/itm/HD44780-1602-LCD ... 2317608%26
Flachbandkabel mit (bei mir Buchsenstecker) angelötet, Mini bzw- SMD-Kontrast-Poti gleich auf die Anschlüsse gelötet, nicht schön, aber für Versuchsaufbauten zweckmäßig.
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 » Di 26. Feb 2013, 08:35

@Peter: Vielen Dank für die Codes!

@all: Kann ich ohne externen Quarz den komplette PortB für meine 4x4 Tastatur nutzen?

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

Re: Telefon mit 4x4 Matrix

Beitrag von Bussard » Di 26. Feb 2013, 10:48

Haenigser hat geschrieben:@all: Kann ich ohne externen Quarz den komplette PortB für meine 4x4 Tastatur nutzen?
Ja. Aber besser keine Taste drücken während des programmierens ;) .

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

Antworten

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder