Bascom hc-05 i 3 PWM jak ???

Pytania, kody i porady dotyczące nie tylko Bascom.
Pikczu
Posty: 389
Rejestracja: 17 sie 2015, 13:46
Lokalizacja: Dublin, Ireland
Kontakt:

Re: Bascom hc-05 i 3 PWM jak ???

Post autor: Pikczu » 01 sty 2019, 15:04

grafii1 pisze:
01 sty 2019, 14:36
ok przetestuje i dam znać . Jak zachowa się program w chwili gdy ciąg będzie B12B45B244B33B210B11 cyfry po znaczniku b są przypadkowe .
Nie kumam o jaki znacznik chodzi ???
Druga sprawa pewnie nie masz bufora na odbiorze.
A co wysyła aplikacja jak zmienisz samo R? czy G i B tez są wysyłane??
Postaraj się opisać to lepiej żeby cie za język nie trzeba było ciągnąć.

Split jest sprawdzone i działa bardzo dobrze do tego w połączeniu z select case można to zrobicćw bardzo przejrzysty sposób.
Zaraz tu coś w kleje tylko muszę to ciut obrobić.
grafii1
Posty: 58
Rejestracja: 23 wrz 2018, 11:28

Re: Bascom hc-05 i 3 PWM jak ???

Post autor: grafii1 » 01 sty 2019, 15:06

do testów 9600 , timer1 - zegar na przerwaniu , żle się wyraziłem ze znacznikiem b , to po prostu b w ciągu , bufor jest , jest różnie potrafi wysłać raz samo "R" a innym razem "R"..."G"."G"..."B"... , zależy od tego jak się posługujesz suwakami w aplikacji
Ostatnio zmieniony 01 sty 2019, 15:28 przez grafii1, łącznie zmieniany 1 raz.
Pikczu
Posty: 389
Rejestracja: 17 sie 2015, 13:46
Lokalizacja: Dublin, Ireland
Kontakt:

Re: Bascom hc-05 i 3 PWM jak ???

Post autor: Pikczu » 01 sty 2019, 15:18

No dobra a umiesz używać plików * .inc?
Czy pisałeś coś w tzw project mode?
grafii1
Posty: 58
Rejestracja: 23 wrz 2018, 11:28

Re: Bascom hc-05 i 3 PWM jak ???

Post autor: grafii1 » 01 sty 2019, 15:25

Niestety nie , programy z bascom testuje na "żywca" na "nano" i uważam się za początkującego w tej dziedzinie
Pikczu
Posty: 389
Rejestracja: 17 sie 2015, 13:46
Lokalizacja: Dublin, Ireland
Kontakt:

Re: Bascom hc-05 i 3 PWM jak ???

Post autor: Pikczu » 01 sty 2019, 15:33

ok to obejrzyj to film z tego postu:
viewtopic.php?f=16&t=157
A potem rozpakuj i otwórz ten projekt.

Będziesz go musiał sporo pociąć żeby spełnił twoje oczekiwania ale może coś z tego będzie.
Nie masz wymaganych uprawnień, aby zobaczyć pliki załączone do tego posta.
Pikczu
Posty: 389
Rejestracja: 17 sie 2015, 13:46
Lokalizacja: Dublin, Ireland
Kontakt:

Re: Bascom hc-05 i 3 PWM jak ???

Post autor: Pikczu » 01 sty 2019, 16:03

Jak się nazywa ta aplikacja ?
A czy aplikacja zawsze wysyła najpierw literę R?? bo split można ustawić żeby reagowało na przykładowo literę R po czym reszta danych będzie po sortowana przez selec case.
Bartka pomysł z wyławianiem liter R , G i B może być jedynym sensownym rozwiązaniem jeśli te litery nie są wysyłane zawsze w tej samej kolejności.
Awatar użytkownika
niveasoft
Posty: 1213
Rejestracja: 17 sie 2015, 12:13
Kontakt:

Re: Bascom hc-05 i 3 PWM jak ???

Post autor: niveasoft » 01 sty 2019, 17:15

Łap. Działa jak złoto. Możesz go zawalić danymi R20B50R80R81G100 itd. Program jest napisany jak na Modbusa.

Działa tak. W stanie spoczynku czeka na jakąś literkę. Jeśli to będzie R to zapamięta że zbieramy cyferki do R, analogicznie do innych kolorów.
Teraz ciekawostka. Jeśli czekamy na drugą lub trzecią cyfrę do jakiejś literki a tu nagle nowa literka to znaczy że już następnych do tej poprzedniej nie będzie. To znak że trzeba najpierw przetworzyć te nazbierane. Jeśli to było B22 a teraz przyszło dalej B22R to programik najpierw przetworzy Bxx a zapamięta że teraz zbieramy R ;)
Jeśli w którymkolwiek momencie mamy już cztery znaki to przetwarzamy bo więcej string mieć nie powinien (max255 i literka).

Teraz część z Modbusa. Może się zdarzyć, że wyślesz tylko dwa lub trzy znaki. Wtedy program odczeka cztery znaki od ostatniego otrzymanego i i tak przetworzy odebraną ramkę ;)

Piszesz trochę niejasno i już nie wiedziałem czy mamy wolny Timer2 czy nie.
Niemniej na obrazku widać jak pięknie się wszystko zbiera. Program printuje nowe wartości TYLKO jeśli się różnią od poprzednich.
  1. $regfile = "m328pdef.dat"
  2. $crystal = 16000000
  3. $hwstack = 64
  4. $swstack = 16
  5. $framesize = 64
  6. $baud = 9600
  7.  
  8. Debug On
  9.  
  10. Config Submode = New
  11. Const _valcheck = 1                                         'sprawdzanie czy dla instrukcji Val podaliśmy tylko cyfry
  12.  
  13.  
  14. Config Serialin0 = Buffered , Size = 20
  15.  
  16. '@9600 baud, (1/9600)*8=1/1200 Hz = 0.83 ms
  17. 'poczekamy cztery znaki = 3,25ms
  18.  
  19. Config Timer2 = Timer , Prescale = 256 , Clear_timer = 1
  20. Compare2a = 199
  21. On Compare2a Timer2_isr                                     '3,2ms @16MHz/256
  22. Stop Timer2
  23.  
  24. Dim Char As String * 1 , Command As String * 4
  25. Dim Pwm_val(3) As Byte , Helpb As Byte , Rx_started As Byte
  26. Dim Val_nr As Byte , Str_val As String * 3 , Temp_nr As Byte
  27. Dim R_val As Byte , G_val As Byte , B_val As Byte
  28.  
  29. Enable Compare2a
  30. Enable Interrupts
  31.  
  32. Do
  33.  
  34.  If 0 < Ischarwaiting() Then
  35.  
  36.   Char = Inkey()
  37.  
  38.   Stop Timer2
  39.   Timer2 = 0
  40.  
  41.   Select Case Char
  42.    Case "R" : Temp_nr = 1
  43.    Case "G" : Temp_nr = 2
  44.    Case "B" : Temp_nr = 3
  45.    Case Else
  46.     Temp_nr = 0
  47.   End Select
  48.  
  49.   If Temp_nr > 0 Then                                       'jeśli znaleziono literkę
  50.  
  51.    If Rx_started = 0 Then                                   'dopiero zaczynamy zbierać znaki
  52.     Rx_started = 1                                          'flaga
  53.     Command = Char                                          'to dopiero początek stringa
  54.     Val_nr = Temp_nr                                        'zapamiętaj czy zbieramy R,G, czy B
  55.     'Start Timer2                                            'uruchom Timer
  56.  
  57.    Else                                                     'zbieraliśmy znaki a tu nowa literka
  58.    'nie dodajemy literki
  59.  
  60.     Str_val = Mid(command , 2)                              'odcinamy literkę z lewej
  61.     Helpb = Val(str_val)
  62.     If Err = 0 Then Pwm_val(val_nr) = Helpb                 'testujemy wartość
  63.  
  64.     Command = Char                                          'zbieramy od nowa (nowa literka z przodu)
  65.     Val_nr = Temp_nr
  66.     'Start Timer2
  67.  
  68.    End If
  69.  
  70.   Else                                                      'nie było literki więc to cyfra
  71.  
  72.     Command = Command + Char
  73.  
  74.     If Len(command) > 3 Then                                'jeśli mamy już cztery znaki R255 lub G155
  75.      Str_val = Mid(command , 2)                             'odcinamy literkę z lewej
  76.      Helpb = Val(str_val)
  77.      If Err = 0 Then Pwm_val(val_nr) = Helpb                'testujemy wartość
  78.      Command = ""
  79.      Rx_started = 0
  80.     End If
  81.  
  82.  
  83.   'jeśli literka
  84.   End If
  85.  
  86.   'if Ischarwaiting()
  87.  End If
  88.  
  89.  
  90.  'tu na potrzeby Debug
  91.  If R_val <> Pwm_val(1) Then
  92.   R_val = Pwm_val(1)
  93.   Print "Nowe R_val=" ; R_val
  94.  End If
  95.  If G_val <> Pwm_val(2) Then
  96.   G_val = Pwm_val(2)
  97.   Print "Nowe G_val=" ; G_val
  98.  End If
  99.  If B_val <> Pwm_val(3) Then
  100.   B_val = Pwm_val(3)
  101.   Print "Nowe B_val=" ; B_val
  102.  End If
  103.  
  104.  If Rx_started = 1 Then Start Timer2
  105.  
  106. Loop
  107. End
  108.  
  109. Timer2_isr:
  110.  Stop Timer2
  111.  Timer2 = 0
  112.  
  113.  Str_val = Mid(command , 2)                             'odcinamy literkę z lewej
  114.  Helpb = Val(str_val)
  115.  If Err = 0 Then Pwm_val(val_nr) = Helpb                    'testujemy wartość
  116.  Command = ""
  117.  Rx_started = 0
  118. Return
Nie masz wymaganych uprawnień, aby zobaczyć pliki załączone do tego posta.
grafii1
Posty: 58
Rejestracja: 23 wrz 2018, 11:28

Re: Bascom hc-05 i 3 PWM jak ???

Post autor: grafii1 » 01 sty 2019, 19:24

Witam , odpowiedź dla Pliczku , program to ogólnie dostępny "Bluetooth Electronics" co ciekawe apka generuje kod na ARDUINO .
Testowałem różne podejścia z funkcją SPLIT , co prawda nie za bardzo się nadaje do tego co potrzebuje.
Niveasoft , dzięki za zaangażowanie , timet2 jest wolny tylko timer1 mam wykorzystany , poskładam w raz ze swoimi wypocinami to w jedną całość i dam znać jak pracuje na „ żywca”. Jak wspominałem jestem początkującym w bascomie wiec dobrze się uczyć od ludzi których mają większą wiedzę w danym temacie niż ja . Za pomoc dziękuje Niveasoft oraz Pliczku i postaram się jak najszybciej poinformować jak to działa . :D
grafii1
Posty: 58
Rejestracja: 23 wrz 2018, 11:28

Re: Bascom hc-05 i 3 PWM jak ???

Post autor: grafii1 » 01 sty 2019, 21:28

To prawie działał ale troszku się zacina...
Nie masz wymaganych uprawnień, aby zobaczyć pliki załączone do tego posta.
Awatar użytkownika
niveasoft
Posty: 1213
Rejestracja: 17 sie 2015, 12:13
Kontakt:

Re: Bascom hc-05 i 3 PWM jak ???

Post autor: niveasoft » 01 sty 2019, 21:51

Chyba nie czytałeś uważnie co? :D
Program odpisuje TYLKO jeśli nowa wartość różni się od poprzedniej.
Tam gdzie coś zmieniłeś odpisał ;)

Zobacz sobie mój poprzedni screen. Specjalnie miałem w terminalu wpisane/przygotowane różne wartości bo by się nie odezwał.

Z drugiej strony...Zawsze zapominam, że od którejś wersji Bascom ma możliwość wysyłania przygotowanych komend. Jak na dołączonym obrazku.
Nie masz wymaganych uprawnień, aby zobaczyć pliki załączone do tego posta.
ODPOWIEDZ