Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek dla www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

[Atmega32][bascom] sterownik pieca co

12 Wrz 2008 13:08 7852 7
  • Poziom 12  
    Chciałbym w Bascomie zrobić menu
    01 Pomiary
    02 Nastawa T1
    03 Nastawa T2
    04 Nastawa T3

    Mam 4 przyciski SW1, SW2, SW3, SW4

    1) Naciskając klawisz SW1 będzie się wyświetlało po kolei menu od 01 do 04 i tak w kółko.

    2) Chce zmienić nastawy w menu 02. Ustawiam klawiszem SW1 na menu 02 i klikam SW4 żeby wprowadzić dane. Po ponownym naciśnięciu SW4 dane zostaną zapisane i mogę przejść do następnego menu klawiszem SW1

    Jak zrobić takie menu?
  • Poziom 21  
    Najlepiej, zacząć pisać, testować itd... Gotowca nie dostaniesz.
    Pzdr.
    A.
  • Poziom 38  
    Zapoznaj sie z poleceniem case, Select Case
  • Poziom 12  
    Witam

    kod
    Code:
    Dim Nr_menu As Byte , Klucz As Bit 
    
    Nr_menu = 0
    Do
       Cls
       Lcd Lookupstr(nr_menu , D_menu)
       On Nr_menu Gosub Menu1 , Menu2 , Menu3       'a tak możesz dla każdego menu ,
                                                     ' wywołać procedurkę
       Set Klucz
       While Klucz = 1
          Debounce Pinb.0 , 0 , Zmiana , Sub
       Wend
    Loop
    Zmiana:
       Incr Nr_menu
       If Nr_menu = 3 Then Nr_menu = 0
       Reset Klucz
    Return
    Menu1:
    Return
    Menu2:
    Return
    Menu3:
    Return

    D_menu:
    Data "Pierwsze menu" , "Drugie menu" , "Trzecie menu"


    działa fajnie tylko ze wchodzi on odrazu do podmenu, a w mojej koncepcji musze dopiero chciec wejsc poprzez kliknecie na klawisz i wyjsc z tego podmenu jak klikne inny.
  • Poziom 14  
    Na przykład jak ja rozwiązałem menu
    tylko że ma 3 przyciski + - i SET

    Może jest mało elegancki (a może i nie ?) ale to był pierwszy większy program po rzeczach typu mruganie diodą ;)

    Code:
    Sub Menu
    
    Menuu = 1
    Waitms 200
    Cls

    'znaki góra/dół/ok
    Locate 2 , 1
    Lcd Chr(3)
    Locate 2 , 8
    Lcd Chr(2)
    Locate 2 , 15
    Lcd "OK"



    Do
    Locate 1 , 1
    Select Case Menuu
    Case Is = 1
    Lcd "1.Ustaw temp.   "
    Case Is = 2
    Lcd "2.Ustaw Kp,Kd,Ki"
    Case Is = 3
    Lcd "3.R. Dwustanowa "
    Case Is = 4
    Lcd "4.R. PID        "
    Case Is = 5
    Lcd "5.Reset  EEPROM "
    End Select

    If Plus = 0 And Menuu < 5 Then
    Incr Menuu
    Waitms 222
    End If

    If Plus = 0 And Menuu = 5 Then
    Menuu = 1
    Waitms 222
    End If

    If Minus = 0 And Menuu > 1 Then
    Decr Menuu
    Waitms 222
    End If

    If Minus = 0 And Menuu = 1 Then
    Menuu = 5
    Waitms 222
    End If




    If Sett = 0 And Menuu = 4 Then
    Call Pid
    End If


    If Sett = 0 And Menuu = 1 Then
    Call Ustaw_temp
    End If

    If Sett = 0 And Menuu = 2 Then
    Call Ustaw_k
    End If


    If Sett = 0 And Menuu = 5 Then
    Call Reseteeprom
    End If

    If Sett = 0 And Menuu = 3 Then
    Call Dwustan
    End If

    Loop

    End Sub Menu


    wystarczy używać tylko np. przycisku "+" gdyż menu się zapętla



    jedno z podmenu

    Code:
    Sub Ustaw_temp
    
    Waitms 200
    Cls
    Lcd "Tz:"
    Locate 2 , 1
    Lcd "+       -     OK"

    While Sett = 1

    Locate 1 , 8
    Lcd Tz

    If Plus = 0 Then
    Tz = Tz + 0.5
    Waitms 66
    End If

    If Minus = 0 Then
    Tz = Tz - 0.5
    Waitms 66
    End If



    [Atmega32][bascom] sterownik pieca co
  • Poziom 17  
    Podłączę się trochę pod temat chodzi mi też o menu. Mianowicie robię obrotomierz z ustawianymi progami alarmów jak zrobić w menu ustawianie kiedy trzymam wciśnięty przycisk to zmieniają mi się nastawy najpierw o jeden, jak trzymam dalej przycisk to zaczynają się przestawiać o dziesięć następnie o sto. Bo klikać przyciskiem 1200 razy to raczej średnia przyjemność nic ciekawego nie wpada mi do głowy .Pozdrawiam
  • Poziom 43  
    Było niedawno na ten temat. Sprawdzaj upływ czasy, a potem zwiększaj zmienną o 100 a nie o 1