Skocz do zawartości

Przeszukaj forum

Pokazywanie wyników dla tagów 'gamepad'.

  • Szukaj wg tagów

    Wpisz tagi, oddzielając przecinkami.
  • Szukaj wg autora

Typ zawartości


Kategorie forum

  • Elektronika i programowanie
    • Elektronika
    • Arduino i ESP
    • Mikrokontrolery
    • Raspberry Pi
    • Inne komputery jednopłytkowe
    • Układy programowalne
    • Programowanie
    • Zasilanie
  • Artykuły, projekty, DIY
    • Artykuły redakcji (blog)
    • Artykuły użytkowników
    • Projekty - roboty
    • Projekty - DIY
    • Projekty - DIY (początkujący)
    • Projekty - w budowie (worklogi)
    • Wiadomości
  • Pozostałe
    • Oprogramowanie CAD
    • Druk 3D
    • Napędy
    • Mechanika
    • Zawody/Konkursy/Wydarzenia
    • Sprzedam/Kupię/Zamienię/Praca
    • Inne
  • Ogólne
    • Ogłoszenia organizacyjne
    • Dyskusje o FORBOT.pl
    • Na luzie
    • Kosz

Szukaj wyników w...

Znajdź wyniki, które zawierają...


Data utworzenia

  • Rozpocznij

    Koniec


Ostatnia aktualizacja

  • Rozpocznij

    Koniec


Filtruj po ilości...

Data dołączenia

  • Rozpocznij

    Koniec


Grupa


Znaleziono 1 wynik

  1. Tym razem przygotowałem projekt na Arduino. Jest to gamepad który posiada 2 joysticki, 8 przycisków oraz diodę informującą o zasilaniu. Całością steruje Arduino Pro Mini. Budowa Części użyte do budowy: Arduino Pro Mini 328 5V/16MHz Konwerter UART-USB PL2303TA 2x Joystick z przyciskiem 8x przycisk Tact Switch Płytka uniwersalna 30x70mm Czerwona dioda 3mm, rezystor 330Ω, listwa goldpin, przewody Obudowę wykonałem ze sztywnego kartonu. Wewnątrz znajduje się płytka z Arduino oraz 2 joysticki Na górnym panelu obudowy znajdują się przyciski oraz dioda które podłącza się za pomocą wtyków goldpin Po złożeniu wszystkiego w całość pad wygląda tak: Pada podłącza się do komputera za pomocą konwertera UART-USB, od góry znajduje się otwór na wyjściu uart z Arduino Schemat połączeń Oprogramowanie Po stronie Arduino w pętli sprawdzam stan przycisków i jeśli stan przycisku ulegnie zmianie wysyłam informację o zmianie stanu przycisku do komputera for(int i=0; i<10; i++) { // Dla każdego przycisku btn = digitalRead(btnPins[i]); // Odczyt stanu przycisku if(btn != state[i+8]) { // Jeśli stan przycisku różni się od tego który jest zapisany w zmiennej state[i+8] = btn; // Aktualizacja stanu przycisku w zmiennej text = btnPrefix+i+!btn; Serial.write(text.c_str()); // Wysyłanie informacji o zmianie stanu przycisku } } Podobnie działają joysticki, jeśli joystick jest wychylony w którąś stronę to informacja o skierowaniu go w tą stronę będzie wysyłana dopóki nie zmieni on pozycji. Po stronie komputera działa skrypt w Pythonie który odbiera sygnały z Arduino i symuluje klawiaturę oraz mysz. Na początku wczytywany jest plik konfiguracyjny (jeśli został podany) oraz nawiązywane jest połączenie z Arduino. ports = self.listSerialPorts() # Wyszukiwanie dostępnych portów if(len(ports) > 0): if(len(sys.argv) > 1): # Jeśli została podana ścieżka do pliku konfiguracyjnego if(os.path.isfile(sys.argv[1])): # i plik istnieje self.config.read(sys.argv[1]) # Jest otwierany self.readSettings() # Odczytywane są akcje przypisane przyciskom i joystickom if(len(ports) == 1): # Jeśli dostępny jest jeden port self.serial.port = ports[0] else: # Jeśli dostępnych jest więcej portów połączenie jest nawiązywane z tym podanym w pliku konfiguracyjnym lub z pierwszym dostępnym if(self.config.has_section('Config') and self.config.has_option('Config', 'DefaultPort') and self.config['Config']['DefaultPort'] in ports): self.serial.port = self.config['Config']['DefaultPort'] else: self.serial.port = ports[0] self.serial.open() # Otwieranie połączenia print("Połączono z portem ", self.serial.port) self.listen() # Nasłuchiwanie sygnałów z Arduino else: print("Nie wykryto żadnych portów!") Po odebraniu sygnału informacja jest analizowana i wykonywana jest akcja aktualnie przypisana do tego stanu przycisku/joysticka. if(event in pyautogui.KEYBOARD_KEYS): # Wciśnięcie określonego przycisku na klawiaturze pyautogui.keyDown(event) if(state == '1') else pyautogui.keyUp(event) elif(event == 'mouseUp' and state == '1'): # Poruszanie kursorem w określonym kierunku pyautogui.moveRel(None, -speed) ... elif(event == 'LMB'): # Wciśnięcie określonego przycisku myszy pyautogui.mouseDown() if state == '1' else pyautogui.mouseUp() ... elif(event == 'scrollDown' and state == '1'): # Przewijanie w góre/dół pyautogui.scroll(-25) elif(event == 'cursorspeed' and state == '1'): # Zmiana prędkości poruszania kursorem if(self.mouseSpeedSelected == len(self.mouseSpeed)-1): self.mouseSpeedSelected = 0 else: self.mouseSpeedSelected += 1 print("Ustawiono szybkość poruszania kursora na", self.mouseSpeed[self.mouseSpeedSelected]) elif(re.search(r'^(ctrl|alt|shift)\+([a-zA-Z])$', event)): # Proste skróty klawiszowe keys = re.search(r'^(ctrl|alt|shift)\+([a-zA-Z])$', event).groups() pyautogui.hotkey(keys[0], keys[1]) Akcje przypisane do konkretnych przycisków/stanów joysticków można ustawiać w pliku konfiguracyjnym, następnie wystarczy wskazać wybrany plik konfiguracyjny podczas uruchamiania skryptu pythona. Kompletny kod znajduje się w załączniku. Prezentacja działania ArduPad.rar
×
×
  • Utwórz nowe...