Witam Chcę zrobić tak, że jak naciśnie się trzeci przycisk to wtedy wchodzi się w ustawienia temperatury i jak już się jest w ustawieniach to reguluje się temperaturę 2 pierwszymi przyciskami +/- a potem jak naciśnie się trzeci przycisk to temperatura, którą ustawiliśmy się zapisuje i wyświetla się aktualna temperatura pomieszczenia. Jak temperatura pomieszczenia będzie większa niż temperatura ustawiona to wtedy ma się świecić środkowa dioda. Proszę o pomoc bo nie mam pojęcia jak się za to zabrać :) '**************************** 'Konfiguracja '**************************** $regfile = "m8def.dat" $crystal = 8000000 Config Portb = Output Config Portd = Output Config Portd = &B11111111 Config Portc.0 = Output Config Portc.1 = Output Config Portc.2 = Output Config Portc.3 = Input Portc.3 = 1 S1 Alias Pinc.3 Config Portc.4 = Input Portc.4 = 1 S2 Alias Pinc.4 Config Portc.5 = Input Portc.5 = 1 S3 Alias Pinc.5 Config 1wire = Portb.1 Led1 Alias Portb.6 Led2 Alias Portb.7 Led3 Alias Portb.0 Q Alias Portb.5 Config Timer0 = Timer , Prescale = 256 Enable Timer0 : On Timer0 Przerwanie0 Anoda1 Alias Portc.2 Anoda2 Alias Portc.1 Anoda3 Alias Portc.0 Dim T As Integer ' temperatura Dim I1 As Integer ' bierze udzial w konwersji temperatury Dim Dsid1(8) As Byte ' adres czujnika temperatury Enable Interrupts '**************************** 'Zmienne '**************************** Dim Dziel(3) As Byte Dim Wysw As Word , Wysw2 As Word , Ww As Byte , W(3) As Byte Dim Wysw_pomoc As Word Dim Mux As Byte , I As Byte Dim F1s As Bit , F4ms As Bit , F100ms As Bit '**************************** 'Petla glowna '**************************** Do If F4ms = 1 Then Reset F4ms 'co 4ms Gosub Wyswietl_first End If If F100ms = 1 Then Reset F100ms 'co 100ms 'tu można wykonywac coś co 100ms, np klawiatura albo jakieś obliczenia End If If F1s = 1 Then Reset F1s ' co 1 sekund Gosub Temperatura End If Loop End Temperatura: Disable Interrupts 'wyślij komendę skip rom i convert t: to te komendy = tu jest na nie dedykowane miejsce 1wreset 1wwrite &HCC 1wwrite &H44 Enable Interrupts Disable Interrupts 'tu dokonaj odczytu temperatury z termometru 1wreset 1wwrite &HCC 1wwrite &HBE I1 = 1wread(2) Enable Interrupts 'i przepisania jej na zmienne odpowiadające za wyświetlanie tego na LCD - nie w przerwaniu! I1 = I1 * 10 I1 = I1 / 16 T = I1 T = I1 / 10 Wysw2 = T Return Wyswietl_first: Wysw = Wysw2 Gosub Wyswietl Return '**************************** 'Przerwanie timer0 '**************************** Przerwanie0: Timer0 = 131 Set F4ms Incr Dziel(1) If Dziel(1) = 25 Then Dziel(1) = 0 End If Set F100ms Incr Dziel(2) If Dziel(2) = 10 Then Dziel(2) = 0 End If Set F1s Incr Dziel(3) If Dziel(3) = 1 Then Dziel(3) = 0 End If 'End If Return '**************************** 'wyswietlanie '**************************** Wyswietl: Incr Mux If Mux = 3 Then Mux = 0 For I = 1 To 3 Wysw_pomoc = Wysw Mod 10 Ww = Wysw_pomoc W(i) = Lookup(ww , Tabela) Wysw = Wysw / 10 Next I Select Case Mux Case 0: Set Anoda1 Portd = W(3) Reset Anoda3 Case 1: Set Anoda2 Portd = W(2) Reset Anoda1 Case 2: Set Anoda3 Portd = W(1) Reset Anoda2 End Select Return '******************************************************************************* 'Tabele do wyswietlania na wyswietlaczu '******************************************************************************* Tabela: Data 215 , 192 , 167 , 227 , 240 , 115 , 119 , 193 , 247 , 243
|
|||
Re: Termostat
Zamiast odkrywać na nowo pewne rzeczy sprawdź moje programy termometru uniwersalnego i minitermometru. Oba mają w załacznikach wersję kodu z termoststem
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.
sprawdzałem i nic nie
sprawdzałem i nic nie ogarniam
Re; Termostat
Jest wiele możliwości sterowania... popatrz na to:
Można też tak zrobić żeby temp włączenia była tempu + histereza/2 i wyłaczenie tempu - histereza/2 to wszystko zależy czym sterujesz
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.
tutaj masz gotowy
tutaj masz gotowy MINITERMOMETR UNIWERSALNY z zapisem ustawień do eeprom,sprawdzony i działający.
masz 2 przyciski +/- ,po ustawieniu temp.następuje automatyczny zapis i powrót do wyświetlania aktualnej temperatury.Resztę doczytaj na stronie projektu.
bardziej nie wiem jak zrobić
bardziej nie wiem jak zrobić "menu", żeby wejść w ustawienia
bo jak zrobię tak to działa
a jak tak to nie
Re: Menu
to raczej tak:
potem w następnym przycisku wszystko musisz uzaleznić od zmiennej tryb...np:
tak samo wyświetlanie musi zależeć od tryb
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.
no to teraz mam następny
no to teraz mam następny problem :P
Jak trzymam przycisk np S3 to jest tak jakbym ciągle go naciskał co 100ms bo tak jest w programie. Co zrobić, żeby jedne naciśnięcie to było prawdziwe 1 naciśnięcie nie zależnie od tego jak długo trzymam przycisk ?
Re; Termostat
np tak:
zmienna aktywny ma być typu bit
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.
teraz to przycisk nie
teraz to przycisk nie reaguje
Re: menu
Czemu zmieniłeś linijki:
Ma być tak jak napisałem:
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.
teraz przyciski działają ale
teraz przyciski działają ale dalej cały czas jak trzymam przycisk to sie zmienia tak szybko tryb co 100ms
Re: Przyciski
Już wiem co jest źle. moje niedopatrzenie. Przycisk powinien wyglądac tak:
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 :) już działa
dzięki :) już działa