fockel007
Geocacher
Heute möchte ich mal mein erstes größeres ATTINY-Projekt euch vorstellen. Reaktivlichter hab ich schon einige zusammengebaut. Aber jetzt kam mir die Idee bei einem Nachtcache einen Koordinatensatz per 7-Segmetnanzeige auszugeben. Da ich dafür nicht extra Bauteile kaufen wollte mussten die Reste aus meiner Bastelkiste herhalten. Als Controller hatte ich noch von den Reaktivlichtern einen Attiny 13V übrig. Aufgrund der Pinbelegung war es aber ja nur möglich die Zahlen BCD-Codiert auszugeben. BCD-> 7 Segmentreiber (4511)hatte ich noch in meiner Fundkiste drin.
Weiter Forderung der Station ist, sie soll per mitgebrachtem 9V-Block funktionieren ohne das ein Batterieclip verwendet wird (Reduktion Wartungsaufwand).
Als Gehäuse kam ein gebrauchtes Kunstoffgehäuse mit Dichtung zum Einsatz (wurde braun grün matt lackiert). Die Batterie wird per Magnetkraft an den Kontakten (Messingschrauben 4mm) gehalten.
LED rot: verpolte Batterie
LED grün: alles ok
7 Segment rot: Nordkoordinate
7 Segment gelb: Ostkoordinate
Für ein Projekt aus Restmaterial bin ich damit ziemlich zufrieden.

Um die unterschiedlichen Displays anzusteuern ist ein Transistor verbaut worden um zwischen den beiden Treibern zu wechseln.
Der Widerstand der gelben Anzeige ist geringer da die Anzeige mehr Strom benötigt.
Das Programm ist einfach gehalten und noch komplett ohne Optimierung (da noch 53% Speicher frei ist). Da die Batterie ja mitgebracht wird wurde kein Wert auf Energiesparern etc. gelegt, aktiviert wird das ganze durch Spannung anlegen.

Die viele "Freiluftverdrahtung" liegt daran das ich mit der Lochrasterplatine gestartet bin ohne vorher einen Layoutplan zu zeichnen. Das ganze hätte auf der Platinengröße auch ohne die ganzen Kabel funktioniert, allerdings hätte ich dann auch wesentlich länger für die Platine gebraucht.
Hier noch der Code für Basom.
Weiter Forderung der Station ist, sie soll per mitgebrachtem 9V-Block funktionieren ohne das ein Batterieclip verwendet wird (Reduktion Wartungsaufwand).
Als Gehäuse kam ein gebrauchtes Kunstoffgehäuse mit Dichtung zum Einsatz (wurde braun grün matt lackiert). Die Batterie wird per Magnetkraft an den Kontakten (Messingschrauben 4mm) gehalten.
LED rot: verpolte Batterie
LED grün: alles ok
7 Segment rot: Nordkoordinate
7 Segment gelb: Ostkoordinate
Für ein Projekt aus Restmaterial bin ich damit ziemlich zufrieden.

Um die unterschiedlichen Displays anzusteuern ist ein Transistor verbaut worden um zwischen den beiden Treibern zu wechseln.
Der Widerstand der gelben Anzeige ist geringer da die Anzeige mehr Strom benötigt.
Das Programm ist einfach gehalten und noch komplett ohne Optimierung (da noch 53% Speicher frei ist). Da die Batterie ja mitgebracht wird wurde kein Wert auf Energiesparern etc. gelegt, aktiviert wird das ganze durch Spannung anlegen.

Die viele "Freiluftverdrahtung" liegt daran das ich mit der Lochrasterplatine gestartet bin ohne vorher einen Layoutplan zu zeichnen. Das ganze hätte auf der Platinengröße auch ohne die ganzen Kabel funktioniert, allerdings hätte ich dann auch wesentlich länger für die Platine gebraucht.
Hier noch der Code für Basom.
Code:
$regfile = "ATtiny13.DAT"
$crystal = 113000 'Frequenz des internen Oszillators
Config Portb = &B11111111
Dim A As Byte
Dim B As Byte
Dim C As Byte
' BCD-> 7 Segment Decoder initialisieren das definiert keine Anzeige
Portb.0 = 1
Portb.1 = 1
Portb.2 = 1
Portb.3 = 1
Portb.4 = 1
Waitms 250
Portb.4 = 0
Waitms 250
Gosub Doppel8
Gosub Ziffernaus3
'Daten anzeigen oberes Display
Portb.4 = 1 'oberes Display an
Gosub Z5
Gosub Pausekurz
Gosub Z0
Gosub Pausemittel
Gosub Z1
Gosub Pausekurz
Gosub Z5
Gosub Pausemittel
Gosub Z4
Gosub Pausekurz
Gosub Z9
Gosub Pausekurz
Gosub Z4
Gosub Ziffernaus3
'Daten anzeigen unteres Display
Portb.4 = 0 'unteres Display an
Gosub Z0
Gosub Pausekurz
Gosub Z0
Gosub Pausekurz
Gosub Z7
Gosub Pausemittel
Gosub Z2
Gosub Pausekurz
Gosub Z9
Gosub Pausemittel
Gosub Z0
Gosub Pausekurz
Gosub Z7
Gosub Pausekurz
Gosub Z9
Gosub Ziffernaus3
Gosub Doppel8
End
Pausekurz:
Portb.0 = 1
Portb.1 = 1
Portb.2 = 1
Portb.3 = 1
Waitms 300
Return
Pausemittel:
Portb.0 = 1
Portb.1 = 1
Portb.2 = 1
Portb.3 = 1
Waitms 500
Return
Ziffernaus3:
Portb.0 = 1
Portb.1 = 1
Portb.2 = 1
Portb.3 = 1
Waitms 3000
Return
Doppel8:
Portb.0 = 0
Portb.1 = 0
Portb.2 = 0
Portb.3 = 1
For B = 1 To 255
Portb.4 = 1
Waitms 5
Portb.4 = 0
Waitms 5
Next B
Portb.0 = 1
Portb.1 = 1
Portb.2 = 1
Portb.3 = 1
Return
Z0:
Portb.0 = 0
Portb.1 = 0
Portb.2 = 0
Portb.3 = 0
Waitms 1500
Return
Z1:
Portb.0 = 1
Portb.1 = 0
Portb.2 = 0
Portb.3 = 0
Waitms 1500
Return
Z2:
Portb.0 = 0
Portb.1 = 1
Portb.2 = 0
Portb.3 = 0
Waitms 1500
Return
Z3:
Portb.0 = 1
Portb.1 = 1
Portb.2 = 0
Portb.3 = 0
Waitms 1500
Return
Z4:
Portb.0 = 0
Portb.1 = 0
Portb.2 = 1
Portb.3 = 0
Waitms 1500
Return
Z5:
Portb.0 = 1
Portb.1 = 0
Portb.2 = 1
Portb.3 = 0
Waitms 1500
Return
Z6:
Portb.0 = 0
Portb.1 = 1
Portb.2 = 1
Portb.3 = 0
Waitms 1500
Return
Z7:
Portb.0 = 1
Portb.1 = 1
Portb.2 = 1
Portb.3 = 0
Waitms 1500
Return
Z8:
Portb.0 = 0
Portb.1 = 0
Portb.2 = 0
Portb.3 = 1
Waitms 1500
Return
Z9:
Portb.0 = 1
Portb.1 = 0
Portb.2 = 0
Portb.3 = 1
Waitms 1500
Return