Potencjometr Alps z silniczkiem sterowanie pilotem RC5

Pytania, kody i porady dotyczące nie tylko Bascom.
Awatar użytkownika
kulamario
Posty: 207
Rejestracja: 17 sie 2015, 20:05
Lokalizacja: Greystones
Kontakt:

Potencjometr Alps z silniczkiem sterowanie pilotem RC5

Post autor: kulamario » 11 lis 2017, 14:07

Witam
Mam mały problem z napisaniem kodu do obsługi pilotem potencjometru z silniczkiem o ile sterowanie przyciskami działa to jeśli chce sterować pilotem to już nie chce chodzić dobrze
dodaje kod który napisałem ze by sterować przyciskami i ten kod działa 100%
  1. $regfile = "m32def.dat"
  2. $crystal = 16000000
  3. $hwstack = 28
  4. $swstack = 28
  5. $framesize = 28
  6.  
  7. '-------------------------------------------------------------------------------------------------------------------------------------------
  8.  
  9. Config Pind.0 = Input
  10. Config Pind.1 = Input
  11.  
  12.  
  13. Config Pinc.7 = Output
  14.  
  15. Config Pind.2 = Output
  16. Config Pind.3 = Output
  17. Portd.2 = 0
  18. Portd.3 = 0
  19.  
  20. Up Alias Pind.0
  21. Down Alias Pind.1
  22.  
  23. Set Portd.0
  24. Set Portd.1
  25.  
  26. Declare Sub Up1
  27. Declare Sub Down1
  28.  
  29.  
  30. 'Config Rc5 =
  31.  
  32. Do
  33.  
  34. If Up = 0 Then Gosub Up1
  35.                                                     'Portd.2 = 1
  36.  
  37.  
  38. If Down = 0 Then Gosub Down1                                'Portd.3 = 1
  39.  
  40.  
  41. Loop
  42.  
  43. Sub Up1:
  44.  
  45. Portd.2 = 1
  46. Portc.7 = 0
  47.  
  48. Waitms 50
  49.  
  50. Portd.2 = 0
  51. Portc.7 = 0
  52.  
  53. End Sub
  54.  
  55.  
  56. Sub Down1:
  57.  
  58.  
  59. Portd.2 = 0
  60. Portc.7 = 1
  61.  
  62. Waitms 50
  63.  
  64. Portd.2 = 0
  65. Portc.7 = 0
  66.  
  67. End Sub
A tu kod z juz dodana obsluga RC5 ale niestety nie chodzi
  1. $regfile = "m32def.dat"
  2. $crystal = 16000000
  3. $hwstack = 28
  4. $swstack = 28
  5. $framesize = 28
  6.  
  7. '-------------------------------------------------------------------------------------------------------------------------------------------
  8. Config Lcdpin = Pin , Db4 = Porta.2 , Db5 = Porta.3 , Db6 = Porta.4 , Db7 = Porta.5 , E = Porta.1 , Rs = Porta.0
  9. Config Lcd = 16 * 2
  10.  
  11. Dim Address As Byte , Command As Byte
  12.  
  13. Declare Sub Up1
  14. Declare Sub Down1
  15.  
  16. Config Pinc.7 = Output
  17.  
  18. Config Pind.2 = Output
  19. Config Rc5 = Pinc.2 , Timer = 2
  20.  
  21. Plus Alias Portd.2
  22.  
  23. Minus Alias Pinc.7
  24. '-------------------------------------------------------------------------------
  25.  
  26.  
  27.  
  28.  
  29.  
  30. Enable Interrupts
  31.  
  32. Do
  33.  
  34.    Getrc5(address , Command)
  35.    Command = Command And &B01111111
  36.  
  37.    If Address = 0 And Command = 16 Then Gosub Up1
  38. 'End If
  39.  
  40.  
  41.    If Address = 0 And Command = 17 Then Gosub Down1
  42. 'End If
  43.  
  44.  
  45.  
  46. Loop
  47.  
  48.  
  49. Sub Up1:
  50.  
  51.  
  52.    Plus = 1                                                  'Portd.2 = 1
  53.    Minus = 0                                                 'Portc.7 = 0
  54.  
  55.    'Waitms 100
  56.  
  57.    'Plus = 0                                                 'Portd.2 = 0
  58.    'Minus = 0                                                'Portc.7 = 0
  59.  
  60. End Sub
  61.  
  62.  
  63. Sub Down1:
  64.  
  65.  
  66.    Plus = 0                                                    'Portd.2 = 0
  67.    Minus = 1                                                'Portc.7 = 1
  68.  
  69.    'Waitms 100
  70.  
  71.    'Portd.2 = 0
  72.    'Portc.7 = 0
  73.  
  74. End Sub
Czy może mi ktoś pomoc z tym bardzo proszę
Awatar użytkownika
niveasoft
Posty: 1313
Rejestracja: 17 sie 2015, 12:13
Kontakt:

Re: Potencjometr Alps z silniczkiem sterowanie pilotem RC5

Post autor: niveasoft » 11 lis 2017, 19:58

Powinieneś od razu pomyśleć jak tu wyłączyć potem taki silnik.

Zerknij na kod z mojej strony. Powstał daawno temu jeszcze na Forum Mirleya.

Pilot przy przytrzymaniu przycisku nie nadaje stale tylko z przerwami ponawia komendę. Sterowany w ten sposób silnik by szarpał a dioda lub żarówka by migała. Poniższy kod utrzymuje pin portu w jednym stanie do momentu puszczenia przycisku pilota. Później wyjścia są zerowane.

Kod jest stary, ale możemy go łatwo przepisać pod dowolny układ. Led_r i Led_l to odpowiednio wyjścia dla przekaźników/wejść sterujących silnikiem.
  1. 'Odbiornik RC5
  2. 'Wyjścia w stanie niskim tak długo jak trzyma się przycisk
  3. $regfile = "attiny13a.dat"                                  '44% Flash
  4. $crystal = 9600000
  5. $hwstack = 24
  6. $swstack = 18
  7. $framesize = 16
  8.  
  9. $lib "mcsbyte.lbx"                                          'wykorzystamy bibliotekę która ogranicza się do
  10.                                                              'uzywania tylko bajtów celem zmniejszenia kodu
  11. Config PORTB.3 = Output
  12. Config PORTB.4 = Output                                     'tu diody ale mogą to być wyjścia
  13. Led_r Alias PORTB.3
  14. Led_l Alias PORTB.4
  15. Set Led_r                                                   'żeby nie włączyć dwóch kierunków na raz
  16. Set Led_l
  17.  
  18. Config Rc5 = PINB.0
  19.  
  20. Dim Address As Byte                                         'typ urządzenia np.0-telewizor, 8-sat
  21. Dim Command As Byte                                         'np 17 ciszej,16 głośniej
  22. Dim Odczekaj As Byte
  23. Const Deelay = 20
  24.  
  25. Enable Interrupts                                           ' zezwolenie na przerwania
  26. '*** START ***
  27. Do
  28.  
  29. Getrc5(address , Command)                                   'sprawdź czy pilot nadaje
  30.  
  31. If Address <> 255 Then                                      'jeśli Wpisać "If Address=0 Then"
  32.   Command = Command And &B01111111                          'to zawęzimy tylko do telewizorów
  33.  
  34.  Select Case Command
  35.  
  36.    Case 16                                                  'przycisk pilota +
  37.       Reset Led_l
  38.       Odczekaj = Deelay
  39.    Case 17                                                  'przycisk pilota -
  40.       Reset Led_r
  41.       Odczekaj = Deelay
  42.  
  43.   End Select
  44.  
  45. End If
  46.  
  47. If Odczekaj <> 0 Then Decr Odczekaj
  48.  
  49. If Odczekaj = 0 Then
  50.  Set Led_l
  51.  Set Led_r
  52. End If
  53.  
  54. Loop
  55. End
  56. '*** KONIEC ***
marekszy
Posty: 115
Rejestracja: 20 lis 2016, 20:21

Re: Potencjometr Alps z silniczkiem sterowanie pilotem RC5

Post autor: marekszy » 11 lis 2017, 22:43

Witam,tak przy okazji, masz może program do obsługi pilotów NEC oraz do odczytu co nadaje dany przycisk.
Awatar użytkownika
pimowo
Posty: 392
Rejestracja: 28 maja 2016, 10:07

Re: Potencjometr Alps z silniczkiem sterowanie pilotem RC5

Post autor: pimowo » 11 lis 2017, 23:04

marekszy pisze: ↑
11 lis 2017, 22:43
Witam,tak przy okazji, masz może program do obsługi pilotów NEC oraz do odczytu co nadaje dany przycisk.
KLIK
Awatar użytkownika
kulamario
Posty: 207
Rejestracja: 17 sie 2015, 20:05
Lokalizacja: Greystones
Kontakt:

Re: Potencjometr Alps z silniczkiem sterowanie pilotem RC5

Post autor: kulamario » 12 lis 2017, 3:56

Niveasoft
Kod niby działa ale nie wiem co jest nie halo bo jeśli case 17 czyli dół działa to case 16 juz nie tz działa ale na ułamek sekundy co nie jest wystarczające do poruszenia motoru w potku
czy może mi ktoś pomóc z tym
Awatar użytkownika
niveasoft
Posty: 1313
Rejestracja: 17 sie 2015, 12:13
Kontakt:

Re: Potencjometr Alps z silniczkiem sterowanie pilotem RC5

Post autor: niveasoft » 12 lis 2017, 8:49

Najpierw spróbuj zwiększyć Const Deelay = 20
Taka mała wartość miała na celu to by silnik od razu stanął po puszczeniu przycisku.
Awatar użytkownika
kulamario
Posty: 207
Rejestracja: 17 sie 2015, 20:05
Lokalizacja: Greystones
Kontakt:

Re: Potencjometr Alps z silniczkiem sterowanie pilotem RC5

Post autor: kulamario » 12 lis 2017, 13:26

ten delay to daje tyle ze silnik troszkę dłużej się zatrzymuje a motor u tak nie chodzi w ta stronę tak jak powinien
Awatar użytkownika
pimowo
Posty: 392
Rejestracja: 28 maja 2016, 10:07

Re: Potencjometr Alps z silniczkiem sterowanie pilotem RC5

Post autor: pimowo » 12 lis 2017, 23:27

Widzę, że Kolega @kulamario pisał o tym samym na innym forum, tam też z nim rozmawiałem...
Zamieszczę tutaj swoje pomysły bo jestem ciekawy co na to @niveasoft :lol:
  1. $regfile = "m32def.dat"
  2. $crystal = 16000000
  3. $hwstack = 28
  4. $swstack = 28
  5. $framesize = 28
  6.  
  7. Config Lcdpin = Pin , Db4 = Porta.2 , Db5 = Porta.3 , Db6 = Porta.4 , Db7 = Porta.5 , E = Porta.1 , Rs = Porta.0
  8. Config Lcd = 16 * 2
  9.  
  10. Const Krok_pot = 2                                          'czas w setkach milisekund
  11.  
  12. Config Timer1 = Timer , Prescale = 1024 , Compare_a = Disconnect , Compare_b = Disconnect , Clear Timer = 1
  13. Enable Compare1a : On Compare1a Int_10ms Nosave : Compare1a = 155       '10ms @16MHz
  14.  
  15. Dim 10ms As Byte , 100ms As Byte
  16. Dim Address As Byte , Kod As Byte , Odebrany_kod As Bit
  17. Dim Licz1 As Byte , Licz2 As Byte
  18. Dim Glosniej_krok As Byte , Ciszej_krok As Byte
  19.  
  20. Config Pind.0 = Input : Portd.0 = 1 : Sw1 Alias Pind.0
  21. Config Pind.1 = Input : Portd.1 = 1 : Sw2 Alias Pind.1
  22.  
  23. Config Portd.2 = Output : Portd.2 = 0 : Glosniej Alias Portd.2
  24. Config Portc.7 = Output : Portc.7 = 0 : Ciszej Alias Portc.7
  25.  
  26. Config Rc5 = Pind.2 , Wait = 2000
  27. On Int0 Rc5
  28. Config Int0 = Falling
  29.  
  30. Enable Int0
  31. Enable Interrupts
  32.  
  33. Do
  34.  
  35.   If 10ms = 1 Then
  36.     10ms = 0
  37.  
  38.     Gosub Przyciski
  39.     Incr 100ms
  40.  
  41.   End If
  42.  
  43.   If 100ms = 10 Then
  44.     100ms = 0
  45.  
  46.     If Glosniej_krok > 0 Then
  47.       Ciszej_krok = 0
  48.       Decr Glosniej_krok
  49.       If Glosniej_krok = 0 Then Reset Glosniej
  50.     End If
  51.  
  52.     If Ciszej_krok > 0 Then
  53.       Glosniej_krok = 0
  54.       Decr Ciszej_krok
  55.       If Ciszej_krok = 0 Then Reset Ciszej
  56.     End If
  57.  
  58.   End If
  59.  
  60.   If Odebrany_kod = 1 Then
  61.     If Address <> 255 Then
  62.       Select Case Kod
  63.         Case 16 : Set Glosniej
  64.                   Glosniej_krok = Krok_pot
  65.         Case 17 : Set Ciszej
  66.                   Ciszej_krok = Krok_pot
  67.       End Select
  68.     End If
  69.     Odebrany_kod = 0
  70.   End If
  71.  
  72. Loop
  73. End
  74.  
  75. Rc5:
  76.  
  77.   Disable Int0
  78.   Gifr.intf0 = 1
  79.   Enable Interrupts
  80.  
  81.   Getrc5(address , Kod)
  82.     Kod = Kod And &B01111111
  83.     Odebrany_kod = 1
  84.  
  85.   Disable Interrupts
  86.   Enable Int0
  87.   Gifr.intf0 = 1
  88.  
  89. Return
  90.  
  91. Int_10ms:
  92.  
  93.   $asm
  94.   PUSH R24
  95.   !in R24, sreg
  96.   PUSH  R24
  97.   $end Asm
  98.  
  99.   10ms = 1
  100.  
  101.   $asm
  102.   POP  R24
  103.   !out sreg, r24
  104.   POP R24
  105.   $end Asm
  106.  
  107. Return
  108.  
  109. Przyciski:
  110.  
  111.   If Sw1 = 0 Then
  112.     If Licz1 < 255 Then Incr Licz1
  113.     If Licz1 = 75 Then
  114.       'dlugie nacisniecie przycisku
  115.       'zrob cos
  116.     End If
  117.   Else
  118.     If Licz1 > 1 Then
  119.       If Licz1 < 75 Then
  120.         Set Glosniej
  121.         Glosniej_krok = Krok_pot
  122.       End If
  123.     End If
  124.     Licz1 = 0
  125.   End If
  126.  
  127.  
  128.   If Sw2 = 0 Then
  129.     If Licz2 < 255 Then Incr Licz2
  130.     If Licz2 = 75 Then
  131.       'dlugie nacisniecie przycisku
  132.       'zrob cos
  133.     End If
  134.   Else
  135.     If Licz2 > 1 Then
  136.       If Licz2 < 75 Then
  137.         Set Ciszej
  138.         Ciszej_krok = Krok_pot
  139.       End If
  140.     End If
  141.     Licz2 = 0
  142.   End If
  143.  
  144. Return
Awatar użytkownika
kulamario
Posty: 207
Rejestracja: 17 sie 2015, 20:05
Lokalizacja: Greystones
Kontakt:

Re: Potencjometr Alps z silniczkiem sterowanie pilotem RC5

Post autor: kulamario » 13 lis 2017, 0:57

wywaliłem obsługę przycisków ale kod nie działa
tz działa tak ze jak wciśniesz up to jedzie cały czas up jak wciśniesz down to jedzie cały czas down ale tylko raz możesz uruchomić motor jak chcesz drugi raz ruszyć motorem to już trzeba reset procka zrobić
Awatar użytkownika
pimowo
Posty: 392
Rejestracja: 28 maja 2016, 10:07

Re: Potencjometr Alps z silniczkiem sterowanie pilotem RC5

Post autor: pimowo » 13 lis 2017, 10:45

Zamiast wywalać to sprawdź czy przyciski działają...
ODPOWIEDZ