| 
  • If you are citizen of an European Union member nation, you may not use this service unless you are at least 16 years old.

  • You already know Dokkio is an AI-powered assistant to organize & manage your digital files & messages. Very soon, Dokkio will support Outlook as well as One Drive. Check it out today!

View
 

Reaktivlicht Programmcode Beispiel 3 - nachtaktiver Dauerblinker

Page history last edited by upigors 14 years, 5 months ago

Blinkdauer und Pause können unter Blinken geändert werden

 

 

 

$hwstack = 20                                              'hardwarestack herabsetzen damit genügend variablen zur verfügung stehen

$regfile = "ATtiny13.DAT"

$crystal = 128000                                         'Frequenz des internen Oszillators

Config Adc = Single , Prescaler = Auto

Config Portb = &B00001000                           'Pinb.3 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 Tagschwelle = 800                               'Schwellwert für Schlafmodus

Dim A As Byte                                              'Variablen definieren

Dim Ldr As Integer                                         '0 = Dunkel, 1023 = Hell

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

If Ldr > Tagschwelle Then Gosub Pause                       'wenn Helligkeit zu groß dann schlafen

If Ldr < Tagschwelle Then Gosub Blinken                     'sonst Blinken

Loop

Blinken:                                                       'LED blinken lassen

  Portb.3 = 1

  For A = 1 To 1                                            'je größer A umso länger ist die LED an

  Reset Watchdog

  Powerdown

  Next A

  Portb.3 = 0

  For A = 1 To 30

                                                                   'je größer A umso länger ist die LED aus

  Reset Watchdog

  Powerdown

  Next A

Return

Pause:

Wdtcr = &B11110001                                     'Watchdog auf 8 Sekunden stellen

Reset Watchdog

Powerdown

Wdtcr = &B11010011                                     'Watchdog wieder auf 0,125 Sekunden zurückstellen

Return

End

Comments (0)

You don't have permission to comment on this page.