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

[ATTINY2313][BASCOM] Program z miganiem led

barin 08 Gru 2009 10:10 3332 14
REKLAMA
  • #1 7360582
    barin
    Poziom 10  
    Witam.
    Mam mały problem. Próbuję zrobić programik, w którym miga 5 led a gdy wcisnę guzik, zatrzymuje się na tej Led co świeci.

    Napisałem programik. Led migają tak jak chcę ale nie zatrzymują się po naciśnięciu przycisku.
    $regfile = "attiny2313.dat"
    $crystal = 4000000
    
    Config Portb = Input
    Portb = &B00000000
    Config Portd = Output
    Portd = &B0000000
    
    Do
    
    If Portd.0 = 1 And Pinb.0 = 1 Then
    Portd.0 = 1
    End If
    
    If Portd.1 = 1 And Pinb.0 = 1 Then
    Portd.1 = 1
    End If
    
    If Portd.2 = 1 And Pinb.0 = 1 Then
    Portd.2 = 1
    End If
    
    If Portd.3 = 1 And Pinb.0 = 1 Then
    Portd.3 = 1
    End If
    
    If Portd.4 = 1 And Pinb.0 = 1 Then
    Portd.4 = 1
    End If
    
    If Portd.5 = 1 And Pinb.0 = 1 Then
    Portd.5 = 1
    End If
    
    
    Wait 1
    Portd.0 = 1
    Wait 1
    Portd.0 = 0
    Portd.1 = 1
    Wait 1
    Portd.1 = 0
    Portd.2 = 1
    Wait 1
    Portd.2 = 0
    Portd.3 = 1
    Wait 1
    Portd.3 = 0
    Portd.4 = 1
    Wait 1
    Portd.4 = 0
    Portd.5 = 1
    Wait 1
    Portd.5 = 0
    
    
    Loop
    End
  • REKLAMA
  • #2 7360685
    MELP
    Poziom 16  
    Witam!
    Kolega nie zatrzymuje programu po instrukcji If ( domyślam się , że przycisk jest podłączony do pierwszego pinu portu b ), tylko każe mikrokontrolerowi zmienić stan portu.
    Proponuję:

    Do
    Wait 1
    Rotate Portd , Left
    If Pinb.0 = 1 Then
    Bitwait Pinb.0=0
    End If
    Loop
    End

    Nie wiem czy to zadziała, bo nie mam jak tego sprawdzić.

    Rotate przesuwa zawartość rejestru portu, a Bitwait czeka na puszczenie przycisku.
  • #3 7360709
    barin
    Poziom 10  
    Wyskakują mi błędy:

    Cytat:
    Bitwait Pinb.0=0 (Error 62 expected)(Error 105 StoreBit)(Error 98 Set or Reset)



    Nie bardzo wiem jak to rozumieć. Jestem początkującym i nie znam wielu fukcji:(
  • #4 7360719
    sp3ots
    Poziom 38  
    Witam !
    Ta linia jest zła:
    Bitwait Pinb.0=0
    Napisz tak:
    Bitwait Pinb.0, reset
    Pozdrawiam. Stefan
  • #5 7360760
    barin
    Poziom 10  
    Program zaskoczył wgrałem do attina ale nic LED nie świecą podłączenie led mam 100% dobrze.
  • REKLAMA
  • #6 7360768
    sp3ots
    Poziom 38  
    Daj schemat i aktualny kod.
  • #7 7360801
    barin
    Poziom 10  
    W Paincie zrobiłem mam nadzieje ze dobrze widać tylko 2 led dalem ale jest 5 w kolejności.
    [ATTINY2313][BASCOM] Program z miganiem led

    Włącznik jest z opornikiem 100 OM

    Dodano po 3 [minuty]:

    Aha attin jest podłączony do +5v i masy :)
  • REKLAMA
  • #8 7360839
    sp3ots
    Poziom 38  
    Witam !
    Trochę bym zmienił:
    LEDy przez 1k do +5V ( trzeba je odwrotnie wlutować )
    przycisk - pomiędzy masę a portb.o , bez rezystora
    i do kodu bym dopisał jeszcze:
    Portb.0 = 1 '
    Daj cały KOD.


    " Do moderatora - nie mogę poprawiać swoich błędów (edytować postu)
    po naciśnięciu "odpowiedz" czy tak pozostanie ? "

    Pozdrawiam. Stefan
  • #9 7360883
    barin
    Poziom 10  
    Cytat:
    $regfile = "attiny2313.dat"
    $crystal = 4000000

    Config Portb = Input
    Portb = &B00000000
    Config Portd = Output
    Portd = &B0000000





    Do
    Wait 1
    Rotate Portd , Left
    If Pinb.0 = 1 Then
    Bitwait Pinb.0 , Reset

    End If

    Loop
    End
  • #10 7360892
    sp3ots
    Poziom 38  
    $regfile = "attiny2313.dat"
    $crystal = 4000000
    
    Config Portb = Input
    Portb = &B00000000
    Portb.0 = 1
    Config Portd = Output
    Portd = &B11111111
    
    Do
    
    Waitms 500
    If Portd = 0 Then Portd = 255
    Rotate Portd , Left
    If Pinb.0 = 0 Then
    Bitwait Pinb.0 , Set
    End If
    Loop
    End

    Proszę używać znaczników [code] - uzupełniłem.
    [zumek]


    Pozmieniaj Ledy i przycisk tak jak pisałem poprzednio.
    GG6293398

    Dodano po 3 [minuty]:

    Ta linia jest zbędna:
    Portb = &B00000000
    Program działa, ale czy tak miał działać ?
  • REKLAMA
  • #11 7360948
    barin
    Poziom 10  
    Świeci i działa:) tylko świecą wszystkie i gasną po kolei a jak wcisne przycisk to tak jak bym dał stop i świeci tylko tyle ile zatrzymałem.

    A chodziło mi o to aby jak zaświeci się 1 led to inne nie świecą jak zgaśnie 1 to zaświeci się 2... itd a jak wcisnę przycisk to zostaje zaświecona ta led która aktualnie świeci.
  • Pomocny post
    #12 7361044
    sp3ots
    Poziom 38  
    $regfile = "attiny2313.dat"
    $crystal = 4000000
    Config Portb = Input
    Portb.0 = 1
    Config Portd = Output
    Portd = &B11111111
    Dim Temp As Byte
    Temp = 1
    Do
    Temp = Temp * 2
    If Temp > 80 Then Temp = 1
    Portd = Temp
    Toggle Portd
    If Pinb.0 = 0 Then
    Bitwait Pinb.0 , Set
    End If
    Waitms 500
    Loop
    End


    Dodałem znaczniki [code]
    [zumek]
  • #13 7361131
    barin
    Poziom 10  
    Kurcze jest prawie idealnie:)

    oooooo
    xooooo
    oxoooo
    ooxooo
    oooxoo
    ooooxo
    ooooox

    Tak jest gdzie "o" to świeci

    oxxxxx
    xoxxxx
    xxoxxx
    xxxoxx
    xxxxox
    xxxxxo

    przycisj dziala jak powinien:D czyli w tym wypadku jak nacisne to led którą złapałem jest zgaszona reszta świeci :D
    Pozdrawiam
  • Pomocny post
    #14 7361162
    sp3ots
    Poziom 38  
    Pisałem abyś wszystkie diody LED połączył przez rezystory do +5V , a Ty tego nie zrobiłeś ?
    Mam rację ?
    Dziękuję za 10, nie trzeba było.
    GG6293398
  • #15 7361184
    barin
    Poziom 10  
    Heheh miałeś racje:)

    Mision complete :D

    Dziękuje serdecznie za pomoc:D!!!
REKLAMA