Skocz do zawartości

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


STOPER17

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

????

Link do komentarza
Share on other sites

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
Link do komentarza
Share on other sites

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ą.

Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

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
Link do komentarza
Share on other sites

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:)

Link do komentarza
Share on other sites

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

Link do komentarza
Share on other sites

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.

Link do komentarza
Share on other sites

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...

Link do komentarza
Share on other sites

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Anonim
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.

×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.