Pomiar pH wody - budowa sterownika do akwarium
- Pikczu
- Posty: 392
- Rejestracja: 17 sie 2015, 13:46
- Lokalizacja: Dublin, Ireland
- Kontakt:
Re: Pomiar pH wody - budowa sterownika do akwarium
Zdecydowanie celest-case to jedna z najlepszych metod.
czekaj sprawdzę to w symulatorze.
czekaj sprawdzę to w symulatorze.
- pimowo
- Posty: 392
- Rejestracja: 28 maja 2016, 10:07
Re: Pomiar pH wody - budowa sterownika do akwarium
Dzięki @Pikczu
Tak teraz sobie przypomniałem, że gdzieś w domu mam moduł ADS1015 - może dałoby się go użyć do tego miesięcznego pomiaru pH?
Tak teraz sobie przypomniałem, że gdzieś w domu mam moduł ADS1015 - może dałoby się go użyć do tego miesięcznego pomiaru pH?
- Pikczu
- Posty: 392
- Rejestracja: 17 sie 2015, 13:46
- Lokalizacja: Dublin, Ireland
- Kontakt:
Re: Pomiar pH wody - budowa sterownika do akwarium
Słaby postęp mam na razie próbuje zrozumieć co autor miał na myśli
Ale dam rade
______________________edit_______________
Ok kumam o co biega zmienię co nieco ale dopiero rano bo już czas iść spać.
Ale dam rade
______________________edit_______________
Ok kumam o co biega zmienię co nieco ale dopiero rano bo już czas iść spać.
- Pikczu
- Posty: 392
- Rejestracja: 17 sie 2015, 13:46
- Lokalizacja: Dublin, Ireland
- Kontakt:
Re: Pomiar pH wody - budowa sterownika do akwarium
Pimowo jaki jest schemat tej klawiatury?
Właśnie do tego siadam i schemat by mi ciut pomógł.
Właśnie do tego siadam i schemat by mi ciut pomógł.
- niveasoft
- Posty: 1239
- Rejestracja: 17 sie 2015, 12:13
- Kontakt:
Re: Pomiar pH wody - budowa sterownika do akwarium
Pisał że to LCDshield więc pewnie klawiatura drabinkowa na ADC(0) "lewo, prawo, góra, dół i select"
viewtopic.php?f=13&t=138
Funkcja czytająca zwraca takie wartości do zmiennej Key:
Const Sw_r = 1
Const Sw_u = 2
Const Sw_d = 3
Const Sw_l = 4
Const Sw_s = 5
viewtopic.php?f=13&t=138
Funkcja czytająca zwraca takie wartości do zmiennej Key:
Const Sw_r = 1
Const Sw_u = 2
Const Sw_d = 3
Const Sw_l = 4
Const Sw_s = 5
- pimowo
- Posty: 392
- Rejestracja: 28 maja 2016, 10:07
Re: Pomiar pH wody - budowa sterownika do akwarium
@niveasoft już dał linka (szybki jak błyskawica) to jest dokładnie ten kod który sobie użyczyłem
TU jest schemat elektryczny.
Klawiatura działa jak najbardziej OK, mi chodzi tylko (i aż) jak zbudować kilka poziomów menu - to co pokazałem wcześniej prawie działa, ale nie wiem dlaczego nie chce działać jak należy
TU jest schemat elektryczny.
Klawiatura działa jak najbardziej OK, mi chodzi tylko (i aż) jak zbudować kilka poziomów menu - to co pokazałem wcześniej prawie działa, ale nie wiem dlaczego nie chce działać jak należy
- Pikczu
- Posty: 392
- Rejestracja: 17 sie 2015, 13:46
- Lokalizacja: Dublin, Ireland
- Kontakt:
Re: Pomiar pH wody - budowa sterownika do akwarium
Aha kumam ona jest podciągnięta to +5V jeśli nic nie wciśnięte.
OK zobaczę może coś wymyślę.
OK zobaczę może coś wymyślę.
- Pikczu
- Posty: 392
- Rejestracja: 17 sie 2015, 13:46
- Lokalizacja: Dublin, Ireland
- Kontakt:
Re: Pomiar pH wody - budowa sterownika do akwarium
Coś tam skrobnąłem ale tylko jeden poziom.
Można to zrobić na CALL ale w tedy każde głębsze wejście w menu będzie odkładało na stos aż w końcu program się wysypie.
Można tez zrobić na GOTO jako label , wtedy nie będziemy odkładać na stos za każdym razem.
Kod robi się spory w szybkim tempie.
Nie miałem zbyt wiele czasu wiec wklejam co jest.
Prosze mnie nie wyszydzic projekt w protesuie 8.8 ale wysypuje sie co jakies 30s
Przypomniało mi się iż parę lat temu ktoś stworzył program do robienia menu w bascomie oto on:
http://mat.midlight.eu/index.php/Simple ... 11.2017.29
Można to zrobić na CALL ale w tedy każde głębsze wejście w menu będzie odkładało na stos aż w końcu program się wysypie.
Można tez zrobić na GOTO jako label , wtedy nie będziemy odkładać na stos za każdym razem.
Kod robi się spory w szybkim tempie.
Nie miałem zbyt wiele czasu wiec wklejam co jest.
Prosze mnie nie wyszydzic projekt w protesuie 8.8 ale wysypuje sie co jakies 30s
Code: [Zaznacz cały] [Rozwiń/Zwiń]
- '$sim
- $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 Scl = Portc.5
- 'Config Sda = Portc.4
- 'I2cinit : Config Twi = 100000
- '$lib "bl_Lcd_i2c.lib"
- Config Lcdpin = Pin , Db4 = Portd.4 , Db5 = Portd.5 , Db6 = Portd.6 , Db7 = Portd.7 , E = Portd.3 , Rs = Portd.2
- Config Lcd = 16x2
- 'Const Pcf_d4 = 4
- 'Const Pcf_d5 = 5
- 'Const Pcf_d6 = 6
- 'Const Pcf_d7 = 7
- 'Const Pcf_rs = 0
- 'Const Pcf_rw = 1
- 'Const Pcf_e1 = 2
- 'Dim _lcd_e As Byte
- 'Dim Backlight As Byte
- 'Backlight_on Alias &H08
- 'Backlight_off Alias &H00
- 'Backlight = Backlight_on
- '_lcd_e = 128
- 'Const Pcf8574_lcd = &H4E
- Waitms 100 : Cls
- Dim Tryb As Byte
- 'Dim Menu_1 As Byte , Menu_2 As Byte , Menu_3 As Byte
- Dim X1 As Byte , X2 As Byte , X3 As Byte , X4 As Byte
- Const Sw_prawo = 1
- Const Sw_gora = 2
- Const Sw_dol = 3
- Const Sw_lewo = 4
- Const Sw_select = 5
- dim flaga_pokaz as byte
- flaga_pokaz = 0
- dim poziom as byte
- poziom = 0
- Dim wyjdz as word
- 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 'przeniesc na globalne!
- 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)
- debug "ADC= " ; ADC_read_key
- Select Case Adc_read_key
- Case 0 To 100 : Read_key = Sw_prawo '1 'right = 0
- debug "prawo"
- Case 101 To 250 : Read_key = Sw_gora '2 'up = 145
- debug "gora"
- Case 251 To 400 : Read_key = Sw_dol '3 'dwn = 330
- debug "case dol"
- Case 401 To 600 : Read_key = Sw_lewo '4 'left = 506
- debug "case lewo"
- Case 601 To 850 : Read_key = SW_select '5 'select = 743
- Debug "case select"
- Case Is > 851 : Read_key = 0 'no key = 1023
- End Select
- If Read_key <> 0 Then
- If Old_key = Read_key Then
- If Key_cnt < 20 Then 'zmienione dla testu
- 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 normalny()
- Locate 1 , 1 : Lcd "normalny "
- Locate 2 , 1 : Lcd "ekran "
- X1 = 1
- X2 = 1
- X3 = 1
- X4 = 1
- end sub
- Enable Interrupts
- sub menu_gowne()
- Locate 1 , 1 : Lcd "0.0.0 "
- Locate 2 , 1 : Lcd "menu "
- do
- Key = Read_keypad()
- if key = Sw_prawo then
- Debug "wcisniety w prawo"
- incr poziom
- flaga_pokaz = 0
- end if
- if key = sw_lewo then
- Debug "wcisniety w lewo"
- decr poziom
- flaga_pokaz = 0
- end if
- if poziom > 10 then poziom = 1
- debug "poziom" ; poziom
- select case poziom '
- 'case 0 nie istnieje
- case 1:
- if flaga_pokaz = 0 then
- Locate 1 , 1 : Lcd "1.0.0 "
- Locate 2 , 1 : Lcd "select --> "
- end if
- flaga_pokaz = 1
- if key = Sw_select then
- goto menu_1
- end if
- case 2:
- if flaga_pokaz = 0 then
- Locate 1 , 1 : Lcd "2.0.0 "
- Locate 2 , 1 : Lcd "select --> "
- end if
- flaga_pokaz = 1
- if key = Sw_select then
- goto menu_2
- end if
- case 3:
- if flaga_pokaz = 0 then
- Locate 1 , 1 : Lcd "3.0.0 "
- Locate 2 , 1 : Lcd "select --> "
- end if
- flaga_pokaz = 1
- if key = Sw_select then
- goto menu_3
- end if
- case 4:
- if flaga_pokaz = 0 then
- Locate 1 , 1 : Lcd "4.0.0 "
- Locate 2 , 1 : Lcd "select --> "
- end if
- flaga_pokaz = 1
- if key = Sw_select then
- goto menu_4
- end if
- case 5:
- if flaga_pokaz = 0 then
- Locate 1 , 1 : Lcd "5.0.0 "
- Locate 2 , 1 : Lcd "select --> "
- end if
- flaga_pokaz = 1
- if key = Sw_select then
- goto menu_5
- end if
- case 6:
- if flaga_pokaz = 0 then
- Locate 1 , 1 : Lcd "6.0.0 "
- Locate 2 , 1 : Lcd "select --> "
- end if
- flaga_pokaz = 1
- if key = Sw_select then
- goto menu_6
- end if
- case 7:
- if flaga_pokaz = 0 then
- Locate 1 , 1 : Lcd "7.0.0 "
- Locate 2 , 1 : Lcd "select --> "
- end if
- flaga_pokaz = 1
- if key = Sw_select then
- goto menu_7
- end if
- case 8:
- if flaga_pokaz = 0 then
- Locate 1 , 1 : Lcd "8.0.0 "
- Locate 2 , 1 : Lcd "select --> "
- end if
- flaga_pokaz = 1
- if key = Sw_select then
- goto menu_8
- end if
- case 9:
- if flaga_pokaz = 0 then
- Locate 1 , 1 : Lcd "9.0.0 "
- Locate 2 , 1 : Lcd "select --> "
- end if
- flaga_pokaz = 1
- if key = Sw_select then
- goto menu_9
- end if
- case10:
- if flaga_pokaz = 0 then
- Locate 1 , 1 : Lcd "10.0.0 "
- Locate 2 , 1 : Lcd "select --> "
- end if
- flaga_pokaz = 1
- if key = Sw_select then
- goto menu_10
- end if
- case else:
- 'exit do
- end select
- incr wyjdz
- 'if key = Sw_select then
- 'exit do
- 'end if
- loop until wyjdz = 1000
- Poziom = 0
- wyjdz = 0
- end sub
- Main:
- call normalny
- Poziom = 0
- Do
- 'If Tifr0.ocf0a = 1 Then
- 'Tifr0.ocf0a = 1
- Key = Read_keypad()
- 'End If
- if key = Sw_select then
- call menu_gowne()
- call normalny
- end if
- Loop
- menu_1:
- Locate 1 , 1 : Lcd "1.0.0 "
- Locate 2 , 1 : Lcd "menu 1 "
- do
- Key = Read_keypad()
- if key = Sw_select then
- exit do
- end if
- loop
- goto main
- menu_2:
- Locate 1 , 1 : Lcd "2.0.0 "
- Locate 2 , 1 : Lcd "menu 2 "
- do
- Key = Read_keypad()
- if key = Sw_select then
- exit do
- end if
- loop
- goto main
- menu_3:
- Locate 1 , 1 : Lcd "3.0.0 "
- Locate 2 , 1 : Lcd "menu 3 "
- do
- Key = Read_keypad()
- if key = Sw_select then
- exit do
- end if
- loop
- goto main
- menu_4:
- Locate 1 , 1 : Lcd "4.0.0 "
- Locate 2 , 1 : Lcd "menu 4 "
- do
- Key = Read_keypad()
- if key = Sw_select then
- exit do
- end if
- loop
- goto main
- menu_5:
- Locate 1 , 1 : Lcd "5.0.0 "
- Locate 2 , 1 : Lcd "menu 5 "
- do
- Key = Read_keypad()
- if key = Sw_select then
- exit do
- end if
- loop
- goto main
- menu_6:
- Locate 1 , 1 : Lcd "6.0.0 "
- Locate 2 , 1 : Lcd "menu 6 "
- do
- Key = Read_keypad()
- if key = Sw_select then
- exit do
- end if
- loop
- goto main
- menu_7:
- Locate 1 , 1 : Lcd "7.0.0 "
- Locate 2 , 1 : Lcd "menu 7 "
- do
- Key = Read_keypad()
- if key = Sw_select then
- exit do
- end if
- loop
- goto main
- menu_8:
- Locate 1 , 1 : Lcd "8.0.0 "
- Locate 2 , 1 : Lcd "menu 8 "
- do
- Key = Read_keypad()
- if key = Sw_select then
- exit do
- end if
- loop
- goto main
- menu_9:
- Locate 1 , 1 : Lcd "9.0.0 "
- Locate 2 , 1 : Lcd "menu 9 "
- do
- Key = Read_keypad()
- if key = Sw_select then
- exit do
- end if
- loop
- goto main
- menu_10:
- Locate 1 , 1 : Lcd "10.0.0 "
- Locate 2 , 1 : Lcd "menu "
- do
- Key = Read_keypad()
- if key = Sw_select then
- exit do
- end if
- loop
- goto main
- End
Przypomniało mi się iż parę lat temu ktoś stworzył program do robienia menu w bascomie oto on:
http://mat.midlight.eu/index.php/Simple ... 11.2017.29
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ękuję za kod, będę walczył
Najgorsze jest to, że dodając parę funkcji do menu to kod strasznie się rozrasta.
Najgorsze jest to, że dodając parę funkcji do menu to kod strasznie się rozrasta.
- Pikczu
- Posty: 392
- Rejestracja: 17 sie 2015, 13:46
- Lokalizacja: Dublin, Ireland
- Kontakt:
Re: Pomiar pH wody - budowa sterownika do akwarium
No dokładnie rośnie strasznie.
Sprawdz czy da sie go otworzyć w proteusie 8.1 ten 8.8 jest niestety zle zrobiony.
Aha teraz zrobiłdm tak:
Naciskasz select wchodzi do do wyświetlania menu.
Przewijasz menu prawo lewo.
Akceptujesz wejście przez naciśnięcie Select.
Wtedy wchodzi do Label np: menu_1
Dodałem licznik zeby sam program wyszedł z menu.
Sprawdz czy da sie go otworzyć w proteusie 8.1 ten 8.8 jest niestety zle zrobiony.
Aha teraz zrobiłdm tak:
Naciskasz select wchodzi do do wyświetlania menu.
Przewijasz menu prawo lewo.
Akceptujesz wejście przez naciśnięcie Select.
Wtedy wchodzi do Label np: menu_1
Dodałem licznik zeby sam program wyszedł z menu.