Witam,
Napisałem prosty programik do mojej nowej konstrukcji, a mianowicie sterownika oświetlenia ledowego szafek kuchennych.
Sterownik oparty na attiny 2313 + czujnik podczerwieni + mosfet.
Zadaniem sterownika jest szybkie ale "miękkie" włączenie oświetlenia odliczanie czasu do miękkiego powolnego wygaszenia oświetlenia.
Układ działa ale jak to zwykle bywa nie tak jak bym tego oczekiwał. Założenie było takie że jeżeli w trakcie świecenia czujnik wykryje
ruch to zaczyna zliczać czas od początku a wyłączy dopiero gdy odliczy zadany czas. W chwili obecnej działa jak zwykły czujnik czyli włączy odlicza czas i wyłącza.
Przydało by się również przerwanie gaszenia jeżeli otrzyma sygnał z czujnika.
Prosze o alalize mojego bałaganu ;-)
pozdrawiam
$regfile = "attiny2313.dat"
$crystal = 12000000
Config Pind.5 = Input
Config Pinb.3 = Output
Config Pinb.0 = Output
Dim Co1s As Byte
Dim Zwloka As Byte
Dim Wl As Bit
Dim Plus As Byte
Dim I As Byte
Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Down , Prescale = 256
Set Portd.5
Set Pinb.0
S1 Alias Pind.5
Wl = 0
Plus = 0
Zwloka = 0
I = 0
Pwm1b = 0
Do
If S1 = 0 And Wl = 0 Then
Goto Rozjasnij
End If
Loop
Sciemnij:
For I = 255 To 0 Step -1
Pwm1a = I
'Pwm1b = I
Waitms 50
Next I
Pwm1a = 0
Return
Rozjasnij:
For I = 0 To 255
Pwm1a = I
'Pwm1b = I
Waitms 20
Next I
I = 0
Pwm1a = 255
Wl = 1
For Plus = 0 To 1
If S1 = 0 Then Plus = 0
Wait 1
Next Plus
Toggle Pinb.0
Plus = 0
Wl = 0
Goto Sciemnij
Return
Re: Led
Ja bym o zrobił trochę inaczej a mianowicie: Napisał bym podobnie jak u ciebie dwie procedurki do rozjaśniania i gaszenia LED, z tym że jak chcesz to zrobic liniowo względem jasności to wypełnienie musi zmieniać się z kwadratem, kolejne kroki pwm to 1 4 9 16 25 ...... daje to liniowe skoki jasności.
W do loop trzeba zrobić 2 tryby pracy: oczekiwanie i zgaszony. W zalezności od tego sprawdzane są inne rzeczy. Normalnie ukłąd startuje w trybie wygaszenia i sprawdzasz sobie przycisk. Jeśli został wciśnięty to skaczesz do rozjasniania i ustawiasz tryb na 1 czyli oczekiwanie. W tym trybie odliczasz w tył do 0 i jednocześnie sprawdzasz stan czunika, jesli wykryto ruch to wpisujesz do licznika początkową wartość i zliczanie jest od początku. Jednocześnie sprawdzane jest czy licznik = 0 i jeśli tak to skaczesz do gaszenia i ustawiasz tryb 0.
W jaki sposób zrobiłeś ten czujnik ruchu i czy daje on dobre sygnały?
UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.
Dzięki Mirley za podpowiedź.
Dzięki Mirley za podpowiedź. To jest takie oczywiste a jednak sam na to nie wpadłem :-)
Co do czujnika to długo szukałem odpowiedniego aż wpadłem na pomysł aby wykorzystać czujnik z
odświeżacza powietrza AirWick. Jest tani mały i do działania podajesz tylko zasilanie i na jednym
z pinów szukasz sygnału z czujnika.
[url]
Mam jeszcze jedno pytanie
Mam jeszcze jedno pytanie dlaczego w tym kodzie
rozjasnienie działa zgodnie z założeniem czyli powoli i płynnie a gaszenie w mgnieniu oka?
Jeżeli te procedurki połącze w jedna to prawidłowo rozjasnia i gasi?
Jaka jest przyczyna?
Re: PWM
rozjaśnianie i gaszenie będzie zawsze inaczej wyglądało bo podajesz na PWM liniowy wzrost wartości, a powinienś podać kwadraty wypełnienia aby uzyskać liniową zmianę jasności
UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.
Już sobie poradziłem,
Już sobie poradziłem, rozjaśnia i gasi jednakowo. Zastosowałem złą instrukcję która nie ma powrotu GOTO i program się wysypywał. Oczywiscie powinno być GOSUB.
Jak mogę zrealizować sygnał z czujnika na przerwanie zewnętrzne?
sorrki, napisałem jako
sorrki, napisałem jako niezalogowany.
Re: Czujnik ruchu
Musisz zbadać jaki sygnał wychodzi z czujnika, prawdopodobnie po wykryciu ruchu na którymś wyjściu pojawia się jakiś sygnał.... Potem trzeba za pomocą tranzystorów tak to dopasować żeby był standard 0-5V i podac to na przerwanie zewnętrzne int0
UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.
z sygnałem nie ma problemu,
z sygnałem nie ma problemu, chodzi mi bardziej o stronę programową. Nie wiem jak sie do tego zabrać. Czy w konfiguracji wystarczy wstawić
Jak powinna wyglądać procedura sprawdzająca(otczutyjąca) to przerwanie?
Re: Przerwanie
Dokładnie tak konfiguruje się przerwanie ale ja bym dał rising albo falling żeby na zboczu raczej działało.
Dalej tak samo jak od timera:
gdzie Przzew0 jest etykietą tak samo jak dla timera
UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.
Dzięki wielkie za pomoc.
Dzięki wielkie za pomoc.
Witam, Uporałem się z kodem
Witam,
Uporałem się z kodem na tyle na ile potrafię :-)
Działa dobrze ale po kilku godzinach pracy światło jest na stałe włączone i miga cyklicznie dioda yellow, nie wiem jaka może być przyczyna, wiesza się czy co?
Jeszcze mam pytanie odnosnie przerwań bo skopiowałem Twoje ustawienia i nie wiem jak policzyc aby było tylko co 1 s bez ms.
Re: kod
Nie zagłębiałem się w kod ale mam małe pytanko. Co to jest?
Przy spełnionym warunku procek będzie stał ponad 3 sekundy. Takie było założenie?
Moja strona w powijakach
Zgodnie z założeniem po
Zgodnie z założeniem po naciśnięciu i przytrzymaniu przycisku stopniowo zwiększa się zmienna czas co sygnalizują zapalające sie po kolei diody.
Jeżeli przytrzymam jeszcze dłużej to zmienna czas przyjmuje wartość początkową.