logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Kilka warunków If w jednym programie i buzzer

mavi 30 Kwi 2011 02:16 2195 3
REKLAMA
  • #1 9453455
    mavi
    Poziom 19  
    Witam
    Wiem co to wyszukiwarka ale jakoś nie moge znaleźć przykładów programów z których mógłbym podpatrzeć pewne rozwiązania.

    Jestem zielony w bascomie i to są moje początki. Próbuje właśnie zagłębić temat użycia kilku warunków if w jednym programie.
    Próbuje zrobić układ w którym po włączeniu pojawi się jakiś napis np. "start"
    po włączeniu przycisku nr 1 powinien pojawic się napis np: "tata"
    Ale trzymając przycisk nr 1 i naciskając przycisk nr 2 powienien pojawić się napis np "mama"
    trzeci przycisk tez musi działać pod warunkiem, że przycisk nr 1 jest wciśnięty.

    Ale w przypadku gdy naciśniemy przycisk 2 ale nie naciśniemy przycisku nr 1 to musi pojawić się napis "Wciśnij i przytrzymaj przycisk 1"

    Zakładam że musi w programie kilka razy wystąpić warunek if ale jak polączyć jednen warunek if z drugim by tak to wszystko funkcjonowało??

    Mój drugi problem:

    Chcialbym by przy każdej zmianie napisu na wyświetlaczu, buzer trzy razy zapiszczał ale i wyświetlacz z trzy razy zamigał, tak by przykuwało to oczy.

    Rozumiem, że wyświetlacz HD44780 podświetla chyba jedna mocna dioda. U mnie jest to niebieski wyświetlacz z mocnym białym podświetleniem od prawej strony wyświetlacza. Więc jeśli jest to dioda to nie ma problemu bo podłączy się to podświetlenie pod procesor ale jak należy podłączyć podświetlenie wyświetlacza do atmega, gdzie np jest z 10 -20 diód lub więcej ??
    Ile diód naraz może znieść wyjście z procesora?
    pzdr.
  • REKLAMA
  • #2 9453483
    Konto nie istnieje
    Poziom 1  
  • REKLAMA
  • #3 9471520
    mavi
    Poziom 19  
    mój program oparty jest o 5 czujników - przycisków, które będą działały w tej samej kolejności od pierwszego do piątego.
    Wraz ze zmianą napisu na wyświetlaczu, pod układ jest podłączonych również 5 diód. Program tak działa, że do każdego czujnika- przycisku przypisana jest jedna dioda i w chwili gdy przycisk zadziała to dioda się zapala, a na wyświetlaczu pojawia się konkretny tekst.

    Działanie urządzenia polega na tym, że po kolei włącza się przyciski od 1 do 5.
    wiec pierwszy tekst występuje gdy nic nie naciskamy
    drugi tekst gdy przyciskamy przycisk 1
    trzeci tekst gdy przyciskamy przycisk 1 i 2
    czwarty tekst gdy przyciskamy przycisk 1,2 i 3
    itd.

    mój problem to ujęcie w programie faktu, że jak wciskamy przycisk 1 to mamy jakiś tekst - 1 i jak wciskamy przycisk 1 i 2 to jest tekst - 2.

    U mnie niejstety, przy przyciśnieciu przycisku 1 i 2 migają naprzemiennie teksty 1 i 2 gdy wciskamy przycisk 1 i gdy przyciskamy przycisk 1 i 2.

    Jak ująć w programie dwie w sumie wykluczające się reguły?
    pomijając konfigurację mój program wygląda tak :

    Do
    Do

    If Pinb.0 = 0 and Pinb.1 = 1 Then ` jeśli załącze przycisk nr 1
    Porta.0 = 0 ` zapal diode nr 1
    Locate 1 , 1
    Lcd " Podejdz "
    Locate 2 , 1
    Lcd " do terminala "
    Else
    Porta.0 = 1 `wygaszenie diody 1
    Porta.1 = 1 `wygaszenie diody 2
    Porta.2 = 1 `wygaszenie diody 3
    Porta.3 = 1 `wygaszenie diody 4
    Porta.4 = 1 `wygaszenie diody 5
    Locate 1 , 1
    Lcd "czynne"
    Locate 2 , 1
    Lcd "od 12.00 do 15.00"

    End If

    If Pinb.0 = 0 And Pinb.1 = 0 Then `jeśli załącze przycisk nr 1 i nr 2
    Porta.1 = 0 `zapal diode nr 2
    Locate 1 , 1
    Lcd "Nacisnij zielony "
    Locate 2 , 1
    Lcd " przycisk "



    End If
    Loop
    Loop

    End

    Proszę kod umieścić w znacznikach code.
    Robal
  • #4 9474571
    arktik1
    Poziom 27  
    Poza tym że jest źle napisany to spróbuj tego:
    
    Config Lcd = 20 * 2
    
    Config Portb = Input
            Portb = &B11111111
    Config Porta = Output
            Porta = &B00000000
    
    Cls
    Do
    
    If Pinb.0 = 1 And Pinb.1 = 1 Then
    
    Porta = &B11111
    Locate 1 , 1
    Lcd "       czynne       "
    Locate 2 , 1
    Lcd " od 12.00 do 15.00  "
    End If
    
    If Pinb.0 = 0 And Pinb.1 = 1 Then
    
    Porta.0 = 0
    Locate 1 , 1
    Lcd "       Podejdz      "
    Locate 2 , 1
    Lcd "    do terminala    "
    End If
    
    If Pinb.0 = 0 And Pinb.1 = 0 Then
    
    Porta.1 = 0
    Locate 1 , 1
    Lcd "  Nacisnij zielony  "
    Locate 2 , 1
    Lcd "      przycisk      "
    End If
    
    Loop
    
REKLAMA