Es kann jetz sein das ich deine Anforderunge nicht ganz genau kapiert hab, aber ich geh mal davon aus das du die Tasten nicht mechanisch steuern willst.
ich kann dir allerdings eine fertige elektriche Ansteuerung liefer die für Nokia Hanys mit "Kompass" passt und garantiert leicht auf ander Handys umzuschreiben ist.
Programm ist im Anhang (wennns funktioniert O:) ) ist mein erster Beitrag.
Hier kurze Beschreibung (bin nicht der Dokumentierer und auch kein Elektriker)
Die Tasten bestehen ja aus 2 Kontaktflächen die eine 4x5 Matrix (20 Tasten) ergeben
der Ring ist die Zeile der mittlere Punkt die Spalte (oder anders Herum)
d.h wenn du nur das Tastenfeld nutzen Willst musst du 9 drähte anlöten und fertig.
Diese werden über Optokoppler verbunden die in zwei Gruppen unterteilt sind zeile und Spalte. also OPT von zeile und Opt von Spalte anwählen und fertig (wie Schiffe versenken) Mittlerer Kontakt-Spalten OPT -Zeilen OPT-Ringkontakt.
ich hab daraus Eine Alarmanlage gebaut (für unser Vereinsheim) die eine Rundsms sendet und dann angerufen werden kann um GEGENMAßNAHMEN [-X
einleiten zu können .
Handy nimmt ab und man kann in den Raum hören wenn man die S..u hört muss mann 2s reinschreien dann ta ta ta.
Das gelöte ist einfach, schafft sogar ein Maschinenbauer.
Das programm funktioniert ist zwar sicher nicht optimal aber auch mein erstes Projekt.
so nun genug gelabert wenn du interesse Hast meld dich noch mal
Handybedienprogramm
;************************************************* ****************************************
;
;************************************************* ****************************************
;Includedatei zum anschreiben eines Handys. Die Tastenmatrix ist wie folgt auf
;die Ports A und B verteilt.Der ausenring der Zahl bezeichnet die Zeile, der innenri
;Pin PA4 PA5 PA6 PA7 PB0
;PA0 1 2 3 left lud (linke Taste unterm Display)
;PA1 4 5 6 ghr(GrünerHöhrer) up
;PA2 7 8 9 rhr(RoterHörer) down
;PA3 stern 0 raute right rud (rechte Taste unterm Display)
;-----------------------------------------------------------------------------------------
;Includedatei für ATmega16
.include "m16def.inc"
;-----------------------------------------------------------------------------------------
.def Temp = r16 ;allg. Tempregister
.def temp1 = r17
.def temp2 = r18
.def temp3 = r19
;------------------------------------------------------------------------------------------------------------------------------
;**************************** Tasten Drücken *****************************************
;---------------------------------------------------------------------------------------------------
;1 Drücken
_1: ;Name
rcall wbp
ldi Temp, 0b11111111 ;Port A auf Ausgabe stellen
out DDRA,Temp
sbi DDRB,0 ;PortB Bit 0 auf Ausgabe stellen
ldi Temp, 0b00010001 ;Taste drücken
out PORTA, Temp
cbi PORTB,0
rcall hp ;Taste halten
ldi Temp, 0b00000000 ;Taste loslassen
out PORTA, Temp
cbi PORTB,0
rcall wap ;nach dem Tastendruck warten
ret
;--------------------------------------------------------------------------------------------------
;2 Drücken
_2: ;Name
rcall wbp
ldi Temp, 0b11111111 ;Port A auf Ausgabe stellen
out DDRA,Temp
sbi DDRB,0 ;PortB Bit 0 auf Ausgabe stellen
ldi Temp, 0b00100001 ;Taste drücken
out PORTA, Temp
cbi PORTB,0
rcall hp ;Taste halten
ldi Temp, 0b00000000 ;Taste loslassen
out PORTA, Temp
cbi PORTB,0
rcall wap ;nach dem Tastendruck warten
ret
;--------------------------------------------------------------------------------------------------
;3 Drücken
_3: ;Name
rcall wbp
ldi Temp, 0b11111111 ;Port A auf Ausgabe stellen
out DDRA,Temp
sbi DDRB,0 ;PortB Bit 0 auf Ausgabe stellen
ldi Temp, 0b01000001 ;Taste drücken
out PORTA, Temp
cbi PORTB,0
rcall hp ;Taste halten
ldi Temp, 0b00000000 ;Taste loslassen
out PORTA, Temp
cbi PORTB,0
rcall wap ;nach dem Tastendruck warten
ret
;--------------------------------------------------------------------------------------------------
;left Drücken
left: ;Name
rcall wbp
ldi Temp, 0b11111111 ;Port A auf Ausgabe stellen
out DDRA,Temp
sbi DDRB,0 ;PortB Bit 0 auf Ausgabe stellen
ldi Temp, 0b10000001 ;Taste drücken
out PORTA, Temp
cbi PORTB,0
rcall hp ;Taste halten
ldi Temp, 0b00000000 ;Taste loslassen
out PORTA, Temp
cbi PORTB,0
rcall wap ;nach dem Tastendruck warten
ret
;--------------------------------------------------------------------------------------------------
;lud Drücken linke Taste unter dem Display
lud: ;Name
rcall wbp
ldi Temp, 0b11111111 ;Port A auf Ausgabe stellen
out DDRA,Temp
sbi DDRB,0 ;PortB Bit 0 auf Ausgabe stellen
ldi Temp, 0b00000001 ;Taste drücken
out PORTA, Temp
sbi PORTB,0
rcall hp ;Taste halten
ldi Temp, 0b00000000 ;Taste loslassen
out PORTA, Temp
cbi PORTB,0
rcall wap ;nach dem Tastendruck warten
ret
;--------------------------------------------------------------------------------------------------
;4 Drücken
_4: ;Name
rcall wbp
ldi Temp, 0b11111111 ;Port A auf Ausgabe stellen
out DDRA,Temp
sbi DDRB,0 ;PortB Bit 0 auf Ausgabe stellen
ldi Temp, 0b00010010 ;Taste drücken
out PORTA, Temp
cbi PORTB,0
rcall hp ;Taste halten
ldi Temp, 0b00000000 ;Taste loslassen
out PORTA, Temp
cbi PORTB,0
rcall wap ;nach dem Tastendruck warten
ret
;--------------------------------------------------------------------------------------------------
;5 Drücken
_5: ;Name
rcall wbp
ldi Temp, 0b11111111 ;Port A auf Ausgabe stellen
out DDRA,Temp
sbi DDRB,0 ;PortB Bit 0 auf Ausgabe stellen
ldi Temp, 0b00100010 ;Taste drücken
out PORTA, Temp
cbi PORTB,0
rcall hp ;Taste halten
ldi Temp, 0b00000000 ;Taste loslassen
out PORTA, Temp
cbi PORTB,0
rcall wap ;nach dem Tastendruck warten
ret
;--------------------------------------------------------------------------------------------------
;6 Drücken
_6: ;Name
rcall wbp
ldi Temp, 0b11111111 ;Port A auf Ausgabe stellen
out DDRA,Temp
sbi DDRB,0 ;PortB Bit 0 auf Ausgabe stellen
ldi Temp, 0b01000010 ;Taste drücken
out PORTA, Temp
cbi PORTB,0
rcall hp ;Taste halten
ldi Temp, 0b00000000 ;Taste loslassen
out PORTA, Temp
cbi PORTB,0
rcall wap ;nach dem Tastendruck warten
ret
;--------------------------------------------------------------------------------------------------
;ghr Drücken ;Grüner Höhrer
ghr: ;Name
rcall wbp
ldi Temp, 0b11111111 ;Port A auf Ausgabe stellen
out DDRA,Temp
sbi DDRB,0 ;PortB Bit 0 auf Ausgabe stellen
ldi Temp, 0b10000010 ;Taste drücken
out PORTA, Temp
cbi PORTB,0
rcall hp ;Taste halten
ldi Temp, 0b00000000 ;Taste loslassen
out PORTA, Temp
cbi PORTB,0
rcall wap ;nach dem Tastendruck warten
ret
;--------------------------------------------------------------------------------------------------
;up Drücken ;Pfeil nach oben
up: ;Name
rcall wbp
ldi Temp, 0b11111111 ;Port A auf Ausgabe stellen
out DDRA,Temp
sbi DDRB,0 ;PortC Bit 0 auf Ausgabe stellen
ldi Temp, 0b00000010 ;Taste drücken
out PORTA, Temp
sbi PORTB,0
rcall hp ;Taste halten
ldi Temp, 0b00000000 ;Taste loslassen
out PORTA, Temp
cbi PORTB,0
rcall wap ;nach dem Tastendruck warten
ret
;--------------------------------------------------------------------------------------------------
;7 Drücken
_7: ;Name
rcall wbp
ldi Temp, 0b11111111 ;Port A auf Ausgabe stellen
out DDRA,Temp
sbi DDRB,0 ;PortB Bit 0 auf Ausgabe stellen
ldi Temp, 0b00010100 ;Taste drücken
out PORTA, Temp
cbi PORTB,0
rcall hp ;Taste halten
ldi Temp, 0b00000000 ;Taste loslassen
out PORTA, Temp
cbi PORTB,0
rcall wap ;nach dem Tastendruck warten
ret
;--------------------------------------------------------------------------------------------------
;8 Drücken
_8: ;Name
rcall wbp
ldi Temp, 0b11111111 ;Port A auf Ausgabe stellen
out DDRA,Temp
sbi DDRB,0 ;PortB Bit 0 auf Ausgabe stellen
ldi Temp, 0b00100100 ;Taste drücken
out PORTA, Temp
cbi PORTB,0
rcall hp ;Taste halten
ldi Temp, 0b00000000 ;Taste loslassen
out PORTA, Temp
cbi PORTB,0
rcall wap ;nach dem Tastendruck warten
ret
;--------------------------------------------------------------------------------------------------
;9 Drücken
_9: ;Name
rcall wbp
ldi Temp, 0b11111111 ;Port A auf Ausgabe stellen
out DDRA,Temp
sbi DDRB,0 ;PortB Bit 0 auf Ausgabe stellen
ldi Temp, 0b01000100 ;Taste drücken
out PORTA, Temp
cbi PORTB,0
rcall hp ;Taste halten
ldi Temp, 0b00000000 ;Taste loslassen
out PORTA, Temp
cbi PORTB,0
rcall wap ;nach dem Tastendruck warten
ret
;--------------------------------------------------------------------------------------------------
;rhr Drücken ;Roter Höhrer
rhr: ;Name
rcall wbp
ldi Temp, 0b11111111 ;Port A auf Ausgabe stellen
out DDRA,Temp
sbi DDRB,0 ;PortB Bit 0 auf Ausgabe stellen
ldi Temp, 0b10000100 ;Taste drücken
out PORTA, Temp
cbi PORTB,0
rcall hp ;Taste halten
ldi Temp, 0b00000000 ;Taste loslassen
out PORTA, Temp
cbi PORTB,0
rcall wap ;nach dem Tastendruck warten
ret
;--------------------------------------------------------------------------------------------------
;down Drücken ;Pfeil nach unten
down: ;Name
rcall wbp
ldi Temp, 0b11111111 ;Port A auf Ausgabe stellen
out DDRA,Temp
sbi DDRB,0 ;PortB Bit 0 auf Ausgabe stellen
ldi Temp, 0b00000100 ;Taste drücken
out PORTA, Temp
sbi PORTB,0
rcall hp ;Taste halten
ldi Temp, 0b00000000 ;Taste loslassen
out PORTA, Temp
cbi PORTB,0
rcall wap ;nach dem Tastendruck warten
ret
;--------------------------------------------------------------------------------------------------
;stern Drücken
_stern: ;Name
rcall wbp
ldi Temp, 0b11111111 ;Port A auf Ausgabe stellen
out DDRA,Temp
sbi DDRB,0 ;PortB Bit 0 auf Ausgabe stellen
ldi Temp, 0b00011000 ;Taste drücken
out PORTA, Temp
cbi PORTB,0
rcall hp ;Taste halten
ldi Temp, 0b00000000 ;Taste loslassen
out PORTA, Temp
cbi PORTB,0
rcall wap ;nach dem Tastendruck warten
ret
;--------------------------------------------------------------------------------------------------
;0 Drücken
_0: ;Name
rcall wbp
ldi Temp, 0b11111111 ;Port A auf Ausgabe stellen
out DDRA,Temp
sbi DDRB,0 ;PortB Bit 0 auf Ausgabe stellen
ldi Temp, 0b00101000 ;Taste drücken
out PORTA, Temp
cbi PORTB,0
rcall hp ;Taste halten
ldi Temp, 0b00000000 ;Taste loslassen
out PORTA, Temp
cbi PORTB,0
rcall wap ;nach dem Tastendruck warten
ret
;--------------------------------------------------------------------------------------------------
;Raute Drücken
_raute: ;Name
rcall wbp
ldi Temp, 0b11111111 ;Port A auf Ausgabe stellen
out DDRA,Temp
sbi DDRB,0 ;PortB Bit 0 auf Ausgabe stellen
ldi Temp, 0b01001000 ;Taste drücken
out PORTA, Temp
cbi PORTB,0
rcall hp ;Taste halten
ldi Temp, 0b00000000 ;Taste loslassen
out PORTA, Temp
cbi PORTB,0
rcall wap ;nach dem Tastendruck warten
ret
;--------------------------------------------------------------------------------------------------
;right Drücken ;Pfeil nach rechts
right: ;Name
rcall wbp
ldi Temp, 0b11111111 ;Port A auf Ausgabe stellen
out DDRA,Temp
sbi DDRB,0 ;PortB Bit 0 auf Ausgabe stellen
ldi Temp, 0b10001000 ;Taste drücken
out PORTA, Temp
cbi PORTB,0
rcall hp ;Taste halten
ldi Temp, 0b00000000 ;Taste loslassen
out PORTA, Temp
cbi PORTB,0
rcall wap ;nach dem Tastendruck warten
ret
;--------------------------------------------------------------------------------------------------
;rud Drücken ;Rechte taste unte dem Display
rud: ;Name
rcall wbp
ldi Temp, 0b11111111 ;Port A auf Ausgabe stellen
out DDRA,Temp
sbi DDRB,0 ;PortB Bit 0 auf Ausgabe stellen
ldi Temp, 0b00001000 ;Taste drücken
out PORTA, Temp
sbi PORTB,0
rcall hp ;Taste halten
ldi Temp, 0b00000000 ;Taste loslassen
out PORTA, Temp
cbi PORTB,0
rcall wap ;nach dem Tastendruck warten
ret
;--------------------------------------------------------------------------------------------------
;********************* Zeiten für Tastendruck ************************************************** ***
;---------------------------------------------------------------------------------------------------
wbp: ;Wait befor press
rcall Delay100m ;Einstellen der Wartezeit vor dem Drücken einer Taste
rcall Delay100m
ret
;---------------------------------------------------------------------------------------------------
hp: ;Hold pressure
;Einstellen wie lange eine Taste gedrückt wird
rcall Delay100m
rcall Delay100m
ret
;---------------------------------------------------------------------------------------------------
wap: ;Wait after press
rcall Delay100m
ret
;---------------------------------------------------------------------------------------------------
;************************************************* **************************************************
http://www.mikrocontroller.net/topic/15194
https://www.roboternetz.de/phpBB2/zeigebeitrag.php?t=21966
Hier mal zwei Topic zu der Sache. Generell geht es mit einem Handy + AT-Commandos, wie in den Thread beschrieben wird, kennen aber nur wenige einen Text-Mode SMS. Und bei "Mikrocontroller" gibt es auch eine Liste mit Handys, die den Text-Mode können müssten.
Ansonsten, versuch mal Google mit "AT command AVR" oder "... PIC" oder so. Hier mal paar kleine Seiten aus der Top 10 Trefferliste ;)
http://web.archive.org/web/20050123050029/http://www.sparkfun.com/tutorial/Port-O-Rotary/portable-rotary.htm (cooles Projekt, wenn auch net ganz, das, was du haben wolltest :D, vor allem der src ist interessant, zumindest für mich)
http://www.wrankl.de/SMST/SMST.html
http://discussion.forum.nokia.com/forum/showthread.php?t=22398
sodala, noch einen schönen Abend *sichdurcheinHaufenvonSeitenwühl*
MfG
Mobius
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.