Pomiar pH wody - budowa sterownika do akwarium
- pimowo
- Posty: 392
- Rejestracja: 28 maja 2016, 10:07
Re: Pomiar pH wody - budowa sterownika do akwarium
Może ja nie potrzebnie kombinuję? W tej chwili mam menu zrobione tak, że gdy chcę wejść w menu to klikam SELECT i guzikami LEFT/RIGHT przesuwam pozycję menu, a po najechaniu na wybraną pozycję klikając UP/DOWN zmieniam wartości. Na końcu menu mam "zapisz ustawienia" gdzie po kliknięciu SELECT wszytko się zapisuje i wychodzi do ekranu głównego. Problem z tym jest taki, że menu jest strasznie długie (teraz 20 pozycji, a jeszcze trochę tego dojdzie) i dlatego pomyślałem aby menu podzielić na grupy, aby wchodząc do menu można było się przesuwać po kategoriach, a jak interesuje mnie jakaś zmiana to wchodzę do kategorii i tam dopiero wybieram właściwą opcję do ustawienia.
No nic, będę jeszcze walczył. Dziękuję za kod - takiego sposobu jeszcze nie próbowałem
No nic, będę jeszcze walczył. Dziękuję za kod - takiego sposobu jeszcze nie próbowałem
- niveasoft
- Posty: 1239
- Rejestracja: 17 sie 2015, 12:13
- Kontakt:
Re: Pomiar pH wody - budowa sterownika do akwarium
Łap. Napisałem to w dwie godzinki przy jednym kubku kawy więc pewnie można to dopieścić.
W menu masz trzy główne tematy (oczywiście możesz teraz rozbudować). Po wejściu w temat masz trzy podtematy. Każdy podtemat pozwala ustawić jedną ze zmiennych "Myvars(10)" czyli na razie Myvars(1) do Myvars(9).
W menu można się cofać. Pokazuje napis "ZAPISANO", ale nie zapisuje niczego do Eeprom (na razie) bo to przykład.
Te wszystkie napisy w Menu oczywiście możesz zmienić pod siebie i wtedy łatwiej Tobie będzie zrozumieć to Menu.
Program ma teraz 14 procent flash, ale ma już większość kodu i rozbudowanie go o kolejne podmenu to już prawie nic nie kosztuje i rozrastać się nie będzie.
Co było dla Ciebie ważne - program główny cały czas się wykonuje w tle - widać to po powrocie z menu - po prostu sekundy nalicza w tle
Jako że nie mam już tego LCDshielda bo był mi przysłany do oprogramowania (może kiedyś sobie kupię) to musiałem dodać sobie do kodu pięć przycisków.
Żeby jednak nie mieszać Tobie w głowie to kod jest dokładnie kompatybilny z tym Twoim. napisałem funkcję która mi zwraca te same wartości co u Ciebie więc tylko wywal przyciski i podmień funkcję Read_keypad()
Teraz zapierdzielam do swojej roboty bo nie wiadomo w co ręce włożyć
[EDIT1] Np. pierwsza optymalizacja która przed publikacją mi się nie nasunęła to tam gdzie pisze Select case 11,12,13,21,22,23,31,32,33 można w niektórych miejscach napisać: Case 11 To 13, Case 21 To 23, Case 31 To 33 itd.
W menu masz trzy główne tematy (oczywiście możesz teraz rozbudować). Po wejściu w temat masz trzy podtematy. Każdy podtemat pozwala ustawić jedną ze zmiennych "Myvars(10)" czyli na razie Myvars(1) do Myvars(9).
W menu można się cofać. Pokazuje napis "ZAPISANO", ale nie zapisuje niczego do Eeprom (na razie) bo to przykład.
Te wszystkie napisy w Menu oczywiście możesz zmienić pod siebie i wtedy łatwiej Tobie będzie zrozumieć to Menu.
Program ma teraz 14 procent flash, ale ma już większość kodu i rozbudowanie go o kolejne podmenu to już prawie nic nie kosztuje i rozrastać się nie będzie.
Co było dla Ciebie ważne - program główny cały czas się wykonuje w tle - widać to po powrocie z menu - po prostu sekundy nalicza w tle
Jako że nie mam już tego LCDshielda bo był mi przysłany do oprogramowania (może kiedyś sobie kupię) to musiałem dodać sobie do kodu pięć przycisków.
Żeby jednak nie mieszać Tobie w głowie to kod jest dokładnie kompatybilny z tym Twoim. napisałem funkcję która mi zwraca te same wartości co u Ciebie więc tylko wywal przyciski i podmień funkcję Read_keypad()
Teraz zapierdzielam do swojej roboty bo nie wiadomo w co ręce włożyć
[EDIT1] Np. pierwsza optymalizacja która przed publikacją mi się nie nasunęła to tam gdzie pisze Select case 11,12,13,21,22,23,31,32,33 można w niektórych miejscach napisać: Case 11 To 13, Case 21 To 23, Case 31 To 33 itd.
Code: [Zaznacz cały] [Rozwiń/Zwiń]
- $regfile = "m328pdef.dat"
- $crystal = 16000000
- $hwstack = 64
- $swstack = 32
- $framesize = 128
- debug on
- Config Submode = New
- Config Timer0 = Timer , Prescale = 1024 , Clear_timer = 1 : Compare0a = 155 '10ms @16MHz
- Config Adc = Single , Prescaler = Auto , Reference = Avcc
- Config Lcdpin = Pin , Db4 = Portd.4 , Db5 = Portd.5 , Db6 = Portd.6 , Db7 = Portd.7 , E = Portd.3 , Rs = Portd.2
- Config Lcd = 16x2
- Cursor Off , Noblink
- Cls
- '---zmienne programu
- 'czas
- Dim 100ms As Byte , 1s As Byte
- Dim Seconds As Word , New_key As Byte 'na potrzeby demo
- 'klawiatura
- Dim Old_key As Byte , Key_cnt As Byte , Key As Byte
- Dim Adc_read_key As Word , Read_key As Byte , Key_val As Byte
- Const Sw_prawo = 1
- Const Sw_gora = 2
- Const Sw_dol = 3
- Const Sw_lewo = 4
- Const Sw_select = 5
- 'menu
- Dim Refresh As Byte , Menu_flag As Byte , Menu_pos As Byte , Menu_topic As Byte , Podmenu_topic As Byte
- Dim New_page As Byte , Mem_pos As Byte , Var_idx As Byte , Myvars(10) As Byte
- New_page = 1 'odswiez od razu
- Menu_topic = 1
- Podmenu_topic = 1
- 'klawiatura by BARTek na potrzeby testów
- '---------------------------------------------
- Config Portc = &B00000000 : Portc = &B1111110
- '---------------------------------------------
- Function Read_keypad() As Byte
- 'klawiatura by BARTek na potrzeby testów
- '---------------------------------------------
- New_key = 0
- Debounce Pinc.5 , 0 , Prawo_sub , Sub
- Debounce Pinc.4 , 0 , Gora_sub , Sub
- Debounce Pinc.3 , 0 , Dol_sub , Sub
- Debounce Pinc.2 , 0 , Lewo_sub , Sub
- Debounce Pinc.1 , 0 , Select_sub , Sub
- '---------------------------------------------
- Read_keypad = New_key
- End Function
- Sub Policz_menu
- Mem_pos = Menu_pos
- Menu_pos = Menu_pos * 10
- Menu_pos = Menu_pos + Podmenu_topic
- New_page = 1
- Select Case Menu_pos
- Case 11 : Var_idx = 1
- Case 12 : Var_idx = 2
- Case 13 : Var_idx = 3
- Case 21 : Var_idx = 4
- Case 22 : Var_idx = 5
- Case 23 : Var_idx = 6
- Case 31 : Var_idx = 7
- Case 32 : Var_idx = 8
- Case 33 : Var_idx = 9
- End Select
- End Sub
- Sub Show_var
- Locate 2 , 8 : Lcd Myvars(var_idx) ; " "
- End Sub
- Sub Incr_var
- Incr Myvars(var_idx)
- If Myvars(var_idx) > 9 Then Myvars(var_idx) = 0
- End Sub
- Sub Decr_var
- Decr Myvars(var_idx)
- If Myvars(var_idx) > 9 Then Myvars(var_idx) = 9
- End Sub
- Sub Mem_this
- Cls : Locate 2 , 4 : Lcd "ZAPISANO!"
- Waitms 750 : Menu_pos = Mem_pos 'wróć do menu
- New_page = 1
- End Sub
- Do
- If Tifr0.ocf0a = 1 Then '-[ co 10ms ]-
- Tifr0.ocf0a = 1
- Key = Read_keypad()
- If Key <> 0 Then
- Select Case Key
- Case Sw_prawo
- If Menu_flag = 1 Then
- Select Case Menu_pos
- Case 0
- Incr Menu_topic : If Menu_topic > 3 Then Menu_topic = 0
- New_page = 1
- Case 1
- Incr Podmenu_topic : If Podmenu_topic > 3 Then Podmenu_topic = 0
- New_page = 1
- Case 2
- Incr Podmenu_topic : If Podmenu_topic > 3 Then Podmenu_topic = 0
- New_page = 1
- Case 3
- Incr Podmenu_topic : If Podmenu_topic > 3 Then Podmenu_topic = 0
- New_page = 1
- End Select
- End If
- Case Sw_gora
- If Menu_flag = 1 Then
- Select Case Menu_pos
- Case 11 : Incr_var
- Case 12 : Incr_var
- Case 13 : Incr_var
- Case 21 : Incr_var
- Case 22 : Incr_var
- Case 23 : Incr_var
- Case 31 : Incr_var
- Case 32 : Incr_var
- Case 33 : Incr_var
- End Select
- End If
- Case Sw_dol
- If Menu_flag = 1 Then
- Select Case Menu_pos
- Case 11 : Decr_var
- Case 12 : Decr_var
- Case 13 : Decr_var
- Case 21 : Decr_var
- Case 22 : Decr_var
- Case 23 : Decr_var
- Case 31 : Decr_var
- Case 32 : Decr_var
- Case 33 : Decr_var
- End Select
- End If
- Case Sw_lewo
- If Menu_flag = 1 Then
- Select Case Menu_pos
- Case 0
- Decr Menu_topic : If Menu_topic > 3 Then Menu_topic = 3
- New_page = 1
- Case 1
- Decr Podmenu_topic : If Podmenu_topic > 3 Then Podmenu_topic = 3
- New_page = 1
- Case 2
- Decr Podmenu_topic : If Podmenu_topic > 3 Then Podmenu_topic = 3
- New_page = 1
- Case 3
- Decr Podmenu_topic : If Podmenu_topic > 3 Then Podmenu_topic = 3
- New_page = 1
- End Select
- End If
- Case Sw_select 'klawisz wyboru/zatwierdzania
- 'zawsze nowa plansza
- New_page = 1
- If Menu_flag = 0 Then
- Menu_flag = 1
- Else 'jestesmy w menu
- Select Case Menu_pos
- Case 0
- Select Case Menu_topic
- Case 0
- Menu_flag = 0
- Case 1 To 3 : Menu_pos = Menu_topic
- End Select
- Case 1
- Select Case Podmenu_topic
- Case 0 : Menu_pos = 0 'powrót do menu gł.
- Case 1 To 3 : Call Policz_menu() 'idź->11,12,13
- End Select
- Case 2
- Select Case Podmenu_topic
- Case 0 : Menu_pos = 0 'powrót do menu gł
- Case 1 To 3 : Call Policz_menu() 'idź->21,22,23 .
- End Select
- Case 3
- Select Case Podmenu_topic
- Case 0 : Menu_pos = 0 'powrót do menu gł.
- Case 1 To 3 : Call Policz_menu() 'idź->31,32,33
- End Select
- Case 11
- Call Mem_this()
- Case 12
- Call Mem_this()
- Case 13
- Call Mem_this()
- Case 21
- Call Mem_this()
- Case 22
- Call Mem_this()
- Case 23
- Call Mem_this()
- Case 31
- Call Mem_this()
- Case 32
- Call Mem_this()
- Case 33
- Call Mem_this()
- End Select
- End If
- End Select
- Refresh = 1 'zawsze od razu odświez po przycisku
- End If
- If 100ms < 9 Then
- Incr 100ms
- Else '-[ co 100ms ]-
- 100ms = 0
- If 1s < 9 Then
- Incr 1s
- Else '-[ co 1s ]-
- 1s = 0
- Incr Seconds 'niezaleznie od tego czy jesteśmy w Menu program się wykonuje
- Refresh = 1
- End If
- End If
- End If
- If Refresh = 1 Then
- If New_page = 1 Then 'to wyswietla się tylko raz
- New_page = 0 : Cls
- If Menu_flag = 0 Then
- Lcd "Czas:"
- Else
- Select Case Menu_pos
- Case 0
- Locate 1 , 4 : Lcd "MAIN MENU"
- Locate 2 , 1
- Select Case Menu_topic
- Case 0 : Lcd "Exit menu"
- Case 1 : Lcd "1.Menu czegos 1"
- Case 2 : Lcd "2.Menu czegos 2"
- Case 3 : Lcd "3.Menu czegos 3"
- End Select
- Case 1
- Locate 1 , 4 : Lcd "PODMENU 1"
- Locate 2 , 1
- Select Case Podmenu_topic
- Case 0 : Lcd "Back"
- Case 1 : Lcd " Var " ; Menu_topic ; "." ; Podmenu_topic
- Case 2 : Lcd " Var " ; Menu_topic ; "." ; Podmenu_topic
- Case 3 : Lcd " Var " ; Menu_topic ; "." ; Podmenu_topic
- End Select
- Case 2
- Locate 1 , 4 : Lcd "PODMENU 2"
- Locate 2 , 1
- Select Case Podmenu_topic
- Case 0 : Lcd "Back"
- Case 1 : Lcd " Var " ; Menu_topic ; "." ; Podmenu_topic
- Case 2 : Lcd " Var " ; Menu_topic ; "." ; Podmenu_topic
- Case 3 : Lcd " Var " ; Menu_topic ; "." ; Podmenu_topic
- End Select
- Case 3
- Locate 1 , 4 : Lcd "PODMENU 3"
- Locate 2 , 1
- Select Case Podmenu_topic
- Case 0 : Lcd "Back"
- Case 1 : Lcd " Var " ; Menu_topic ; "." ; Podmenu_topic
- Case 2 : Lcd " Var " ; Menu_topic ; "." ; Podmenu_topic
- Case 3 : Lcd " Var " ; Menu_topic ; "." ; Podmenu_topic
- End Select
- Case 11
- Locate 1 , 1 : Lcd "Set Var " ; Menu_topic ; "." ; Podmenu_topic
- Case 12
- Locate 1 , 1 : Lcd "Set Var " ; Menu_topic ; "." ; Podmenu_topic
- Case 13
- Locate 1 , 1 : Lcd "Set Var " ; Menu_topic ; "." ; Podmenu_topic
- Case 21
- Locate 1 , 1 : Lcd "Set Var " ; Menu_topic ; "." ; Podmenu_topic
- Case 22
- Locate 1 , 1 : Lcd "Set Var " ; Menu_topic ; "." ; Podmenu_topic
- Case 23
- Locate 1 , 1 : Lcd "Set Var " ; Menu_topic ; "." ; Podmenu_topic
- Case 31
- Locate 1 , 1 : Lcd "Set Var " ; Menu_topic ; "." ; Podmenu_topic
- Case 32
- Locate 1 , 1 : Lcd "Set Var " ; Menu_topic ; "." ; Podmenu_topic
- Case 33
- Locate 1 , 1 : Lcd "Set Var " ; Menu_topic ; "." ; Podmenu_topic
- End Select
- End If
- End If
- If Menu_flag = 0 Then 'to wyświetla sie co sekundę lub przy zmianie wartości
- Locate 1 , 6 : Lcd Seconds
- Else
- Select Case Menu_pos
- Case 0 :
- Case 11 : Show_var
- Case 12 : Show_var
- Case 13 : Show_var
- Case 21 : Show_var
- Case 22 : Show_var
- Case 23 : Show_var
- Case 31 : Show_var
- Case 32 : Show_var
- Case 33 : Show_var
- End Select
- End If
- Refresh = 0
- End If
- Key = 0
- Loop
- End
- 'klawiatura by BARTek na potrzeby testów
- '---------------------------------------------
- Prawo_sub:
- New_key = Sw_prawo
- Return
- Gora_sub:
- New_key = Sw_gora
- Return
- Dol_sub:
- New_key = Sw_dol
- Return
- Lewo_sub:
- New_key = Sw_lewo
- Return
- Select_sub:
- New_key = Sw_select
- Return
- '---------------------------------------------
- pimowo
- Posty: 392
- Rejestracja: 28 maja 2016, 10:07
Re: Pomiar pH wody - budowa sterownika do akwarium
Dzięki za kod. Dobrze, że dziś mam pierwszą zmianę, wrócę do domu i będę próbował to rozkminic
Ale tak patrząc na kod to drogi kolego, Ty to potrafisz namieszać człowiekowi w głowie
A tak po za tematem... Bartek dlaczego piszesz w BASCOM, a nie jak większość ludzi w C? Dużo też ludzi mówi, że C jest super i można wszystko w nim zrobić, a BSCOM jest be - chociaż Ty udowadniasz, że w tym języku można zrobić wszystko.
Ja np próbowałem C czy Arduino, ale coś mi to w ogóle nie idzie. W BASCOM mam małe czy duże problemy, ale jakoś to wszytko lepiej się pisze
Ale tak patrząc na kod to drogi kolego, Ty to potrafisz namieszać człowiekowi w głowie
A tak po za tematem... Bartek dlaczego piszesz w BASCOM, a nie jak większość ludzi w C? Dużo też ludzi mówi, że C jest super i można wszystko w nim zrobić, a BSCOM jest be - chociaż Ty udowadniasz, że w tym języku można zrobić wszystko.
Ja np próbowałem C czy Arduino, ale coś mi to w ogóle nie idzie. W BASCOM mam małe czy duże problemy, ale jakoś to wszytko lepiej się pisze
- niveasoft
- Posty: 1239
- Rejestracja: 17 sie 2015, 12:13
- Kontakt:
Re: Pomiar pH wody - budowa sterownika do akwarium
Znam Basic na tyle, że mi jego drobne wady nie przeszkadzają.
Chodzi też o funkcjonalność. Ci którzy uczyli się u Mirka C, potem by napisać aplikację na telefon musieli uczyć się Basica żeby coś napisać w B4A.
Mirek cwaniak, bo kiedyś pisał w Bascom to miał łatwiej
Tak więc mogę sobie napisać coś na AVR`ka w Bascom. Do projektu mogę sobie napisać soft na ESP8266 czy ESP32 w basicu na B4R.
Na tym nie koniec bo mogę sobie napisać soft na PC w VB.NET lub B4J - wszystko w basicu. Nie zapominajmy o sofcie na iOS do którego też napiszę w basicu.
Kiedyś żeby napisać coś na Androida siedziałem tydzień przed Android Studio - nie chciałbym wracać
Arduino i C poznałem po to by móc sobie konwertować potrzebne mi biblioteki. Coś tam wiem o ASM...a zdarzyło mi się kiedyś napisać soft w C na PIC mimo iż mam tez MicroBasic for PIC
Żeby grzebać w moich serwerach VPS musiałem poznać podstawy Linuxa i teraz wszystko robię na nich sam.
Język programowania powinno się wybrać taki który umożliwi zrealizowanie zadania w miarę bezproblemowo.
BTW. Ostatnio, po wielu latach używania, kupiłem licencję na bascomowy AVR-DOS
Teraz projekty z MP3 czy jakieś rejestratory - na legalu
Chodzi też o funkcjonalność. Ci którzy uczyli się u Mirka C, potem by napisać aplikację na telefon musieli uczyć się Basica żeby coś napisać w B4A.
Mirek cwaniak, bo kiedyś pisał w Bascom to miał łatwiej
Tak więc mogę sobie napisać coś na AVR`ka w Bascom. Do projektu mogę sobie napisać soft na ESP8266 czy ESP32 w basicu na B4R.
Na tym nie koniec bo mogę sobie napisać soft na PC w VB.NET lub B4J - wszystko w basicu. Nie zapominajmy o sofcie na iOS do którego też napiszę w basicu.
Kiedyś żeby napisać coś na Androida siedziałem tydzień przed Android Studio - nie chciałbym wracać
Arduino i C poznałem po to by móc sobie konwertować potrzebne mi biblioteki. Coś tam wiem o ASM...a zdarzyło mi się kiedyś napisać soft w C na PIC mimo iż mam tez MicroBasic for PIC
Żeby grzebać w moich serwerach VPS musiałem poznać podstawy Linuxa i teraz wszystko robię na nich sam.
Język programowania powinno się wybrać taki który umożliwi zrealizowanie zadania w miarę bezproblemowo.
BTW. Ostatnio, po wielu latach używania, kupiłem licencję na bascomowy AVR-DOS
Teraz projekty z MP3 czy jakieś rejestratory - na legalu
- Pikczu
- Posty: 392
- Rejestracja: 17 sie 2015, 13:46
- Lokalizacja: Dublin, Ireland
- Kontakt:
Re: Pomiar pH wody - budowa sterownika do akwarium
Kiedy ty na to wszystko masz czas ??
A ten bascomowy avr dos co to w ogóle jest?
Ja jak mam 2 godziny w sobotę i może wieczór w niedziele to maks.
A ten bascomowy avr dos co to w ogóle jest?
Ja jak mam 2 godziny w sobotę i może wieczór w niedziele to maks.
- niveasoft
- Posty: 1239
- Rejestracja: 17 sie 2015, 12:13
- Kontakt:
Re: Pomiar pH wody - budowa sterownika do akwarium
AVR-DOS jest do obsługi kart SD, starych MMC i czytałem, że dyski już ludzie też uruchamiali.
Np. do projektów na kolorowych wyświetlaczach to grafiki i fotki trzyma się albo na zewnętrznym flash albo własnie na karcie SD. Do tego potrzeba AVR-DOS.
Jest dołączony do Bascoma, ale jak chcesz coś komuś na tym sprzedać to powinno się wykupić licencję. Dostaje się nawet źródła.
Np. do projektów na kolorowych wyświetlaczach to grafiki i fotki trzyma się albo na zewnętrznym flash albo własnie na karcie SD. Do tego potrzeba AVR-DOS.
Jest dołączony do Bascoma, ale jak chcesz coś komuś na tym sprzedać to powinno się wykupić licencję. Dostaje się nawet źródła.
- pimowo
- Posty: 392
- Rejestracja: 28 maja 2016, 10:07
Re: Pomiar pH wody - budowa sterownika do akwarium
Tak myślałem, że to jest po prostu ulubiony język, a jak się zna wady i zalety to można zrobić wszytko
Strasznie mnie to ciekawiło i musiałem zapytać.
Bartek, siedzę i siedzę nad tym menu i muszę poprosić jeszcze o pomoc bo coś mi to nie idzie
Ułożyłem menu aby się wyświetlało jak bym chciał, ale jak zacząłem dodawać opcje zmiany wartości to mi się wszytko rozjechało.
Kod na tą chwilę wygląda tak:
Code: [Zaznacz cały] [Rozwiń/Zwiń]
- '$regfile = "m328pdef.dat"
- $regfile = "m2560def.dat"
- $crystal = 16000000
- $hwstack = 64
- $swstack = 32
- $framesize = 128
- Debug On
- Config Submode = New
- Config Timer0 = Timer , Prescale = 1024 , Clear_timer = 1 : Compare0a = 155 '10ms @16MHz/1024
- Config Adc = Single , Prescaler = Auto , Reference = Avcc
- 'UNO
- 'Config Lcdpin = Pin , Db4 = Portd.4 , Db5 = Portd.5 , Db6 = Portd.6 , Db7 = Portd.7 , E = Portd.3 , Rs = Portd.2
- 'MEGA
- Config Lcdpin = Pin , Db4 = Portg.5 , Db5 = Porte.3 , Db6 = Porth.3 , Db7 = Porth.4 , E = Porth.6 , Rs = Porth.5
- Config Lcd = 16x2
- Cursor Off , Noblink
- Cls
- 'nietypowe znaki
- Deflcdchar 0 , 6 , 9 , 9 , 6 , 32 , 32 , 32 , 32 'stopien Celciusza
- Deflcdchar 1 , 4 , 10 , 10 , 10 , 17 , 17 , 17 , 14 'termometr
- Deflcdchar 2 , 224 , 224 , 224 , 236 , 242 , 228 , 232 , 254 '2
- Deflcdchar 3 , 224 , 245 , 238 , 255 , 238 , 245 , 224 , 224 'grzanie
- Deflcdchar 4 , 234 , 228 , 245 , 238 , 245 , 228 , 234 , 224 'chlodzenie
- Deflcdchar 5 , 224 , 228 , 228 , 228 , 245 , 238 , 228 , 224 'strzałka w dol
- Deflcdchar 6 , 224 , 228 , 238 , 245 , 228 , 228 , 228 , 224 'strzałka w gore
- Deflcdchar 7 , 238 , 234 , 238 , 224 , 234 , 236 , 234 , 224 'CO2 OK
- 'czas
- Dim 100ms As Byte , 1s As Byte
- Dim Seconds As Word , New_key As Byte 'na potrzeby demo
- 'klawiatura
- Dim Old_key As Byte , Key_cnt As Byte , Key As Byte
- Dim Adc_read_key As Word , Read_key As Byte , Key_val As Byte
- Const Sw_prawo = 1
- Const Sw_gora = 2
- Const Sw_dol = 3
- Const Sw_lewo = 4
- Const Sw_select = 5
- 'menu
- Dim Refresh As Byte , Menu_flag As Byte , Menu_pos As Byte , Menu_topic As Byte , Podmenu_topic As Byte
- Dim New_page As Byte , Mem_pos As Byte , Var_idx As Byte , Myvars(10) As Byte
- New_page = 1 'odswiez od razu
- Menu_topic = 1
- Podmenu_topic = 1
- 'LED Arduino
- Config Portb.7 = Output : Portb.7 = 1 : Led Alias Portb.7
- 'klawiatura by BARTek na potrzeby testów
- '---------------------------------------------
- 'Config Portc = &B00000000 : Portc = &B1111110
- '---------------------------------------------
- 'Function Read_keypad() As Byte
- ' 'klawiatura by BARTek na potrzeby testów
- '---------------------------------------------
- ' New_key = 0
- ' Debounce Pinc.5 , 0 , Prawo_sub , Sub
- ' Debounce Pinc.4 , 0 , Gora_sub , Sub
- ' Debounce Pinc.3 , 0 , Dol_sub , Sub
- ' Debounce Pinc.2 , 0 , Lewo_sub , Sub
- ' Debounce Pinc.1 , 0 , Select_sub , Sub
- '---------------------------------------------
- ' Read_keypad = New_key
- 'End Function
- 'klawiatura ADC
- Function Read_keypad() As Byte
- '--- function with autorepeat
- Local Adc_read_key As Word , Read_key As Byte , Key_val As Byte
- Adc_read_key = Getadc(0)
- Select Case Adc_read_key
- Case 0 To 100 : Read_key = Sw_prawo 'prawo = 0
- Case 101 To 250 : Read_key = Sw_gora 'gora = 145
- Case 251 To 400 : Read_key = Sw_dol 'dol = 330
- Case 401 To 600 : Read_key = Sw_lewo 'lewo = 506
- Case 601 To 850 : Read_key = Sw_select 'select = 743
- Case Is > 851 : Read_key = 0 'brak klawisza = 1023
- End Select
- If Read_key <> 0 Then
- If Old_key = Read_key Then
- If Key_cnt < 20 Then
- Incr Key_cnt
- Key_val = 0
- Else
- Key_cnt = 0
- Key_val = Read_key
- End If
- End If
- Else
- Key_cnt = 15
- Key_val = 0
- End If
- Old_key = Read_key
- Read_keypad = Key_val
- End Function
- Sub Policz_menu
- Mem_pos = Menu_pos
- Menu_pos = Menu_pos * 10
- Menu_pos = Menu_pos + Podmenu_topic
- New_page = 1
- Select Case Menu_pos
- Case 1 : Var_idx = 1
- Case 2 : Var_idx = 2
- Case 3 : Var_idx = 3
- Case 4 : Var_idx = 4
- Case 5 : Var_idx = 5
- Case 21 : Var_idx = 8
- Case 22 : Var_idx = 9
- Case 23 : Var_idx = 10
- Case 31 : Var_idx = 11
- Case 32 : Var_idx = 12
- Case 33 : Var_idx = 13
- End Select
- End Sub
- 'Sub Show_var
- ' Locate 2 , 8 : Lcd Myvars(var_idx) ; " "
- 'End Sub
- 'Sub Incr_var
- ' Incr Myvars(var_idx)
- ' If Myvars(var_idx) > 9 Then Myvars(var_idx) = 0
- 'End Sub
- 'Sub Decr_var
- ' Decr Myvars(var_idx)
- ' If Myvars(var_idx) > 9 Then Myvars(var_idx) = 9
- 'End Sub
- Sub Mem_this
- Cls : Locate 1 , 4 : Lcd "ZAPISANO!"
- Waitms 750 : Menu_pos = Mem_pos 'wróć do menu
- New_page = 1
- End Sub
- 'dane tymczasowe
- Dim Twoje_ph As Single : Twoje_ph = 7.55
- Dim Wymagane_ph As Single : Wymagane_ph = 6.70
- Dim Histereza_ph As Single : Histereza_ph = 0.05
- Dim Ph_buf_4 As Single : Ph_buf_4 = 4.01
- Dim Ph_buf_7 As Single : Ph_buf_7 = 6.98
- Dim Kh As Single : Kh = 3.50
- Dim Kh_co2_min As Single : Kh_co2_min = 15
- Dim Kh_co2_max As Single : Kh_co2_max = 35
- Dim Wymagana_temp As Single : Wymagana_temp = 25.5
- Dim Histereza_temp As Single : Histereza_temp = 0.5
- Dim Lcd_led As Byte : Lcd_led = 1
- Dim Lcd_czas As Byte : Lcd_czas = 120
- Dim Dzwiek As Byte : Dzwiek = 1
- Dim Dzwiek_klawisz As Byte : Dzwiek_klawisz = 1
- Dim Dzwiek_alarm As Byte : Dzwiek_alarm = 1
- Dim Wifi_siec As String * 16 : Wifi_siec = "siecWIFIwifiSIEC"
- Dim Wifi_haslo As String * 16 : Wifi_haslo = "0123456789012345"
- Dim Serwer As Byte : Serwer = 3
- Dim Ip_1 As Byte : Ip_1 = 192
- Dim Ip_2 As Byte : Ip_2 = 168
- Dim Ip_3 As Byte : Ip_3 = 92
- Dim Ip_4 As Byte : Ip_4 = 68
- Dim Serwer_haslo As String * 16 : Serwer_haslo = "a1b2c3d4e5f6g7h8"
- Do
- If Tifr0.ocf0a = 1 Then '-[ co 10ms ]-
- Tifr0.ocf0a = 1
- Key = Read_keypad()
- If Key <> 0 Then
- Select Case Key
- Case Sw_prawo
- If Menu_flag = 1 Then
- Select Case Menu_pos
- Case 0
- Incr Menu_topic : If Menu_topic > 9 Then Menu_topic = 9
- New_page = 1
- Case 1
- Incr Podmenu_topic : If Podmenu_topic > 9 Then Podmenu_topic = 9
- New_page = 1
- Case 2
- Incr Podmenu_topic : If Podmenu_topic > 5 Then Podmenu_topic = 5
- New_page = 1
- Case 3
- Incr Podmenu_topic : If Podmenu_topic > 4 Then Podmenu_topic = 4
- New_page = 1
- Case 4
- Incr Podmenu_topic : If Podmenu_topic > 4 Then Podmenu_topic = 4
- New_page = 1
- Case 5
- Incr Podmenu_topic : If Podmenu_topic > 5 Then Podmenu_topic = 5
- New_page = 1
- Case 6
- Incr Podmenu_topic : If Podmenu_topic > 4 Then Podmenu_topic = 4
- New_page = 1
- Case 7
- Incr Podmenu_topic : If Podmenu_topic > 5 Then Podmenu_topic = 5
- New_page = 1
- End Select
- End If
- Case Sw_gora
- If Menu_flag = 1 Then
- Select Case Menu_pos
- Case 1
- Twoje_ph = Twoje_ph + 0.01
- If Twoje_ph > 9.99 Then Twoje_ph = 9.99
- Case 2
- Wymagane_ph = Wymagane_ph + 0.01
- If Twoje_ph > 9.99 Then Twoje_ph = 9.99
- Case 3
- Histereza_ph = Histereza_ph + 0.01
- If Twoje_ph > 1.99 Then Twoje_ph = 1.99
- Case 4
- Ph_buf_4 = Ph_buf_4 + 0.01
- If Twoje_ph > 4.50 Then Twoje_ph = 4.50
- Case 5
- Ph_buf_7 = Ph_buf_7 + 0.01
- If Twoje_ph > 7.50 Then Twoje_ph = 7.50
- End Select
- End If
- Case Sw_dol
- If Menu_flag = 1 Then
- Select Case Menu_pos
- Case 1
- Twoje_ph = Twoje_ph - 0.01
- If Twoje_ph < 3.99 Then Twoje_ph = 3.99
- Case 2
- Wymagane_ph = Wymagane_ph - 0.01
- If Twoje_ph < 3.99 Then Twoje_ph = 3.99
- Case 3
- Histereza_ph = Histereza_ph - 0.01
- If Twoje_ph < 0.01 Then Twoje_ph = 0.01
- Case 4
- Ph_buf_4 = Ph_buf_4 + 0.01
- If Twoje_ph < 3.50 Then Twoje_ph = 3.50
- Case 5
- Ph_buf_7 = Ph_buf_7 - 0.01
- If Twoje_ph < 6.50 Then Twoje_ph = 6.50
- End Select
- End If
- Case Sw_lewo
- If Menu_flag = 1 Then
- Select Case Menu_pos
- Case 0
- Decr Menu_topic : If Menu_topic < 1 Then Menu_topic = 1
- New_page = 1
- Case 1
- Decr Podmenu_topic : If Podmenu_topic < 1 Then Podmenu_topic = 1
- New_page = 1
- Case 2
- Decr Podmenu_topic : If Podmenu_topic < 1 Then Podmenu_topic = 1
- New_page = 1
- Case 3
- Decr Podmenu_topic : If Podmenu_topic < 1 Then Podmenu_topic = 1
- New_page = 1
- Case 4
- Decr Podmenu_topic : If Podmenu_topic < 1 Then Podmenu_topic = 1
- New_page = 1
- Case 5
- Decr Podmenu_topic : If Podmenu_topic < 1 Then Podmenu_topic = 1
- New_page = 1
- Case 6
- Decr Podmenu_topic : If Podmenu_topic < 1 Then Podmenu_topic = 1
- New_page = 1
- Case 7
- Decr Podmenu_topic : If Podmenu_topic < 1 Then Podmenu_topic = 1
- New_page = 1
- End Select
- End If
- Case Sw_select 'klawisz wyboru/zatwierdzania
- 'zawsze nowa plansza
- New_page = 1
- If Menu_flag = 0 Then
- Menu_flag = 1
- Menu_topic = 1
- Else 'jestesmy w menu
- Select Case Menu_pos
- Case 0
- Select Case Menu_topic
- Case 1 To 8 : Menu_pos = Menu_topic
- Case 9 : Menu_flag = 0
- End Select
- Case 1
- Select Case Podmenu_topic
- Case 1 To 8 : Call Policz_menu() 'idź->11,12,13
- Case 9
- Menu_pos = 0 'powrót do menu gł.
- Podmenu_topic = 1
- End Select
- Case 2
- Select Case Podmenu_topic
- Case 1 To 4 : Call Policz_menu() 'idź->21,22,23
- Case 5
- Menu_pos = 0 'powrót do menu gł.
- Podmenu_topic = 1
- End Select
- Case 3
- Select Case Podmenu_topic
- Case 1 To 3 : Call Policz_menu() 'idź->31,32,33
- Case 4
- Menu_pos = 0 'powrót do menu gł.
- Podmenu_topic = 1
- End Select
- Case 4
- Select Case Podmenu_topic
- Case 1 To 3 : Call Policz_menu() 'idź->31,32,33
- Case 4
- Menu_pos = 0 'powrót do menu gł.
- Podmenu_topic = 1
- End Select
- Case 5
- Select Case Podmenu_topic
- Case 1 To 4 : Call Policz_menu() 'idź->31,32,33
- Case 5
- Menu_pos = 0 'powrót do menu gł.
- Podmenu_topic = 1
- End Select
- Case 6
- Select Case Podmenu_topic
- Case 1 To 3 : Call Policz_menu() 'idź->31,32,33
- Case 4
- Menu_pos = 0 'powrót do menu gł.
- Podmenu_topic = 1 .
- End Select
- Case 7
- Select Case Podmenu_topic
- Case 1 To 4 : Call Policz_menu() 'idź->31,32,33
- Case 5
- Menu_pos = 0 'powrót do menu gł.
- Podmenu_topic = 1
- End Select
- End Select
- End If
- End Select
- Refresh = 1 'zawsze od razu odświez po przycisku
- End If
- If 100ms < 9 Then
- Incr 100ms
- Else '-[ co 100ms ]-
- 100ms = 0
- If 1s < 9 Then
- Incr 1s
- Else '-[ co 1s ]-
- 1s = 0
- Incr Seconds 'niezaleznie od tego czy jesteśmy w Menu program się wykonuje
- Refresh = 1
- Toggle Led
- End If
- End If
- End If
- If Refresh = 1 Then
- If New_page = 1 Then 'to wyswietla się tylko raz
- New_page = 0 : Cls
- If Menu_flag = 0 Then
- Lcd "Czas:"
- Else
- Select Case Menu_pos
- 'menu
- Case 0
- Locate 1 , 1
- Select Case Menu_topic
- Case 1 : Lcd " Opcje "
- Case 2 : Lcd " Stezenie "
- Case 3 : Lcd " Temperatura "
- Case 4 : Lcd " Wyswietlacz "
- Case 5 : Lcd " Dzwiek "
- Case 6 : Lcd " Siec "
- Case 7 : Lcd " Serwer "
- Case 8 : Lcd " Konfiguracja "
- Case 9 : Lcd " Wyjscie "
- End Select
- Locate 2 , 1
- Select Case Menu_topic
- Case 1 : Lcd " pH "
- Case 2 : Lcd " CO" ; Chr(2) ; " "
- Case 3 : Lcd " "
- Case 4 : Lcd " LCD "
- Case 5 : Lcd " "
- Case 6 : Lcd " WiFi "
- Case 7 : Lcd " danych "
- Case 8 : Lcd " domyslna "
- Case 9 : Lcd " z menu "
- End Select
- 'pH
- Case 1
- Locate 1 , 1
- Select Case Podmenu_topic
- Case 1 : Lcd " Twoje pH "
- Case 2 : Lcd " Wymagane pH "
- Case 3 : Lcd " Histereza pH "
- Case 4 : Lcd "Roztwor buforowy"
- Case 5 : Lcd "Roztwor buforowy"
- Case 6 : Lcd " Kalibracja "
- Case 7 : Lcd " Kalibracja "
- Case 8 : Lcd " Zapisz "
- Case 9 : Lcd " Powrot do "
- End Select
- Locate 2 , 1
- Select Case Podmenu_topic
- 'Case 1 : Lcd " " ; Fusing(twoje_ph , "#.##") ; " " 'krok 0.01, zakres 4.99-9.99
- 'Case 2 : Lcd " " ; Fusing(wymagane_ph , "#.##") ; " " 'krok 0.01, zakres 4.99-9.99
- 'Case 3 : Lcd " " ; Fusing(histereza_ph , "#.##") ; " " 'krok 0.01, zakres 0.01-0.99
- 'Case 4 : Lcd " pH 4 = " ; Fusing(ph_buf_4 , "#.##") ; " " 'krok 0.01, zakres 3.50-4.50
- 'Case 5 : Lcd " pH 7 = " ; Fusing(ph_buf_7 , "#.##") ; " " 'krok 0.01, zakres 6.50-7.50
- Case 6 : Lcd " sondy pH 4 " 'przejdz do programu kalibracja pH4
- Case 7 : Lcd " sondy pH 7 " 'przejdz do programu kalibracja pH7
- Case 8 : Lcd " ustawienia "
- Case 9 : Lcd " menu "
- End Select
- 'CO2
- Case 2
- Locate 1 , 1
- Select Case Podmenu_topic
- Case 1 : Lcd " Twardosc wody "
- Case 2 : Lcd " Stezenie CO" ; Chr(2) ; " "
- Case 3 : Lcd " Stezenie CO" ; Chr(2) ; " "
- Case 4 : Lcd " Zapisz "
- Case 5 : Lcd " Powrot do "
- End Select
- Locate 2 , 1
- Select Case Podmenu_topic
- Case 1 : Lcd " TWW(KH) " ; Fusing(kh , "#.##") ; Chr(0) ; "n " 'krok 0.5, zakres 00.0-99.5
- Case 2 : Lcd " min " ; Fusing(kh_co2_min , "#.##") ; "ppm " 'krok 0.1, zakres 00.1-99.9
- Case 3 : Lcd " max " ; Fusing(kh_co2_max , "#.##") ; "ppm " 'krok 0.1, zakres 00.1-99.9
- Case 4 : Lcd " ustawienia "
- Case 5 : Lcd " menu "
- End Select
- 'temperatura
- Case 3
- Locate 1 , 1
- Select Case Podmenu_topic
- Case 1 : Lcd " Temperatura "
- Case 2 : Lcd " Histereza "
- Case 3 : Lcd " Zapisz "
- Case 4 : Lcd " Powrot do "
- End Select
- Locate 2 , 1
- Select Case Podmenu_topic
- Case 1 : Lcd "wymagana " ; Fusing(wymagana_temp , "#.##") ; Chr(0) ; "C " 'krok 0.1, zakres 20.0-35.0
- Case 2 : Lcd " temp. " ; Fusing(histereza_temp , "#.##") ; Chr(0) ; "C " 'krok 0.1, zakres 0.10-9.90
- Case 3 : Lcd " ustawienia "
- Case 4 : Lcd " menu "
- End Select
- 'wyswietlacz
- Case 4
- Locate 1 , 1
- Select Case Podmenu_topic
- Case 1 : Lcd " Podswietlanie "
- Case 2 : Lcd " Podswietlenie "
- Case 3 : Lcd " Zapisz "
- Case 4 : Lcd " Powrot do "
- End Select
- Locate 2 , 1
- Select Case Podmenu_topic
- Case 1
- If Lcd_led = 1 Then
- Lcd " LCD TAK " 'podświetlenie włączone
- Elseif Lcd_led = 2 Then
- Lcd " LCD NIE " 'podświetlenie wyłączone
- Elseif Lcd_led = 3 Then
- Lcd " LCD AUTO " 'auto-wygaszanie podświetlenia
- End If
- Case 2 : Lcd " czas " ; Lcd_czas ; "s " 'krok 1, zakres 1-240
- Case 3 : Lcd " ustawienia "
- Case 4 : Lcd " menu "
- End Select
- 'dzwiek
- Case 5
- Locate 1 , 1
- Select Case Podmenu_topic
- Case 1 : Lcd "Dzwiek klawiszy "
- Case 2 : Lcd " Dzwiek alarmu "
- Case 3 : Lcd "Wylacz wszytkie "
- Case 4 : Lcd " Zapisz "
- Case 5 : Lcd " Powrot do "
- End Select
- Locate 2 , 1
- Select Case Podmenu_topic
- Case 1
- If Dzwiek_klawisz = 1 Then
- Lcd " TAK "
- Else
- Lcd " NIE "
- End If
- Case 2
- If Dzwiek_alarm = 1 Then
- Lcd " TAK "
- Else
- Lcd " NIE "
- End If
- Case 3
- If Dzwiek_alarm = 1 Then
- Lcd " TAK "
- Else
- Lcd " NIE "
- Dzwiek_klawisz = 0
- Dzwiek_alarm = 0
- End If
- Case 4 : Lcd " ustawienia "
- Case 5 : Lcd " menu "
- End Select
- 'siec
- Case 6
- Locate 1 , 1
- Select Case Podmenu_topic
- Case 1 : Lcd " SSID "
- Case 2 : Lcd " Haslo "
- Case 3 : Lcd " Zapisz "
- Case 4 : Lcd " Powrot do "
- End Select
- Locate 2 , 1
- Select Case Podmenu_topic
- Case 1 : Lcd Wifi_siec 'mruganie ustawianej wartosci - zakres znaków ASCII 32-126
- Case 2 : Lcd Wifi_haslo 'mruganie ustawianej wartosci - zakres znaków ASCII 32-126
- Case 3 : Lcd " ustawienia "
- Case 4 : Lcd " menu "
- End Select
- 'serwer
- Case 7
- Locate 1 , 1
- Select Case Podmenu_topic
- Case 1 : Lcd " Serwer "
- Case 2 : Lcd " Serwer IP "
- Case 3 : Lcd "Haslo/klucz API "
- Case 4 : Lcd " Zapisz "
- Case 5 : Lcd " Powrot do "
- End Select
- Locate 2 , 1
- Select Case Podmenu_topic
- Case 1
- If Serwer = 1 Then
- Lcd " NetTemp "
- Elseif Serwer = 2 Then
- Lcd " Domoticz "
- Elseif Serwer = 3 Then
- Lcd " ThingSpeak "
- End If
- Case 2 : Lcd " " ; Ip_1 ; "." ; Ip_2 ; "." ; Ip_3 ; "." ; Ip_4 ; " " 'mruganie ustawianego czlonu IP - zakres 0-255
- Case 3 : Lcd Serwer_haslo ; " " 'mruganie ustawianej wartosci - zakres znaków ASCI 32-127
- Case 4 : Lcd " ustawienia "
- Case 5 : Lcd " menu "
- End Select
- End Select
- End If
- End If
- If Menu_flag = 0 Then 'to wyświetla sie co sekundę lub przy zmianie wartości
- Locate 1 , 6 : Lcd Seconds
- Else
- Select Case Menu_pos
- Case 1
- Locate 2 , 1 : Lcd " " ; Fusing(twoje_ph , "#.##") ; " "
- Case 2
- Locate 2 , 1 : Lcd " " ; Fusing(wymagane_ph , "#.##") ; " "
- Case 3
- Locate 2 , 1 : Lcd " " ; Fusing(histereza_ph , "#.##") ; " "
- Case 4
- Locate 2 , 1 : Lcd " pH 4 = " ; Fusing(ph_buf_4 , "#.##") ; " "
- Case 5
- Locate 2 , 1 : Lcd " pH 7 = " ; Fusing(ph_buf_7 , "#.##") ; " "
- ' Case 12 : Show_var
- ' Case 13 : Show_var
- ' Case 14 : Show_var
- ' Case 15 : Show_var
- ' Case 16 : Show_var
- ' Case 17 : Show_var
- ' Case 21 : Show_var
- ' Case 22 : Show_var
- ' Case 23 : Show_var
- ' Case 31 : Show_var
- ' Case 32 : Show_var
- ' Case 33 : Show_var
- End Select
- End If
- Refresh = 0
- End If
- Key = 0
- Loop
- End
- 'klawiatura by BARTek na potrzeby testów
- '---------------------------------------------
- Prawo_sub:
- New_key = Sw_prawo
- Return
- Gora_sub:
- New_key = Sw_gora
- Return
- Dol_sub:
- New_key = Sw_dol
- Return
- Lewo_sub:
- New_key = Sw_lewo
- Return
- Select_sub:
- New_key = Sw_select
- Return
- '---------------------------------------------
1. ekran główny
- klikam select to wchodzę do menu
2. ekran menu
- klikam prawo/lewo przemieszczam się po menu
- aby wejść do któregoś podmenu klikam select
- gdy dojdę do końca listy menu to mam opcję "wyjdź z menu"
3. ekran podmenu
- klikam prawo/lewo przemieszczam się po menu
- aby zmienić wybraną wartość klikam góra/dól
- gdy dojdę do końca listy menu to mam opcję "powrót do menu"
DO TEGO MIEJSCA JEST OK - zrobione
Nie wiem jak zmieniać wartości (góra/dół) wybranego podmenu
- niveasoft
- Posty: 1239
- Rejestracja: 17 sie 2015, 12:13
- Kontakt:
Re: Pomiar pH wody - budowa sterownika do akwarium
Żebyś tak wszystkiego na tacy nie dostał, a przy okazji czegoś się nauczył to pokażę jak ja do takich zagadnień podchodzę.
Ewidentnie wyświetlasz, nie te dane w nie tych miejscach a o synchronizacji danych z przyciskami nie wspomnę
Jak się gubisz to dodajesz sobie w kodzie jedną stałą (nazwa dowolna) np. Const Cdbg = 1
Potem piszesz kod warunkowy który sie skompiluje tylko wtedy kiedy ta stała ma wartość 1. Czyli jak na końcu zmienisz na 0 to to sie samo usunie z kodu.
Tutaj, pod koniec kodu , tam gdzie wyświetla co sekundę, dodałem sobie coś takiego:
Oczywiście coś podobnego można wywalić na terminal.
To pokazuje na wyświetlaczu w którym akurat menu jesteś i w którym podmenu. To pozwala zsynchronizować to co akurat wyświetlasz jako zmienne "do zmiany" i nimi sterować klawiszami UP/DN.
Może to Tobie pomoże Podobno mądrej głowie dość po słowie
Ewidentnie wyświetlasz, nie te dane w nie tych miejscach a o synchronizacji danych z przyciskami nie wspomnę
Jak się gubisz to dodajesz sobie w kodzie jedną stałą (nazwa dowolna) np. Const Cdbg = 1
Potem piszesz kod warunkowy który sie skompiluje tylko wtedy kiedy ta stała ma wartość 1. Czyli jak na końcu zmienisz na 0 to to sie samo usunie z kodu.
Tutaj, pod koniec kodu , tam gdzie wyświetla co sekundę, dodałem sobie coś takiego:
Code: [Zaznacz cały] [Rozwiń/Zwiń]
- #if Cdbg = 1
- Locate 1 , 15 : If Menu_pos < 10 Then Lcd " " : Lcd Menu_pos
- Locate 2 , 15 : If Podmenu_topic < 10 Then Lcd " " : Lcd Podmenu_topic
- #endif
To pokazuje na wyświetlaczu w którym akurat menu jesteś i w którym podmenu. To pozwala zsynchronizować to co akurat wyświetlasz jako zmienne "do zmiany" i nimi sterować klawiszami UP/DN.
Może to Tobie pomoże Podobno mądrej głowie dość po słowie
Nie masz wymaganych uprawnień, aby zobaczyć pliki załączone do tego posta.
- pimowo
- Posty: 392
- Rejestracja: 28 maja 2016, 10:07
Re: Pomiar pH wody - budowa sterownika do akwarium
Dzięki za wskazówkę, będę próbował dalej, może się uda - jak się nie uda, to zrobię menu bez podmenu
- Pikczu
- Posty: 392
- Rejestracja: 17 sie 2015, 13:46
- Lokalizacja: Dublin, Ireland
- Kontakt:
Re: Pomiar pH wody - budowa sterownika do akwarium
Możesz użyć też mojego ulubionego DEBUG
Piszesz debug on na początku softu.
W kodzie debug działa jak print wywala wszytko co jest po debug na port szeregowy.
A jak skończysz zabawę to zmieniasz na początku kodu debug na off.
Efekt podobny jak z # IF (ale nie identyczny)
Piszesz debug on na początku softu.
W kodzie debug działa jak print wywala wszytko co jest po debug na port szeregowy.
A jak skończysz zabawę to zmieniasz na początku kodu debug na off.
Efekt podobny jak z # IF (ale nie identyczny)