Diese Website existiert nur weil wir Werbung mit AdSense ausliefern.
Bitte den AdBlocker daher auf dieser Website ausschalten! Danke.

Reaktives Licht mit Atmel AVR

Basteleien analog und digital mit Strom und Spannung.

Moderator: radioscout

Benutzeravatar
schnasemann
Geocacher
Beiträge: 235
Registriert: Mi 29. Okt 2008, 21:41

Re: Reaktives Licht mit Atmel AVR

Beitrag von schnasemann »

So, die Damen und Herren, hier die fertige funktionierende Version mit Teachin.
Gelernt wird folgendermaßen:
Am Tag Pin 5 und 6 brücken, bis Standardblinksequenz (10x Blinken) ausgegeben wird.
Während dem Blinken die Brücke entfernen.
Nach Ende des Blinkens mit Brücke Blinksequenz einlernen. Wenn man fertig ist, oder 32s erreicht wurden, wird Standardblinksequenz ausgegeben, danach das Eingelernte.

Will man wieder die Standard-Blinksequenz ausgeben, einfach - wie oben - am Tag brücken, bis Blinksequenz ausgegeben wird. Danach immer noch brücken. Nun wird 2x Standardblinksequenz ausgegeben und nach 8s die nun ausgewählte Sequenz (eben das Standardblinken) erneut angezeigt.

Ich hätte gerne noch eine Möglichkeit reingebaut, dass man das Ausgeben der eingelernten Sequenz stoppen kann, wenn man fertig ist. Leider komme ich bei meiner versuchten Lösung aber beim compilieren immer auf 104% und wüsste nicht, wo ich einsparen soll (evtl. in der Entprellroutine). Gedacht war das so, dass man bei der Ausgabe der eingelernten Sequenz nochmal brückt. Dabei wird dann im Eeprom wieder das magic Byte (siehe Quelltext) geschrieben und das wird später als Abbruchkriterium der EEpromzählschleife verwendet. Aber, wie geschrieben, brauche ich dafür zu viel Code.

So, und hier die geistigen Ergüsse, vielleicht kanns ja jemand brauchen:

Code: Alles auswählen

' Version 1.00 30.10.2009
' (c) geoclub & schnasemann

' Teachin Möglichkeit bei Tag und Brücken der Pins 5 und 6.
' Während Blinken Brücke entfernen, nach Blinkende mit Brücken von Pin 5 & 6 Muster einlernen
' Löschen und Umschalten auf Standardblinken durch Brücken der Pins über das Blinkende hinaus

$regfile = "ATtiny13.DAT"
$crystal = 128000                                           'Reale Frequenz des internen 128kHz-Oszillators
$hwstack = 10                                               'default use 32 for the hardware stack
$swstack = 10                                               'default use 10 for the SW stack
$framesize = 20                                             'default use 40 for the frame
$eeprom                                                     'the following DATA lines data will go to the EEP file
Data &H55 , &H55
$data


Stop Ac

Config Portb = &B11101110                                   'Portb.4 und Portb.0 auf 'Eingang' schalten
Portb = &B00000001                                          'keine Pullups zuschalten, nur PB0

Wdtcr = &B11010100                                          'Watchdog auf 250ms einstellen
Enable Interrupts

Config Adc = Single , Prescaler = Auto , Reference = Internal       'Referenzspannung des Adc Auf "Internal" = 1,1 V

Dim Wert1 As Word
Dim Wert2 As Word
Dim Schwelle As Word
Dim Anzahl As Byte
Dim Runde As Byte
Dim Merker As Byte
Dim Eepromz As Byte
Dim Zaehler As Byte
Dim Teachin As Bit
Dim Entprell As Byte
Dim Result As Byte


Const Dunkelwert = 18                                       ' Wert, ab dem Nacht erkannt wird
Const Hub = 10                                              ' Hub, der eine Taschenlampe erkennt
Runde = 0
Portb.1 = 0                                                 'Masse für portb.0

Do

Gosub Warte250ms
Gosub Einlesen
Schwelle = Wert1 + Hub                                      'Schwelle heller als Signal festlegen, je kleiner desto empfindlicher

If Wert1 < Dunkelwert And Wert2 >= Schwelle Then            'Dunkelschwelle festlegen, je kleiner desto dunkler
   Gosub Blinken
End If

If Wert1 >= Dunkelwert And Wert2 >= Dunkelwert Then         'bei Tag oder Dauerlicht
   Teachin = Pinb.0
   If Teachin = 0 Then                                      ' Teachin beginnt
      Gosub Blitz
      Teachin = Pinb.0                                      ' nicht mehr gedrückt, dann einlernen
      If Teachin = 1 Then
         Config Portb.4 = Output
         Portb.4 = 0
         For Eepromz = 1 To 63
            Merker = 0
            For Zaehler = 1 To 8                            'bitzähler
               Result = 0
               Rotate Merker , Left
               For Entprell = 1 To 5
                  If Entprell > 1 Then
                     Gosub Warte16ms
                  End If
                  Teachin = Pinb.0
                  If Teachin = 0 Then
                     Result = Result + 1
                     Portb.4 = 1
                  Else
                     Portb.4 = 0
                  End If
               Next Entprell
               If Result > 2 Then
                  Merker = Merker + 1
               End If
            Next Zaehler
            Writeeeprom Merker , Eepromz
         Next Eepromz
         Gosub Blitz
      Else                                                  ' Teachin immer noch gedrückt
         Merker = &B01010101                                ' Magic byte schreiben, damit Programmierung löschen
         Writeeeprom Merker , 1
         Gosub Warte250ms
         Gosub Warte250ms
         Gosub Warte250ms
         Gosub Warte250ms
         Gosub Blitz
         Gosub Blitz
         Gosub Warte8s
      End If
   Gosub Blinken
   Else
      Runde = Runde + 1
      Gosub Warte8s
   End If
End If

If Runde >= 8 Then                                          ' alle gute Minute einmal blitzen am Tag

'(   Config Portb.4 = Output
   Portb.4 = 1
   Gosub Warte16ms
   Portb.4 = 0                                              ')
')
   Runde = 0
End If
Wert1 = Wert2                                               'Wert2 nach Wert1 verschieben
Loop

Blitz:                                                      'LED getaktet blinken lassen
Config Portb.4 = Output
Portb.4 = 0

For Anzahl = 1 To 10
   Portb.4 = 1
   Gosub Warte16ms
   Portb.4 = 0
   Gosub Warte250ms
Next Anzahl
Return

Einlesen:
Start Adc
Config Portb.4 = Output                                     'LED "entladen"
Portb.4 = 0
Gosub Warte16ms
Config Portb.4 = Input
Portb.4 = 0
cbi adcsra,7                                                'ADEN = 0
Gosub Warte16ms
sbi adcsra,7                                                'ADEN = 1
Wert2 = Getadc(2)                                           'Spannung der LED messen
Stop Adc
Return


Blinken:
Config Portb.4 = Output
Portb.4 = 0
For Eepromz = 1 To 63
   Readeeprom Merker , Eepromz                              'Byte lesen aus Eeprom
   If Merker = &B01010101 Then
      Gosub Blitz
      Exit For
   End If
   For Zaehler = 1 To 7                                     ' ansonsten bitweise schieben
      If Merker > 127 Then                                  ' und blinken
         Portb.4 = 1
         Gosub Warte64ms
         Portb.4 = 0
      Else
         Gosub Warte64ms                                    ' oder Pause
         nop
         nop
         nop
         nop
      End If
   Rotate Merker , Left
   Next Zaehler
Next Eepromz
Return

Warte8s:
Wdtcr = &B11110001                                          'Watchdog auf 8s einstellen
Reset Watchdog
Powerdown
Return

Warte16ms:
Wdtcr = &B11010000                                          'Watchdog auf 16ms einstellen
Reset Watchdog
Powerdown
Return

Warte64ms:
Wdtcr = &B11010010                                          'Watchdog auf 64ms einstellen
Reset Watchdog
Powerdown
Return

Warte250ms:
Wdtcr = &B11010100                                          'Watchdog auf 250ms einstellen
Reset Watchdog
Powerdown
Return
End
Grüße,
schnasemann
Benutzeravatar
schnasemann
Geocacher
Beiträge: 235
Registriert: Mi 29. Okt 2008, 21:41

Re: Reaktives Licht mit Atmel AVR

Beitrag von schnasemann »

und hier noch die Glimm- oder Glühversion (Ein- und Ausfaden) für 128kHz mit Soft-PWM.
Es werden nicht alle Tabellenwerte der Fadingtabelle komplett genutzt, wenn ich die Schleife aber auf 255 setze, ist die Rahmenfrequenz zu klein und man sieht das Flackern. Klar geht die Fadingeschichte auch mit PWM-Ausgang, aber dann müsste man wieder löten, weil der PWM-Ausgang nicht bei der Masse, sondern an Pin 5 oder 6 zu finden ist.

Code: Alles auswählen

' Reaktivlicht mit Glimmen (Fadein- und Fadeout)
' Version 1.0
' (c) geoclub 2009 & schnasemann







$regfile = "ATtiny13.DAT"
$crystal = 128000                                           'Reale Frequenz des internen 128kHz-Oszillators
$hwstack = 10                                               ' default use 32 for the hardware stack
$swstack = 10                                               'default use 10 for the SW stack
$framesize = 10                                             'default use 40 for the frame

Stop Ac

Config Portb = &B11101111                                   'Portb.4 auf 'Eingang' schalten
Portb = &B00000000                                          'keine Pullups zuschalten

Wdtcr = &B11010100                                          'Watchdog auf 250ms einstellen
Enable Interrupts

Config Adc = Single , Prescaler = Auto , Reference = Internal       'referenzspannung Des Adc Auf "Internal" = 1,1 V

Dim Wert1 As Word
Dim Wert2 As Word
Dim Schwelle As Word
Dim Anzahl As Byte
Dim Soft1 As Byte
Dim Soft2 As Byte
Dim Aktuell As Byte
Dim Zwisum As Byte
Dim Soft3 As Word
Const Dunkelwert = 18                                       ' Wert, ab dem Nacht erkannt wird
Const Hub = 10




Do

Wdtcr = &B11010100                                          'Watchdog auf 250ms einstellen
Reset Watchdog
Powerdown

Start Adc

Config Portb.4 = Output                                     'LED "entladen"
Portb.4 = 0

'Waitus 1500
Wdtcr = &B11010000                                          'Watchdog auf 16ms einstellen
Reset Watchdog
Powerdown

Config Portb.4 = Input
Portb.4 = 0

cbi adcsra,7                                                'ADEN = 0

Wdtcr = &B11010000                                          'Watchdog auf 16ms einstellen
Reset Watchdog
Powerdown

sbi adcsra,7                                                'ADEN = 1

Wert2 = Getadc(2)                                           'Spannung der LED messen

Stop Adc

Schwelle = Wert1 + Hub                                      'Schwelle festlegen, je kleiner desto empfindlicher

If Wert1 < Dunkelwert And Wert2 >= Schwelle Then            'Dunkelschwelle festlegen, je kleiner desto dunkler
   Gosub Blitz
End If

If Wert1 >= Dunkelwert And Wert2 >= Dunkelwert Then         'bei Tag oder Dauerlicht Watchdog aktivieren
   Wdtcr = &B11110001                                       'Watchdog auf 8s einstellen
   Reset Watchdog
   Powerdown
End If


Wert1 = Wert2                                               'Wert2 nach Wert1 verschieben

Loop

Blitz:                                                      'LED faden lassen
Config Portb.4 = Output
Portb.4 = 0
For Anzahl = 1 To 10
   For Soft1 = 0 To 31
      Aktuell = Lookup(soft1 , Fade)
      For Soft2 = 0 To 150

         If Soft2 < Aktuell Then
            Portb.4 = 1
         Else
            Portb.4 = 0
         End If
      Next Soft2
   Next Soft1
   For Soft1 = 0 To 31
      Zwisum = 31 - Soft1
      Aktuell = Lookup(zwisum , Fade)
      For Soft2 = 0 To 150
         If Soft2 < Aktuell Then
            Portb.4 = 1
         Else
            Portb.4 = 0
         End If
      Next Soft2
   Next Soft1
   Portb.4 = 0
   Wdtcr = &B11010100                                       'Watchdog auf 250ms einstellen
   Reset Watchdog
   Powerdown
   Reset Watchdog
   Powerdown
Next Anzahl
Return


End

Fade:
Data 0 , 1 , 2 , 2 , 2 , 3 , 3 , 4 , 5 , 6 , 7 , 8 , 10 , 11 , 13 , 16 , 19 , 23 , 27 , 32 , 38 , 45 , 54 , 64 , 76 , 91 , 108 , 128 , 152 , 181 , 215 , 255
Grüße,
schnasemann
Benutzeravatar
schnasemann
Geocacher
Beiträge: 235
Registriert: Mi 29. Okt 2008, 21:41

Re: Reaktives Licht mit Atmel AVR

Beitrag von schnasemann »

So, und nochwas. Es heißt immer so schön: "Man" sollte. Nur findet sich der "Man" nicht. Also lässt man es eben wieder.
Ich habe nun unter http://www.wikihost.org/w/rl ein Wiki eingerichtet und würde Euch bitten, Eure Quelltexte einzupflegen. Auch ein "Erste Schritte mit Bascom" und weiteres zur Schaltungstechnik wäre toll. Damit soll nicht das tolle Kochbuch boykottiert werden, sondern einfach die Vorteile der Hyperlinks und des gemeinsamen schreibenden Zugriffes genutzt werden, um für Interessierte die Essenz aus unserem Rekordthread (oder gibt es einen noch längeren?) zu ziehen.

Danke,
schnasemann
Benutzeravatar
Teddy-Teufel
Geoguru
Beiträge: 4717
Registriert: So 29. Okt 2006, 11:04
Wohnort: 17449 Karlshagen
Kontaktdaten:

Re: Reaktives Licht mit Atmel AVR

Beitrag von Teddy-Teufel »

schnasemann hat geschrieben: Ich habe nun unter http://www.wikihost.org/w/rl ein Wiki eingerichtet und würde Euch bitten, Eure Quelltexte einzupflegen. Auch ein "Erste Schritte mit Bascom" und weiteres zur Schaltungstechnik wäre toll. ...
Danke,
schnasemann
Ich weiß ja nicht ob so ein öffentlicher Extrakt so ganz richtig ist. Wir diskutieren, entwickeln, programmieren, testen. Der Eine mehr der Andere weniger aber dann hängen sich Welche hinten ran, die es kommerziell vermarkten und scheuen sich nicht mal vor dem Hinweis... Nachbau verboten ... oder so ähnlich. Anderseits kann man nichts dagegen haben, weil man kein Patent drauf hat. Ist aber so meine Meinung, wers nicht glaubt kann ja mal Ralf oder Windi fragen aber ich glaube die sind es unterdessen leid, dieses Thema zu diskutieren, denn so einen Thread gabs schon mal. Wenn ein Cacher sowas mal zum Unkostenpreis für einen anderen Cacher baut, ist das was ganz anderes, es kann eben nicht Jeder löten.
Es gibt Cacher, bei denen gingen dem lieben Gott wohl die Zutaten aus! :lachtot:
Moin, moin! Achim
Benutzeravatar
schnasemann
Geocacher
Beiträge: 235
Registriert: Mi 29. Okt 2008, 21:41

Re: Reaktives Licht mit Atmel AVR

Beitrag von schnasemann »

Der Einwand hat was. Wenn da noch mehrere der Ansicht sind, dann lasst es mich bitte wissen. Dann würde ich das natürlich wieder löschen. Dass das von manchen vermarktet wurde, ist Sauerei. Ging mir auch schon so, dass ich meine Quellcodes samt meiner programmierten Fehler wieder bei eBay gefunden habe.

Also, wenn der Wunsch, geistigen Eigentum zu schützen, indem man kein Wiki draus macht, größer ist als der Wunsch, dass technisch Interessierte da durchkommen, lösche ich das Wiki wieder.
schnasemann
Benutzeravatar
Teddy-Teufel
Geoguru
Beiträge: 4717
Registriert: So 29. Okt 2006, 11:04
Wohnort: 17449 Karlshagen
Kontaktdaten:

Re: Reaktives Licht mit Atmel AVR

Beitrag von Teddy-Teufel »

schnasemann hat geschrieben:oh, ein Meister der SMT! Sieht gut aus. Der Tipp ist nicht schlecht. Wer kann einen guten Tipp zur umweltverträglichen Befestigung an einem Baum geben? Das wird wohl die Standardanwendung sein.
Kabelbinder in schwarz sind eine Möglichkeit, aber vielleicht gibt es noch etwas eleganteres.
Wir haben eine in einem Baum, der ist unten etwas verwachsen und hat da so ein knuppliges Zeug unten dran, da war sowas wie ein Astloch, befestigt ist er nicht extra, wir meine er ist gut getarnt, mal sehen wie lange er bleibt, falls weg, ist es auch nicht so dramatisch, weil es LED-Onls-Old ist und wir ja noch genügend Ersatz hier zu hause haben. Allerdings ist die Petling-Variante etwas länger und die Löcher müssen tiefer sein.
Bei diesem Cache ist er auch einfach in die Wildnis gesetzt, da soll er auch bloß etwas "Blinzeln",
Blitzertarnung.jpg
Blitzertarnung.jpg (87.8 KiB) 720 mal betrachtet
es ist ein TeachIn, da braucht man nichts auslesen.
Was die Wikisache betrifft, sind wir ja irgendwie in einer Sackgasse, denn man kann ja nicht alles per PN abhandeln.
Es gibt Cacher, bei denen gingen dem lieben Gott wohl die Zutaten aus! :lachtot:
Moin, moin! Achim
Dr.Schmock
Geocacher
Beiträge: 36
Registriert: Fr 3. Apr 2009, 00:02
Wohnort: HD

Re: Reaktives Licht mit Atmel AVR

Beitrag von Dr.Schmock »

Hallo,
meiner Meinung nach würde eine Wiki nicht generell kommerziellen Interessen nutzen.
Im Gegenteil! Das Forum, so wie es jetzt ist, nutzt den Firmen mehr: Sie können hier Knowhow rausziehen und in eigenen Designs verwenden (hat man ja gesehen), während ein am Nachbau interessierter Anfänger eher denkt: "Ach nee, das ist mir zu unübersichtlich und kompliziert, ich kauf's lieber".

Eine Wiki, mit Schaltplan und Hex-File und genauer (einfacher!!!) Anleitung zum Bestücken einer Lochrasterplatine bis zum Programmieren des Hex-Files, wird Anfänger dazu animieren, es selber zu machen - und die Kommerziellen eher abschrecken.
Man braucht ja in die Wiki nicht die ausgefeilsten RLs reinstellen, eher die "Basisversionen", deren Funktionsumfang es ohnehin schon zu kaufen gibt
Benutzeravatar
Teddy-Teufel
Geoguru
Beiträge: 4717
Registriert: So 29. Okt 2006, 11:04
Wohnort: 17449 Karlshagen
Kontaktdaten:

Re: Reaktives Licht mit Atmel AVR

Beitrag von Teddy-Teufel »

Dr.Schmock hat geschrieben:Hallo,
Man braucht ja in die Wiki nicht die ausgefeilsten RLs reinstellen, eher die "Basisversionen", deren Funktionsumfang es ohnehin schon zu kaufen gibt
Da gibt es aber schon das Kochbuch, jetzt ist halt bloß eine neue LED-Only-Variante dazu gekommen. Deswegen wurde der Thread ja auch wieder so "aufgewärmt". Für mich speziell von großem Interesse, da ich schon immer LED-Only bevorzugt habe. Bei dieser Variante ist die Empfindlichkeit nicht mehr so sehr von der LED-Farbe abhängig. Jetzt hat sich aber die "Löt- und Testwut" wieder gelegt, so langsam schläft man wieder durch. :lachtot:
Es gibt Cacher, bei denen gingen dem lieben Gott wohl die Zutaten aus! :lachtot:
Moin, moin! Achim
Benutzeravatar
schnasemann
Geocacher
Beiträge: 235
Registriert: Mi 29. Okt 2008, 21:41

Re: Reaktives Licht mit Atmel AVR

Beitrag von schnasemann »

das Kochbuch rede ich ja auch nicht schlecht. Bei einer Wiki-Sache sind es aber mehrere Autoren und darin sehe ich den Sinn und Mehrwert. Weil der eine eben ein HowTo für den Parallel-Adapter schreibt, der andere eine Abhandlung über unterschiedliche LEDs und wieder andere schreiben was über PETlinge und andere Gehäuse. Als Leser muss ich mir nicht alles anschauen, sondern per Link eben nur das, was mich gerade interessiert. Das kann das Kochbuch nicht, es sei denn, man fügt auch da Links ein. Dann bleibt aber immer noch der Nachteil, dass es nur einer schreibt und der hat naturgemäß einfach weniger Zeit, als wenn ein paar Leute mal ein paar Stunden investieren.

Was den Kommerz anbelangt: Das AKA ist meiner Ansicht nach dem offenen Aufbau der geoclub-RLs deutlich unterlegen. Auch finde ich die Art der Empfindlichkeitseinstellung mhhm. Dann kann das eben auch nicht eigene Blinksequenzen oder Glimmen. Was der eine oder andere nun wollte.

Mir ging es eben bei den RLs so, dass ich mir den kompletten Thread durchgelesen habe (zumindest überflogen) Das kostet Zeit und auf manche Frage hatte ich dann doch keine Antwort. Mir würde eine übersichtlichere Gestaltung als Leser zumindest mehr gefallen.
Aber ich möchte gerne noch die eine oder andere Meinung hören, bevor ich entweder weiter Zeit in das Wiki stecke oder es eben lösche.
Benutzeravatar
chrysophylax
Geomaster
Beiträge: 960
Registriert: Do 24. Sep 2009, 15:55
Wohnort: LDK
Kontaktdaten:

Re: Reaktives Licht mit Atmel AVR

Beitrag von chrysophylax »

oh, ein Meister der SMT! Sieht gut aus.
Danke für die Blumen..... Ich mach das beruflich, dementsprechend bilde ich mir nicht zu viel darauf ein :ops:
Der Tipp ist nicht schlecht. Wer kann einen guten Tipp zur umweltverträglichen Befestigung an einem Baum geben? Das wird wohl die Standardanwendung sein.
Kabelbinder in schwarz sind eine Möglichkeit, aber vielleicht gibt es noch etwas eleganteres.
Vielleicht ein bißchen zu sehr "drübber", aber mal über folgende zugegebenermaßen ebenso aufwendige wie hübsche Befestigungsvariante nachgedacht: Im Baumarkt gibt es "Lochblech"-Streifen vom laufenden Meter. Diese kann man über eine "Unterlegschicht" aus Resten eines alten Jutesacks oder sonstigen Stoffs (um die Rinde nicht zu beschädigen) mit einer schicken Schraube&Mutter als "Band" um den Baum spannen, und auf ebendiese Schraube dann im gleichen Gewinde so eine Rohrschelle setzen. Sieht bestimmt super schick und professionell aus, ist aber glaub ich auch schon wieder arg viel Aufwand.

Andere Alternative: massiven Draht (2,5mm² oder mehr), bevorzugt in braun isoliert um den Baum verdrillen und Petling gleich mit reinverdrillen. Ist spottenbillig & quasitarnfarben. Notfalls tuts dafür wahrscheinlich auch der grün ummantelte Spanndraht für häßliche grüne Maschendrahtzäune....

Zum Thema kommerzielles Nachbauen: Veröffentlicht doch einfach alles, was ihr so treibt unter Creative Commons - BY-NC-SA. Dann darf es unkommerziell beliebig nachgebaut und modifiziert werden, solange eine Referenz auf euch als Ersteller erfolgt, und niemand darf ohne eure Erlaubnis den Kram nachbauen. Funktioniert mit Software & mit Hardware, man hat eine rechtliche Handhabe, um im Zweifelsfalle jemandem ans Bein zu pissen (ob der Aufwand lohnt, ist eine ganz andere Frage), und kann trotzdem selbst die Ergebnisse beliebig verwerten oder anderen Menschen in Lizenz Produktion&Verkauf erlauben.

Mach ich mit meinen diversen geistigen Ergüssen im Netz auch so und bin bisher damit recht gut gefahren, wer mag kann sich dazu ja mal als Beispiel meine eigene Homepage http://www.chrysophylax.de antun.

Und wer ganz furchtbar viel Angst um seine Quellcodes hat, veröffentlicht einfach nur HEX-Files. Dann kann man den Kram zwar nachbauen, aber nicht ohne viel Aufwand weiterentwickeln.

chrysophylax.
Antworten