Skocz do zawartości

[bascom] [c] i szeregowe połączenie z prockiem (obsługa dwóch klawiszy klwiatury na raz)


Pomocna odpowiedź

na week postaram się go przetestować 🙂 zawsze to już coś do przodu 😃

i tak jestem bardzo wdzięczny a pomoc 😅

[ Dodano: 22-09-2011, 22:15 ]

Teraz jak do mnie dotarło o co chodzi, to jest jeszcze bardzo proste rozwiązanie tego problemu. Może trochę go obchodzące, ale zawsze to problem z głowy.

Otóż wystarczy przypisać inny klawisz do skrętu i jazdy na wprost jednocześnie 😃.

typu :

w= do przod

d= do przodu i w prawo

c= do tylu i w prawo

x= do tylu

z= w lewo i do tyłu

a= w lewo i do przodu

????

typu :

w= do przod

d= do przodu i w prawo

c= do tylu i w prawo

x= do tylu

z= w lewo i do tyłu

a= w lewo i do przodu

????

Na przykład tak, jak tobie jest wygodniej.

ProeXtreme staram się zmodyfikować twój program o opcję :

kliknij "1" to pwm1a=200

kliknij "2" to pwm1a=255

co mam dopisać i gdzie by móc z tego korzystać?

Generalnie programik dopasowałem do swoich potrzeb jeśli chodzi o porty i jest G, chcę jeszcze móc zmieniać "prędkości" Przyznaje się że to co próbowałem dopisać to na chybił trafił. W prostym programie gdzie sam wiersz który odpowiada za tą zmianę działa pięknie, a tu nie chce;/

    $regfile = "m8def.dat"
   $crystal = 8000000
   $baud = 9600

   Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down , Prescale = 8

   '----------------piny do skręcania-----------------------------------

   Config Portd.1 = Output
   Config Portd.2 = Output
   Config Portd.3 = Output

  '-----------------piny do ruszania---------------------------------------

   Config Portd.4 = Output
   Config Portd.5 = Output

  '-----------------skróty do skręcania-----------------------------------

   Lewy Alias Portd.1
   Prostuj Alias Portd.2
   Prawy Alias Portd.3

   '----------------skróty do ruszania--------------------------------------

   Przod Alias Portd.4
   Tyl Alias Portd.5




   Dim Znak As String * 1
   Dim Ruch As Byte
   Dim Kierunek As Byte
    Dim Uart As Byte

   Prawy = 0
   Prostuj = 0
   Lewy = 0
   Przod = 0
   Tyl = 0



   Do
      Znak = Waitkey()

      If Znak = "w" Or Znak = "s" Then
         Ruch = Znak
        Znak = "m"
       Kierunek = Znak
      Else
         If Znak = "a" Or Znak = "d" Then
            Kierunek = Znak
         Else
            Znak = "m"
            Ruch = Znak
            Kierunek = Znak

     If Znak = "1" Or Znak = "1" Then
         Uart = Znak
        Znak = "m"
       Ruch = Znak


      End If
      End If
      End If

   '--------------------------ustwienie predkosci------------------------

                     If Chr(uart) <> "1" And Chr(uart) <> "2" Then
                     End If
                     If Chr(uart) = "1" Then
                     Pwm1a = 170
                     Print "1"
                     End If

                     If Chr(uart) = "2" Then
                        Pwm1a = 255
                        Print "2"
                        End If



     '--------------------------------Jazda do przodu--------------------------------

      If Chr(ruch) = "w" And Chr(kierunek) <> "a" And Chr(kierunek) <> "d" Then

         Prostuj = 1
         Prawy = 0
         Lewy = 0
         Przod = 1
         Tyl = 0
         Print "W"
      End If

      If Chr(ruch) = "w" And Chr(kierunek) = "a" Then

         Prawy = 0
         Prostuj = 0
         Lewy = 1
         Przod = 1
         Tyl = 0
         Print "WA"
      End If

      If Chr(ruch) = "w" And Chr(kierunek) = "d" Then

         Prawy = 1
         Prostuj = 0
         Lewy = 0
         Przod = 1
         Tyl = 0
         Print "WD"
      End If

   '---------------------------------Jazda do tyłu---------------------------------

      If Chr(ruch) = "s" And Chr(kierunek) <> "a" And Chr(kierunek) <> "d" Then

         Lewy = 0
         Prawy = 0
         Prostuj = 1
         Przod = 0
         Tyl = 1
         Print "s"
      End If

      If Chr(ruch) = "s" And Chr(kierunek) = "a" Then
         Prawy = 0
         Lewy = 1
         Prostuj = 0
         Przod = 0
         Tyl = 1
         Print "SA"
      End If

      If Chr(ruch) = "s" And Chr(kierunek) = "d" Then
         Prawy = 1
         Lewy = 0
         Prostuj = 0
         Przod = 0
         Tyl = 1
         Print "SD"
      End If

   '-------------------------------------STOP--------------------------------------

   If Chr(ruch) <> "w" And Chr(ruch) <> "s" And Chr(kierunek) <> "a" And Chr(kierunek) <> "d" Then
      Prawy = 0
         Lewy = 0
         Prostuj = 0
         Przod = 0
         Tyl = 0
     Print "Stop"
  End If
loop
End

A to jak ty masz podpiętą tą klawiaturę ? Wysyłasz przez terminal po RS22 znaki czy co ? Takto raczej sterowania na wiele klawiszy nie zrobisz, chyba że będziesz je ładował do kolejki FIFO parami lub czwórkami, i interpretował np. w+d = do przodu i w prawo.

PS. tak tego też nei zrobisz, bo klawiatura przy naciśnięciu 2 klawiszy wyśle tylko nr. znaku o wyższym priorytecie w tablicy skanowania. Przynajmniej w Notatniku tak mi wyszło jak trzymałem naraz 2 klaw. Ale na pewno jest na to jakiś sposób, bo gry przecież tak działają.

ProeXtreme staram się zmodyfikować twój program o opcję :

kliknij "1" to pwm1a=200

kliknij "2" to pwm1a=255

Dodaj poniższy kod po Znak = Waitkey()

  If Znak = "1" Then Pwm1a = 150
  If Znak = "2" Then Pwm1a = 175
  If Znak = "3" Then Pwm1a = 200
  If Znak = "4" Then Pwm1a = 215
  If Znak = "5" Then Pwm1a = 230
  If Znak = "6" Then Pwm1a = 255
  • Pomogłeś! 1

ProeXtreme wielkie dzięki 😃 , teraz rozpocznę kolejną fazę rozbudowy mojego projektu, oczywiście na bazie programu twojego autorstwa. Jeszcze raz wielkie dzięki.

BlackJack moja komunikacja odbywa się przy pomocy konwerteru usb FT232RL także szeregowo PC - uC. Sterowanie chciałem uzyskać jak w grach komputerowych, przy czym rozwiązanie kolegi ProeXtreme jest również wygodne i bardzo poręczne:)

A ja bym po prostu podpiął do urządzonka 4 klawisze microswitch ułożone jak strzałki i po problemie. I poza tym nie musisz mieć komputera na linii układ wejścia->urządzenie

racje masz, tylko że w późniejszym etapie chcę pozbyć się przewodów i wykorzystać moduł btm222 do bezprzewodowej komunikacji, a 4 klawisze microswitch nie zapewnią mi tego

A może by napisać na komputer program któryw zależności od wcisnietych strzałek wyśle odpowiednie komendy po rs232?

Myślisz o tym by pozbyć się procka i bezpośrednio z pc sterować poszczególnymi odbiornikami?

czy przez rs232 bezpośrednio do procka?

P.S cały czas mamy na uwadze że w pewnym momencie chcę zrobić bezprzewodowe połączenie.

Nie, myślę o programie, który przetłumaczy to tak:

Klawiatura -> RS232 (przez btm)

↑ -> 1

→ -> 2

↓ -> 3

← -> 4

↑+→ -> 5

↑+← -> 6

↓+→ -> 7

↓+← -> 8

Swoją drogą nie wiem, czy taniej nie wyszłoby... Kupienie jakiegoś chińskiego autka RC i wymontowanie oraz przerobienie zawartej tam elektroniki...

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...