Impulsator obrotowy i ATTINY13


Z programowania jestem zupełnie blady ale może tu mi ktoś pomoże :)

Mam urządzenia które jest sterowane za pomocą 3 przycisków zwiernych do plusa (5v)(switch).
Przyciski to: góra, dół, OK.

Impulsator obrotowy posiada przycisk - ok.
Pozostaje teraz problem jak zrobić że kiedy kręcę impulsatorem w prawo to podawane impulsy są na jednej nużce, a jak w lewo to na drugiej.

Układ miał by być wykonany na ATTINY13 lub w zasadzie dowolnym innym (w wersji SMD (attiny2313)).

Czyli krótko: układ jest orginalnie sterowany swichami i trzeba je zamienić na impulsator :)

Czy ewentualnie chciało by się komuś wykonać taki "bajer" ? :)
Chodzi mi o kod źródłowy + jakiś schemat jak by to miało wyglądać do danego mikrokontrolera...

Myślę że nie jednej osobie też by się coś takiego przydało do jakiegoś sterownika... :)

Proszę o help :)
Dzięki!




Portret użytkownika mirley

Re: Sterowanie impulsatorem

Dobrze trafiłeś bo taki układ już był niedawno omawiany.... popatrz tutaj, tam jest program obsługujący taki impulsator a dodatkowo posiada 3 kanały pracy przełączane na przycisku. Jeśli te twoje przyciski też są podłączone do mikrokontrolera to nie ma problemu poprostu trzeba stany na wyjściach odwrócić.

Program wystarczy skompilować pod odpowiedni mikrokontroler, zamieniając nazwy wyprowadzeń. Może jak wyrzucisz funkcję 3 kanałów na jednym impulsatorze to zmieści się program do ATTiny13 a jak nie do do 2313 napewno wejdzie.

Poczytaj tamten wątek i spróbuj zrozumieć kod źródłowy który napisałem. Schemat to po prostu impulsator podłączony do dwóch wyprowadzeń a przycisk możesz dać bezpośrednio

-

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.

Portret użytkownika KOx

Problem jest tylko w tym że

Problem jest tylko w tym że ja jestem kompletnie zielony w programowaniu... :(

Naj lepiej by było żeby się udało coś takiego zrobić na ATTINY13 bo posiada 8 nużek a w wersji SMD jest naprawdę mały...
Chodzi mi tylko o tą funkcję żadnych dodatkowych...

Nie będę owijał w bawełnę - nie ma szans na jakiegoś gotowca?
Że się tak odważnie spytam... :)

Tak tylko liczę na odrobinę dobrej woli

Nie śpieszy mi się... Za tydzień za dwa... :)

Dzięki za odp.

Portret użytkownika mirley

Re: ATTiny13 program

Oto prosty programik który powinien spełniać żądaną rolę:

'************* Konfiguracja uC *****************
'***********************************************
$regfile = "attiny13.dat"
'$crystal = 16000000
$crystal = 9600000
 
Config Portb = &B11100111 : Portb = &B11111111
 
$hwstack = 20
$swstack = 10
$framesize = 40
 
 
I1 Alias Pinb.3
I2 Alias Pinb.4
O1 Alias Portb.0
O2 Alias Portb.1
 
Config Timer0 = Timer , Prescale = 256
Enable Timer0 : On Timer0 Prztimer0
 
Enable Interrupts
'********** Konfiguracja uC Koniec  ************
 
'******************  Zmienne *******************
'***********************************************
Dim In1 As Bit , In2 As Bit
Dim Tryb As Byte , Rezultat As Integer
Dim Licz_sw As Byte
Dim Impuls As Byte , Stan_wyjsc As Byte
Dim F_6ms As Bit
Dim Port As Byte
 
 
'*************  Zmienne Koniec  ****************
 
'**************  Petla glowna ******************
'***********************************************
Do
 
In1 = I1
In2 = I2
 Rezultat = 0
 Select Case Tryb
  Case 0:
   If In1 = 1 And In2 = 1 Then Incr Tryb                    'jezeli dwa rozwarte
  Case 1:
   If In1 = 1 And In2 = 0 Then Tryb = 2
   If In1 = 0 And In2 = 1 Then Tryb = 3
  Case 2:
   If In1 = 0 And In2 = 1 Then
     Rezultat = 1
     Tryb = 0
   End If
  Case 3:
   If In1 = 1 And In2 = 0 Then
     Rezultat = -1
     Tryb = 0
   End If
 End Select
 Waitus 100
 
If Rezultat <> 0 Then
  If Rezultat = 1 Then
    Set O1
    Reset O2
  Else
    Set O2
    Reset O1
  End If
  Impuls = 0
End If
 
 
 
If F_6ms = 1 Then
  F_6ms = 0
 
  If O1 = 0 Or O2 = 0 Then
    Incr Impuls
    If Impuls = 15 Then
      Impuls = 0
      O1 = 1
      O2 = 1
    End If
  Else
    Impuls = 0
  End If
 
End If
 
Loop
End
'************ Petla glowna Koniec **************
 
 
'************ Przerwanie timer 0 ***************
'***********************************************
Prztimer0:
  Timer0 = 5
  Set F_6ms
Return
'******** Przerwanie timer 0 Koniec ************

Programu jeszcze nie testowałem, ze względu na brak czasu, zmieścił się jednak w ATTINY13, w razie problemów pisz. Program można jeszcze troszkę uprościć ale do tego muszę mieć możliwość zaprogramowania ATTiny13 a teraz nie mam tego uC pod ręką.

-

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.