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

Textausgabe mittels Codeschloß und 16Segmentanzeige

kirby27b

Geocacher
Hi,

nu mal was neues. Ein erstes Video meiner neuesten Creation.
Eine 16Segmentanzeige welche durch einen 6stelligen Code
dazu bewegt wird ihre Infos's zu verraten.

Video

Der Nachleuchtefekt tritt nur bei der Videoaufnahme ein, das Auge ist dafür zu Langsam.
An dem Steckverbinder befinden sich die Tasten des Codeschloß wobei die Tasten am Stecker K1X9 angeschlossen sind. Die 6 richtigen Tasten schalten das Ausgangssignal des 4017 jeweils um einen Port weiter indem der Ausgang einfach über die Taste wieder auf den Clockeingang geführt wird. Alle anderen Tasten resetten den Zähler wieder. Wenn der Endstand erreicht ist wird der Tiny über das Photomosrelais ( AQY212EH ) auf Spannung gelegt und rattert dann seinen gespeicherten Text ab. Am Schluß resettet der Tiny dann über den Port PA1 den Zähler.

Code dazu:

Code:
$hwstack = 20
$regfile = "ATtiny2313.DAT"
$crystal = 128000

Config Porta = &B00000011
Config Portb = &B11111111
Config Portd = &B01111111


Porta = 0
Portb = 0
Portd = 0

Stop Ac

Enable Interrupts
Dim Zeichen As String * 1


Restore Daten                                               'Am Beginn der Daten anfangen

Do
Read Zeichen
Wdtcr = &B11010110                                          'Watchdog auf 1s stellen
If Zeichen = "0" Then Gosub P0                              'schreibt 0 ins Display
If Zeichen = "1" Then Gosub P1                              'schreibt 1 ins Display
If Zeichen = "2" Then Gosub P2                              'schreibt 2 ins Display
If Zeichen = "3" Then Gosub P3                              'schreibt 3 ins Display
If Zeichen = "4" Then Gosub P4                              'schreibt 4 ins Display
If Zeichen = "5" Then Gosub P5                              'schreibt 5 ins Display
If Zeichen = "6" Then Gosub P6                              'schreibt 6 ins Display
If Zeichen = "7" Then Gosub P7                              'schreibt 7 ins Display
If Zeichen = "8" Then Gosub P8                              'schreibt 8 ins Display
If Zeichen = "9" Then Gosub P9                              'schreibt 9 ins Display
If Zeichen = "a" Then Gosub Pa                              'schreibt a ins Display
If Zeichen = "b" Then Gosub Pb                              'schreibt b ins Display
If Zeichen = "c" Then Gosub Pc                              'schreibt c ins Display
If Zeichen = "d" Then Gosub Pd                              'schreibt d ins Display
If Zeichen = "e" Then Gosub Pee                             'schreibt e ins Display
If Zeichen = "f" Then Gosub Pf                              'schreibt f ins Display
If Zeichen = "g" Then Gosub Pg                              'schreibt g ins Display
If Zeichen = "h" Then Gosub Ph                              'schreibt h ins Display
If Zeichen = "i" Then Gosub Pi                              'schreibt i ins Display
If Zeichen = "j" Then Gosub Pj                              'schreibt j ins Display
If Zeichen = "k" Then Gosub Pk                              'schreibt k ins Display
If Zeichen = "l" Then Gosub Pl                              'schreibt l ins Display
If Zeichen = "m" Then Gosub Pm                              'schreibt m ins Display
If Zeichen = "n" Then Gosub Pn                              'schreibt n ins Display
If Zeichen = "o" Then Gosub Po                              'schreibt o ins Display
If Zeichen = "p" Then Gosub Pp                              'schreibt p ins Display
If Zeichen = "q" Then Gosub Pq                              'schreibt q ins Display
If Zeichen = "r" Then Gosub Pr                              'schreibt r ins Display
If Zeichen = "s" Then Gosub P5                              'schreibt s ins Display
If Zeichen = "t" Then Gosub Pt                              'schreibt t ins Display
If Zeichen = "u" Then Gosub Pu                              'schreibt u ins Display
If Zeichen = "v" Then Gosub Pv                              'schreibt v ins Display
If Zeichen = "w" Then Gosub Pw                              'schreibt w ins Display
If Zeichen = "x" Then Gosub Px                              'schreibt x ins Display
If Zeichen = "y" Then Gosub Py                              'schreibt y ins Display
If Zeichen = "z" Then Gosub Pz                              'schreibt z ins Display

If Zeichen = "-" Then Gosub Pss                             'schreibt Bindestrich
If Zeichen = " " Then Gosub Leer                            'Leerzeichen
If Zeichen = "+" Then Gosub Pres                            'resettet Zahlenschloss
If Zeichen = "X" Then End
Loop

P0:
Portb = &B11111111
Portd = &B00000100
Porta = &B00000001
Reset Watchdog
Powerdown
Portd = 0
Portb = 0
Porta = 0
Return

P1:
Portb = &B00001100
Reset Watchdog
Powerdown
Portb = 0
Return

P2:
Portb = &B01110111
Portd = &B01001000
Reset Watchdog
Powerdown
Portd = 0
Portb = 0
Return

P3:
Portb = &B00111111
Portd = &B01001000
Reset Watchdog
Powerdown
Portd = 0
Portb = 0
Return

P4:
Portb = &B10001100
Portd = &B01001000
Reset Watchdog
Powerdown
Portd = 0
Portb = 0
Return

P5:
Portb = &B10111011
Portd = &B01001000
Reset Watchdog
Powerdown
Portd = 0
Portb = 0
Return

P6:
Portb = &B11111011
Portd = &B01001000
Reset Watchdog
Powerdown
Portd = 0
Portb = 0
Return

P7:
Portb = &B00001111
Reset Watchdog
Powerdown
Portb = 0
Return

P8:
Portb = &B11111111
Portd = &B01001000
Reset Watchdog
Powerdown
Portd = 0
Portb = 0
Return

P9:
Portb = &B10111111
Portd = &B01001000
Reset Watchdog
Powerdown
Portd = 0
Portb = 0
Return

Pa:
Wdtcr = &B11010101
Portb = &B11001111
Portd = &B01001000
Reset Watchdog
Powerdown
Portd = 0
Portb = 0
Return

Pb:
Wdtcr = &B11010101
Portb = &B00111111
Portd = &B00011010
Reset Watchdog
Powerdown
Portd = 0
Portb = 0
Return

Pc:
Wdtcr = &B11010101
Portb = &B11110011
Reset Watchdog
Powerdown
Portb = 0
Return

Pd:
Wdtcr = &B11010101
Portb = &B00111111
Portd = &B00010010
Reset Watchdog
Powerdown
Portd = 0
Portb = 0
Return

Pee:
Wdtcr = &B11010101
Portb = &B11110011
Portd = &B01000000
Reset Watchdog
Powerdown
Portd = 0
Portb = 0
Return

Pf:
Wdtcr = &B11010101
Portb = &B11000011
Portd = &B01000000
Reset Watchdog
Powerdown
Portd = 0
Portb = 0
Return

Pg:
Wdtcr = &B11010101
Portb = &B11111011
Portd = &B00001000
Reset Watchdog
Powerdown
Portd = 0
Portb = 0
Return

Ph:
Wdtcr = &B11010101
Portb = &B11001100
Portd = &B01001000
Reset Watchdog
Powerdown
Portd = 0
Portb = 0
Return

Pi:
Wdtcr = &B11010101
Portb = &B00110011
Portd = &B00010010
Reset Watchdog
Powerdown
Portd = 0
Portb = 0
Return

Pj:
Wdtcr = &B11010101
Portb = &B01111100
Reset Watchdog
Powerdown
Portd = 0
Return

Pk:
Wdtcr = &B11010101
Portb = &B11000000
Portd = &B01100100
Reset Watchdog
Powerdown
Portd = 0
Portb = 0
Return

Pl:
Wdtcr = &B11010101
Portb = &B11110000
Reset Watchdog
Powerdown
Portb = 0
Return

Pm:
Wdtcr = &B11010101
Portb = &B11001100
Portd = &B00000101
Reset Watchdog
Powerdown
Portd = 0
Portb = 0
Return

Pn:
Wdtcr = &B11010101
Portb = &B11001100
Portd = &B00100001
Reset Watchdog
Powerdown
Portd = 0
Portb = 0
Return

Po:
Wdtcr = &B11010101
Portb = &B11111111
Reset Watchdog
Powerdown
Portb = 0
Return

Pp:
Portb = &B11000111
Portd = &B01001000
Reset Watchdog
Powerdown
Portd = 0
Portb = 0
Return

Pq:
Wdtcr = &B11010101
Portb = &B11111111
Portd = &B00100000
Reset Watchdog
Powerdown
Portd = 0
Portb = 0
Return

Pr:
Wdtcr = &B11010101
Portb = &B11000111
Portd = &B01101000
Reset Watchdog
Powerdown
Portd = 0
Portb = 0
Return

Pt:
Wdtcr = &B11010101
Portb = &B00000011
Portd = &B00010010
Reset Watchdog
Powerdown
Portd = 0
Portb = 0
Return

Pu:
Wdtcr = &B11010101
Portb = &B11111100
Reset Watchdog
Powerdown
Portb = 0
Return

Pv:
Wdtcr = &B11010101
Portb = &B00001100
Portd = &B00100001
Reset Watchdog
Powerdown
Portd = 0
Portb = 0
Return

Pw:
Wdtcr = &B11010101
Portb = &B11001100
Portd = &B00100000
Porta = &B00000001
Reset Watchdog
Powerdown
Portd = 0
Portb = 0
Porta = 0
Return

Px:
Wdtcr = &B11010101
Portd = &B00100101
Porta = &B00000001
Reset Watchdog
Powerdown
Portd = 0
Porta = 0
Return

Py:
Wdtcr = &B11010101
Portd = &B00010101
Reset Watchdog
Powerdown
Portd = 0
Return

Pz:
Wdtcr = &B11010101
Portb = &B00110011
Portd = &B00000100
Porta = &B00000001
Reset Watchdog
Powerdown
Portd = 0
Portb = 0
Porta = 0
Return


Pss:
Portd = &B01001000
Reset Watchdog
Powerdown
Portd = 0
Return

Leer:
Portb = &B00000000
Portd = &B00000000
Reset Watchdog
Powerdown
Return

Pres:
Porta = &B00000010
Reset Watchdog
Powerdown
Porta = 0
Return

End

Daten:
Data "3" , "2" , "1" , "0" , " "
Data "g" , "e" , "h" , "e" , " " , "2" , "0" , "7" , "g" , "r" , "a" , "d" , " "
Data "u" , "n" , "d" , " " , "3" , "5" , "0" , "m" , "e" , "t" , "e" , "r"
Data " " , " " , "+"
Data " " , "X"
 

Anhänge

  • Codemaschine.jpg
    Codemaschine.jpg
    145,4 KB · Aufrufe: 888

Bussard

Geocacher
Hallo kirby27b,
interessanter Ansatz mit dem 4017. Aus welchem Grund hast du diese Lösung gewählt, weil du diese Tinys grad hattest? Ein Mega8 z.B. sollte die Tasten und die Anzeige "schaffen", der Stromverbrauch sollte auch vergleichbar sein.
Gruß Volker
 
OP
K

kirby27b

Geocacher
Hi,

also wie schon vermutet hatte ich die beiden Bausteine grad da. Außerdem sind meine programierkünste nicht soooooo gut das ich das mit dem Zahlencode bewerkstelligt bekomme. Dann ist da noch das es kein reales Tastenfeld gibt, sondern eine ansammlung von Reedkontakten die dort betätigt werden müssen. Spannungsversorgung ist kein Ding, da der Cacher zu diesem Cache 3 AA-Zellen mitbringen muß. Wenn ich mir das ganze so ansehe wird das wohl nen Member Only auch wens eigendlich doof ist, doch bei der ganzen Arbeit die da drinne steckt??????

Grüße Olaf
 

Hucky3000

Geocacher
Wieso "Member only" ?
Ich bastel im Moment auch kräftig - unter anderem auch mit Codeschloß. Aber mit Tastenfeld.
Wahrscheinlich gibts um die Startkoos zu bekommen nen Einstiegsrätsel. Also ein "Mystery".
"Member only" find ich doof.

Hucky
 
Oben