Hi,
ich habe in meinem Flur einen selbstgebauten LED Spiegel mit Bewegungsmelder. War sündhaft teuer.
Mein Problem ist, seit dem ich meinen Wlan Router und mein Telefon im Flur habe, schaltet sich der Spiegel schonmal öfters kurz ein.
Die Zeitschaltung funktioniert mit einem Schmitt Trigger und nem Kondensator. Der Bewegungsmelder hat einen 5 V TTl Ausgang.
Jetzt soll er wieder richtig funktionieren und bekommt einen Microcontroller.
Ich möchte das er bei Bewegungserkennung 3- 5 Minuten einschaltet und danach aus. Werden in einer bestimmten Zeit zu viele Bewegungen registriert, soll er für ca 20 Minuten ausgeschaltet bleiben.
Irgendwie finde ich nicht den richtigen Ansatz.
Hier mal mein Programm. Ich bin sicher es gibt eine ganz einfache Lösung.
Wie
Wenn in 5 Minuten 20 x einschalten kommt, dann für 20 Minuten aus.
Ich danke euch.
Code:$regfile = "attiny13.dat" $crystal = 1000000 Ddrb = &B11101111 'Pin PB4 Eingang Rest Ausgang Dim Stufe1 As Byte Dim Zaehler As Word Dim Tilt As Word Declare Sub Unterprogramm Config Adc = Single , Prescaler = Auto Start Adc 'schalte den Timer1 ein Config Timer0 = Timer , Prescale = 256 'timer 1 0 bis 65535 Zählen Taktfrequenz durch 256 =1000000/256=3906,25 Hz Enable Timer0 ' 65536 - 3906 = 61630 On Timer0 Isr_von_timer1 'verzweige bei Timer1 überlauf zu Isr_von_Timer0 Enable Interrupts Timer0 = 0 'Leider Nur 8 Bit Timer Bis 255 Ca 15 X Interrupt = 1 Sekunde '61630 Do If Stufe1 = 2000000 And Portb.4 = 1 Then 'nach 2000000 bewegungsmeldungen/Programmdurchläufen und eingang eingeschaltet Ausgang aus Portb.3 = 0 Stufe1 = 0 Zaehler = 61 'Zähler auf 61 Setzen um Auszeit zu zählen End If If Portb.4 = 1 Then 'wenn Eingang auf 1 Pin B4 auf 1 Portb.3 = 1 Stufe1 = Stufe1 + 1 'Einschalthäufigkeit zählen Gosub Unterprogramm End If Loop Sub Unterprogramm If Zaehler = 900 Then ' nach 60 sekunden ausschalten Portb.3 = 0 Zaehler = 0 End If If Zaehler = 4500 Then 'nach 5 Minuten ausgeschaltet auch wenn eine Bewegung erfasst wird Zaehler = 0 'wieder in den normalen Modus End If End Sub End Isr_von_timer1: 'ISR von Timer1 Timer0 = 0 Zaehler = Zaehler + 1 Return







Zitieren

Lesezeichen