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

Blinklicht mit 3 LED´s

ksbender

Geocacher
Ich habe mal einen Cache mit Reaktivem Blinklicht und drei unterschiedlich farbigen LED´s plaziert. So kann man auch prima die Koordinaten eines Finals verschlüsseln.
Bisher scheinen die Geocacher durchaus angetan.
Code ist nach Kochbuch, nur um die zusätzlichen Ausgänge erweitert.
Gruß
Stephan
 

Anhänge

  • 3LEDs.jpg
    3LEDs.jpg
    36,6 KB · Aufrufe: 2.014
OP
K

ksbender

Geocacher
Code:
'============================================================
'
' ********************************************************
' *** ***
' *** Tiny-Reaktivlicht mit LDR und A/D-Wandler ***
' *** mit Watchdog-Energiesparmodus und Tagabschaltung ***
' *** ***
' *** erstellt von Windi für www.geoclub.de ***
' *** 15.10.2006 ***
' *** ***
' ********************************************************
'
' µC: ATtiny13V
' +Ub: 3,00 V
' I: 17 µA im Leerlauf (Nachtbetrieb)
' I: 5 µA bei Tagabschaltung
' Reichweite: 650 m mit Maglite 5D
'
'============================================================
$regfile = "ATtiny13.DAT"
$crystal = 16000                                            'Frequenz des internen Oszillators
$hwstack = 6                                                'hardwarestack herabsetzen damit genügend variablen zur verfügung stehen
Config Adc = Single , Prescaler = Auto
Config Portb = &B00001110                                   'Pinb.3, Pinb.6 und Pinb.7 auf 'Ausgang', Rest auf 'Eingang' schalten
Portb = 0                                                   'Ausgänge auf Low setzen
Stop Ac                                                     'Analog-Komparator abschalten, um Strom zu sparen
Wdtcr = &B11010011                                          'Watchdog definieren: 0.125 Sekunden, Interrupt auslösen, kein Reset
Enable Interrupts                                           'Interrupts freigeben
Const Schwelle = 50                                         'je größer der Schwellwert, desto unempfindlicher
Const Tagschwelle = 800                                     'Schwellwert für Schlafmodus
Const Zwangsimpuls = 8                                      'LED-Impuls tagsüber alle X Schlafyklen (á ca. 8 Sekunden)
Dim A As Byte                                               'Variablen definieren
Dim Tagzaehler As Byte
Dim Schlafzaehler As Byte
Dim Ldr As Integer                                          '0 = Dunkel, 1023 = Hell
Dim Alt As Integer
Dim Merker As Integer

Do
Reset Watchdog
Powerdown                                                   'prozessor bremsen da sonst lichtänderung nicht erkannt wird
Start Adc                                                   'A/D-Wandler starten
Ldr = Getadc(2)                                             'Helligkeitswert einlesen
Stop Adc                                                    'A/D-Wandler zum Stromsparen wieder stoppen
Merker = Ldr - Alt                                          'Unterschied zwischen letzter und aktueller Messung ermitteln
Alt = Ldr                                                   'letzten LDR-Wert sichern
If Merker > Schwelle Then Gosub Blinken                     'Bei großer Änderung Dunkel->Hell: Blinken
If Ldr > Tagschwelle Then                                   'prüfen ob helligkeit über tagschwelle liegt
If Tagzaehler < 255 Then                                    'int-variable geht nur bis 255
Tagzaehler = Tagzaehler + 1
End If
Else
Tagzaehler = 0                                              'wenn wieder dunkel tagzähler löschen
End If
If Tagzaehler > 200 Then Gosub Pause                        'wenn mehr als x zyklen hell dann schlafmodus
Loop

Blinken:                                                    'LED blinken lassen
Waitms 5000
For A = 0 To 2
Portb.3 = 1
Waitms 600
Reset Watchdog
Powerdown
Portb.3 = 0
Waitms 1000
Reset Watchdog
Powerdown
Next A
Waitms 1000
For A = 0 To 1
Portb.2 = 1
Waitms 1000
Reset Watchdog
Powerdown
Portb.2 = 0
Waitms 2000
Next A
Waitms 1000
For A = 0 To 3
Portb.1 = 1
Waitms 1000
Reset Watchdog
Powerdown
Portb.1 = 0
Waitms 2000
Next A
Waitms 1000
For A = 0 To 1
Portb.2 = 1
Waitms 1000
Reset Watchdog
Powerdown
Portb.2 = 0
Waitms 2000
'Reset Watchdog
'Powerdown
Next A
Waitms 50
For A = 0 To 1
Portb.1 = 1
Waitms 1000
Reset Watchdog
Powerdown
Portb.1 = 0
Waitms 2000
'Reset Watchdog
'Powerdown
Next A
Waitms 10
For A = 0 To 2
Portb.3 = 1
Waitms 600
Reset Watchdog
Powerdown
Portb.3 = 0
Waitms 1000
Reset Watchdog
Powerdown
Next A


Wdtcr = &B11110001                                          'Watchdog auf 8 Sekunden stellen
'Reset Watchdog
'Powerdown
Reset Watchdog
Powerdown
Reset Watchdog
Powerdown
Reset Watchdog
Powerdown
Wdtcr = &B11010011                                          'Watchdog wieder auf 0,125 Sekunden zurückstellen

Alt = 1023                                                  'Doppelauslösung verhindern
Return
Pause:
Wdtcr = &B11110001                                          'Watchdog auf 8 Sekunden stellen
Reset Watchdog
Powerdown
Wdtcr = &B11010011                                          'Watchdog wieder auf 0,125 Sekunden zurückstellen
Schlafzaehler = Schlafzaehler + 1                           'merken wie oft Schlafmodus durchlaufen wurde
If Schlafzaehler = Zwangsimpuls Then                        'als Funktionskontrolle tagsüber LED auslösen
Portb.3 = 1
Reset Watchdog
Powerdown
Portb.3 = 0
Schlafzaehler = 0
End If
Return

End

Bitte schön.
Gruß
Stephan
 

thomas_st

Geowizard
ksbender schrieb:
Ich habe mal einen Cache mit Reaktivem Blinklicht und drei unterschiedlich farbigen LED´s plaziert. So kann man auch prima die Koordinaten eines Finals verschlüsseln.
Mache ich mit zwei LEDs - geht auch ;) Allerdings gibt es (zumindest bei mir) ein Problem: auf größere Entfernung sind die LEDs nicht mehr zu unterscheiden (wenn die rote und die blaue LED gleichzeitig leuchtet, ist nur noch ein Pink zu erkennen - ist eigentlich klar), so dass man in diesem Fall zum "Ablesen" zum RL hingehen muss.
Was mir bei deinem Schaltplan auffällt: warum hast Du den LEDs nur einen Vorwiderstand spendiert? Zumindest die rote und die weiße LED sollte sehr unterschiedliche Durchlasspannungen aufweisen, was bedeutet, dass eine von ihnen (weiß) mit zu wenig Strom versorgt wird, während die andere (rot) möglicherweise [1] schon beinah zu viel abbekommt. Ok, Du sparst Bauelemente, aber IMO an der falschen Stelle.

Viele Grüße und viel Spaß mit dem RL an Dich und Deine Cacher,
Thomas(_st)
_____________
[1] ich habe die Ströme jetzt nicht durchgerechnet
 

movie_fan

Geoguru
thomas_st schrieb:
[...]
_____________
[1] ich habe die Ströme jetzt nicht durchgerechnet

na dann mach ich das mal ;)
rot passt bei 1,9V durchlass mit 19,5mA
aber weiß ist wohl recht dunkel.

würde mich auch mal interessieren wie gut man aus der entfernung da was erkennt, oder nur ein helles orange wahrnehmen kann.
solange man ans RL dran kommt ist ja alles kein problem :)
 
OP
K

ksbender

Geocacher
Hätte ich direkt dazuschreiben sollen - ja, gleichzeitiges Blinken ist zwar technisch möglich, aber sehr schwierig zu erkennen. Hatte ich zuerst auch ausprobiert - um es etwas schwieriger zu machen. Aber aus ca. 80 m wird dann aus rot und weiß tatsächlich sowas wie orange.
Ich denke, daß bringt höchstens Verwirrung.
Im code könnte man aber auch sehen, daß die LED´s nacheinander angehen.
Probleme mit den Farben habe ich eigentlich nicht. Bei den ersten Käufen habe ich nicht auf exakte Übereinstimmung der Lichtstärken mcd geachtet. So weiß ich auch nicht genau, was da im Wald hängt. Aber es funktioniert und macht Spaß. Das ist doch die Hauptsache.
Trotzdem danke für die Hinweise.
Gruß
Stephan
 

thomas_st

Geowizard
ksbender schrieb:
Aber es funktioniert und macht Spaß. Das ist doch die Hauptsache.
Sehe ich auch so. Meine Hinweise sollten auch wirklich nur als Hinweise gesehen werden: weitere Widerstände würde z.B. die Möglichkeit eröffnen, die Helligkeitswerte der LEDs aufeinander abzustimmen. Aber, wenn es so klappt: zwei Bauteile weniger -> zwei Fehlerquellen weniger :)

Viele Grüße,
Thomas(_st)
 
Oben