- $regfile = "m8def.dat"
- $crystal = 8000000
- $baud = 9600
- $hwstack = 40
- $swstack = 16
- $framesize = 32
- Config Submode = New
- Config Debounce = 250
- Config Serialin = Buffered , Size = 10
- Config Timer0 = Timer , Prescale = 256 'Konfiguracja TIMER0
- On Timer0 Przerwanie1_1s
- Config Timer2 = Timer , Prescale = 256 'Konfiguracja TIMER2
- On Timer2 Przerwanie2_1s
- '*******************
- 'Konfiguracja portów
- '*******************
- Config Portc.0 = Output : Portc.0 = 0 'Wyjścia stan początkowy niski
- Config Portc.1 = Output : Portc.1 = 0
- Config Portc.2 = Output : Portc.2 = 0
- Config Portd.4 = Output : Portd.4 = 0
- Config Pind.2 = Input : Portd.2 = 0
- Config Pind.6 = Input : Portd.6 = 1 'Wejścia podciągnięte do zasilania
- Config Pind.7 = Input : Portd.7 = 1
- Config Pinb.4 = Input : Portb.4 = 1
- Config Pinb.5 = Input : Portb.5 = 1
- '*******
- 'Zmienne
- '*******
- Dim I As Integer
- Dim Znak As Byte
- Dim Get_w1 As Bit
- Dim Get_w2 As Bit
- Dim Licznik_1 As Word
- Dim Licznik_2 As Word
- '************
- 'Nazwy portow
- '************
- Led_1 Alias Portc.0
- Led_2 Alias Portc.1
- Lamp_1 Alias Portc.2
- Lamp_2 Alias Portd.4
- Mode_1 Alias Pind.7
- Mode_2 Alias Pind.6
- W_1 Alias Pinb.5
- W_2 Alias Pinb.4
- Gosub Test_out
- Wait 1
- '*********************
- 'Petla glowna programu
- '*********************
- Enable Interrupts
- 'Readeeprom Lamp_1 , 11
- 'Readeeprom Led_1 , 13
- 'Readeeprom Lamp_2 , 15
- 'Readeeprom Led_2 , 17
- Do
- If Mode_1 = 0 Then
- Debounce W_1 , 0 , Triak_1 , Sub
- End If
- If Mode_2 = 0 Then
- Debounce W_2 , 0 , Triak_2 , Sub
- End If
- If Lamp_1 = 0 Then
- Enable Timer0
- Else
- Disable Timer0
- Set Led_1
- End If
- If Lamp_2 = 0 Then
- Enable Timer2
- Else
- Disable Timer2
- Set Led_2
- End If
- If Get_w1 = 1 Then
- Get_w1 = 0
- Toggle Led_1
- End If
- If Get_w2 = 1 Then
- Get_w2 = 0
- Toggle Led_2
- End If
- '*****************
- 'Obsluga Bluetooth
- '*****************
- If Ischarwaiting() > 0 Then
- Znak = Inkey()
- Select Case Znak
- Case "1" : If Mode_1 = 0 Then Gosub Triak_1
- Znak = 0
- Case "2" : If Mode_2 = 0 Then Gosub Triak_2
- Znak = 0
- End Select
- End If
- Loop
- End
- '**********************
- 'Podprogram oswietlenie
- '**********************
- Triak_1:
- Waitms 150
- Toggle Lamp_1
- Toggle Led_1
- 'Writeeeprom Lamp_1 , 11
- 'Writeeeprom Led_1 , 13
- Return
- Triak_2:
- Waitms 150
- Toggle Lamp_2
- Toggle Led_2
- 'Writeeeprom Lamp_2 , 15
- 'Writeeeprom Led_2 , 17
- Return
- '**************
- 'Test wyjsc OUT
- '**************
- Test_out:
- Waitms 500
- Led_1 = 1
- Lamp_1 = 1
- For I = 0 To 1
- Portc . I = 1
- Waitms 500
- Led_2 = 1
- Lamp_2 = 1
- Portc . I = 0
- Next I
- Waitms 500
- Set Led_1
- Set Lamp_1
- Set Led_2
- Set Lamp_2
- Waitms 500
- Reset Led_1
- Reset Lamp_1
- Reset Led_2
- Reset Lamp_2
- Waitms 500
- Set Led_1
- Set Lamp_1
- Set Led_2
- Set Lamp_2
- Waitms 500
- Reset Led_1
- Reset Led_2
- Reset Lamp_1
- Reset Lamp_2
- Waitms 500
- Set Led_1
- Set Lamp_1
- Set Led_2
- Set Lamp_2
- Waitms 500
- Reset Led_1
- Reset Led_2
- Reset Lamp_1
- Reset Lamp_2
- Return
- '********************
- 'Przerwanie od timer0
- '********************
- Przerwanie1_1s:
- Incr Licznik_1
- If Licznik_1 > 122 Then
- Licznik_1 = 0
- Get_w1 = 1
- End If
- Return
- '********************
- 'Przerwanie od timer2
- '********************
- Przerwanie2_1s:
- Incr Licznik_2
- If Licznik_2 > 122 Then
- Licznik_2 = 0
- Get_w2 = 1
- End If
- Return
Sterownik oświetlenia bluetooth
-
- Posty: 8
- Rejestracja: 18 gru 2016, 17:36
Sterownik oświetlenia bluetooth
Zmontowałem sobie dwukanałowy sterownik oświetlenia bluetooth na mega8, napisałem do niego poniższy kod w Bascom. Wszystko działa jak należy, tylko mam problem z dopisaniem kodu aby sterownik zapamiętywał ostatnie stany wyjść tak aby po wyłączeniu staerownika sterownik wracał do ostatnich stanów wyjść. Jestem początkującym i proszę forumowiczów o pomoc w dokończeniu kodu obsługi eeprom. Serdecznie pozdrawiam i z góry bardzo dziękuję.
Code: [Zaznacz cały] [Rozwiń/Zwiń]
- kulamario
- Posty: 207
- Rejestracja: 17 sie 2015, 20:05
- Lokalizacja: Greystones
- Kontakt:
Re: Sterownik oświetlenia bluetooth
Witam
Używasz wewnętrznej pamięci, więc pamiętaj o żywotności cyklów zapisu/odczytu.
Pewnie mozna to rozwiazac inaczej
Skoro to jest sterownik lamp to czemu atmega traci zasilanie?
Używasz wewnętrznej pamięci, więc pamiętaj o żywotności cyklów zapisu/odczytu.
Pewnie mozna to rozwiazac inaczej
Skoro to jest sterownik lamp to czemu atmega traci zasilanie?
- niveasoft
- Posty: 1216
- Rejestracja: 17 sie 2015, 12:13
- Kontakt:
Re: Sterownik oświetlenia bluetooth
Łap. Powinno działać.
Z tą pamięcią to tak tragicznie nie jest. Jeśli rok ma 365 dni a pamięć ma gwarantowaną zapisywalność 100 tyś to jeśli stan zapamiętasz raz na dzień to Atmega wystarczy na 273 lata Idąc dalej to jak będziesz zapamiętywał dziesięć razy na dzień to starczy na 27 lat... Żeby skrócić ten czas do trzech lat musiałbyś codziennie klikać sto razy
Z tą pamięcią to tak tragicznie nie jest. Jeśli rok ma 365 dni a pamięć ma gwarantowaną zapisywalność 100 tyś to jeśli stan zapamiętasz raz na dzień to Atmega wystarczy na 273 lata Idąc dalej to jak będziesz zapamiętywał dziesięć razy na dzień to starczy na 27 lat... Żeby skrócić ten czas do trzech lat musiałbyś codziennie klikać sto razy
Code: [Zaznacz cały] [Rozwiń/Zwiń]
- $regfile = "m8def.dat"
- $crystal = 8000000
- $baud = 9600
- $hwstack = 40
- $swstack = 16
- $framesize = 32
- Config Submode = New
- Config Debounce = 250
- Config Serialin = Buffered , Size = 10
- Config Timer0 = Timer , Prescale = 256 'Konfiguracja TIMER0
- On Timer0 Przerwanie1_1s
- Config Timer2 = Timer , Prescale = 256 'Konfiguracja TIMER2
- On Timer2 Przerwanie2_1s
- '*******************
- 'Konfiguracja portów
- '*******************
- Config Portc.0 = Output : Portc.0 = 0 'Wyjścia stan początkowy niski
- Config Portc.1 = Output : Portc.1 = 0
- Config Portc.2 = Output : Portc.2 = 0
- Config Portd.4 = Output : Portd.4 = 0
- Config Pind.2 = Input : Portd.2 = 0
- Config Pind.6 = Input : Portd.6 = 1 'Wejścia podciągnięte do zasilania
- Config Pind.7 = Input : Portd.7 = 1
- Config Pinb.4 = Input : Portb.4 = 1
- Config Pinb.5 = Input : Portb.5 = 1
- '*******
- 'Zmienne
- '*******
- Dim I As Integer
- Dim Znak As Byte
- Dim Get_w1 As Bit
- Dim Get_w2 As Bit
- Dim Licznik_1 As Word
- Dim Licznik_2 As Word
- '************
- 'Nazwy portow
- '************
- Led_1 Alias Portc.0
- Led_2 Alias Portc.1
- Lamp_1 Alias Portc.2
- Lamp_2 Alias Portd.4
- Mode_1 Alias Pind.7
- Mode_2 Alias Pind.6
- W_1 Alias Pinb.5
- W_2 Alias Pinb.4
- Gosub Test_out
- Wait 1
- '*********************
- 'Petla glowna programu
- '*********************
- Dim T1 As Eram Byte
- Dim T2 As Eram Byte
- Dim Helpb As Byte
- 'odczytywanie stanów przy starcie
- Helpb = T1
- If Helpb > 1 Then Helpb = 0
- Lamp_1 = Helpb
- Led_1 = Helpb
- Helpb = T2
- If Helpb > 1 Then Helpb = 0
- Lamp_2 = Helpb
- Led_2 = Helpb
- Enable Interrupts
- Do
- If Mode_1 = 0 Then
- Debounce W_1 , 0 , Triak_1 , Sub
- End If
- If Mode_2 = 0 Then
- Debounce W_2 , 0 , Triak_2 , Sub
- End If
- If Lamp_1 = 0 Then
- Enable Timer0
- Else
- Disable Timer0
- Set Led_1
- End If
- If Lamp_2 = 0 Then
- Enable Timer2
- Else
- Disable Timer2
- Set Led_2
- End If
- If Get_w1 = 1 Then
- Get_w1 = 0
- Toggle Led_1
- End If
- If Get_w2 = 1 Then
- Get_w2 = 0
- Toggle Led_2
- End If
- '*****************
- 'Obsluga Bluetooth
- '*****************
- If Ischarwaiting() > 0 Then
- Znak = Inkey()
- Select Case Znak
- Case "1" : If Mode_1 = 0 Then Gosub Triak_1
- Znak = 0
- Case "2" : If Mode_2 = 0 Then Gosub Triak_2
- Znak = 0
- End Select
- End If
- Loop
- End
- '**********************
- 'Podprogram oswietlenie
- '**********************
- Triak_1:
- Waitms 150
- Toggle Lamp_1
- Toggle Led_1
- T1 = Lamp_1 'zapamiętywanie stanu
- Return
- Triak_2:
- Waitms 150
- Toggle Lamp_2
- Toggle Led_2
- T2 = Lamp_2 'zapamiętywanie stanu
- Return
- '**************
- 'Test wyjsc OUT
- '**************
- Test_out:
- Waitms 500
- Led_1 = 1
- Lamp_1 = 1
- For I = 0 To 1
- Portc . I = 1
- Waitms 500
- Led_2 = 1
- Lamp_2 = 1
- Portc . I = 0
- Next I
- Waitms 500
- Set Led_1
- Set Lamp_1
- Set Led_2
- Set Lamp_2
- Waitms 500
- Reset Led_1
- Reset Lamp_1
- Reset Led_2
- Reset Lamp_2
- Waitms 500
- Set Led_1
- Set Lamp_1
- Set Led_2
- Set Lamp_2
- Waitms 500
- Reset Led_1
- Reset Led_2
- Reset Lamp_1
- Reset Lamp_2
- Waitms 500
- Set Led_1
- Set Lamp_1
- Set Led_2
- Set Lamp_2
- Waitms 500
- Reset Led_1
- Reset Led_2
- Reset Lamp_1
- Reset Lamp_2
- Return
- '********************
- 'Przerwanie od timer0
- '********************
- Przerwanie1_1s:
- Incr Licznik_1
- If Licznik_1 > 122 Then
- Licznik_1 = 0
- Get_w1 = 1
- End If
- Return
- '********************
- 'Przerwanie od timer2
- '********************
- Przerwanie2_1s:
- Incr Licznik_2
- If Licznik_2 > 122 Then
- Licznik_2 = 0
- Get_w2 = 1
- End If
- Return
-
- Posty: 8
- Rejestracja: 18 gru 2016, 17:36
Re: Sterownik oświetlenia bluetooth
Niestety Pana kod nie działa. Problem z kompilacją kodu. Jest jakiś błąd przy zapisie zmiennej T1 do eeprom. W podprogramie triak1: linia kodu T1 = Lamp_1. Kompilator wyrzuca błąd 253 i 105 (105- nie potrafię zapisać wartości bitowej, 253-ta zmienna nie może być w pamięci eram). Próbowałem zastąpić zmienną T1 zmienną helpb ale to nic nie dało. Sterownik nadal nie zapamiętuje stanu wyjść. Przepraszam za kłopot i proszę o pomoc. Pozdrawiam serdecznie
- niveasoft
- Posty: 1216
- Rejestracja: 17 sie 2015, 12:13
- Kontakt:
Re: Sterownik oświetlenia bluetooth
Powinno pomóc coś takiego i oczywiście analogicznie w tym drugim Sub podobnie.
Poprzednio odpisywałem chyba w nocy i już o tym zapomniałem
Poprzednio odpisywałem chyba w nocy i już o tym zapomniałem
Code: [Zaznacz cały] [Rozwiń/Zwiń]
- Triak_1:
- Waitms 150
- Toggle Lamp_1
- Toggle Led_1
- Helpb = Lamp_1 'odczyt do zmiennej pomocniczej
- T1 = Helpb 'zapamiętywanie stanu
- Return
-
- Posty: 8
- Rejestracja: 18 gru 2016, 17:36
Re: Sterownik oświetlenia bluetooth
Dziękuję serdecznie. Sterownik działa jak należy. Wkrótce umieszczę jego projekt na elektrodzie. Pozdrawiam serdecznie
- pimowo
- Posty: 392
- Rejestracja: 28 maja 2016, 10:07
Re: Sterownik oświetlenia bluetooth
A dlaczego nie tutaj?
-
- Posty: 99
- Rejestracja: 20 lis 2016, 20:21
Re: Sterownik oświetlenia bluetooth
Tak właściwie to czemu chcesz zapamiętać te ustawienia, nie lepiej zrobić aby wszystkie wyjścia po załączeniu sterownika były wyłączone. Co zrobisz jak zaniknie zasilanie przy włączonym świetle a ty będziesz musiał wyjść, jak wróci to wszystko będzie świecić.
-
- Posty: 8
- Rejestracja: 18 gru 2016, 17:36
Re: Sterownik oświetlenia bluetooth
Widzisz tego nie wziąłem pod uwagę. Jest w tym jakaś logika. Brałem tylko pod uwagę to iż jak braknie zasilania żeby z wrotem nie podchodzić do wyłącznika żeby zaświecić światło gdyż sterownik będzie montowany w puszce podtynkowej pod wyłącznikiem. Dziękuję za uwagę