- Wymagania dotyczące oprogramowania i sprzętu:
- Koncepcja stojąca za:
- Schemat obwodu:
- Program Arduino:
- Pracujący:
Wszystko zaczęło się od małej gry z mrocznych wieków zwanej „Mario”, od czasów, gdy byłem malutkim facetem skaczącym na kaczki, aby uratować moją księżniczkę, aż do bycia męskim przystojnym księciem wędrującym po Persji (Prince of Persia) walczącym z ciemnością Aby ocalić swój świat, byłem wielkim fanem gier wideo i dorastałem, grając w nie. Ale czasami się nudzą i czuję się mniej w to zaangażowany. Obecnie zaawansowane konsole do gier umożliwiają wirtualne granie i pomagają nam poczuć grę o wiele lepiej niż klawiatura czy mysz.
Będąc entuzjastą Arduino, zmęczyłem się grą w słynną grę „Angry Birds” za pomocą klawiatury i myszy i postanowiłem zbudować własny kontroler gier za pomocą czujnika Flex i potencjometru. Po pociągnięciu czujnika flexu ptak na katapulty również zostanie pociągnięty i za pomocą potencjometru można ustawić kierunek, w którym ma być wystrzelony. Następnie, po zwolnieniu czujnika flex, ptak zostanie wystrzelony. Bardzo mi się to podobało, więc jeśli masz ochotę zbudować coś bardzo podobnego, ten samouczek będzie pomocny. Ten samouczek będzie również pomocny w sterowaniu kursorem myszy za pomocą potencjometru.
Wymagania dotyczące oprogramowania i sprzętu:
Oprogramowanie:
- Arduino IDE
- Przetwarzanie IDE
- Gra Angry Birds na komputerze
Sprzęt komputerowy:
- Arduino (dowolna wersja)
- Potencjometr
- Czujnik Flex
- Rezystor 47 kiloomów
- Podłączanie przewodów
- Płytka prototypowa
Koncepcja stojąca za:
Arduino Nadzorcza odczytuje wartości z potencjometru i Flex Senor i przesyła je do laptopa / PC poprzez port komunikacyjny USB poprzez normalne Serial.write () funkcji. Następnie odczytujemy te informacje za pomocą Processing i sterujemy kursorem myszy za pomocą klasy Robot w Javie, która jest obsługiwana przez IDE przetwarzania. Zaprogramowaliśmy IDE przetwarzania w taki sposób, że po pociągnięciu czujnika Flex zostanie wykonane kliknięcie myszą i na podstawie tego, jak bardzo zostanie pociągnięty, wskaźnik myszy będzie się poruszał w kierunku X. Następnie na podstawie wartości z potencjometru przesuniemy kursor myszy w kierunku Y, dzięki czemu możemy ustawić kierunek, w którym ma być wystrzelony ptak.
Schemat obwodu:
Obwód do grania w Angry Bird za pomocą czujnika Flex i potencjometru jest łatwy.
W prosty sposób podłączyliśmy potencjometr i czujnik flex do wejść analogowych (A0, A1) Arduino. Wyjście czujnika Flex jest również obniżane za pomocą rezystora obniżającego 47K.
Możesz podłączyć go bezpośrednio na płytce stykowej lub przylutować do płytki Perf i zamontować na rękawiczkach lub czymś, co uczyni go bardziej kreatywnym. Po prostu użyłem płytki prototypowej do wykonania połączeń, jak pokazano poniżej:
Program Arduino:
Pełny kod Arduino znajduje się na końcu samouczka. Poniżej wyjaśniono kilka ważnych kwestii.
Inicjalizujemy program do pracy z prędkością 9600 bodów i zaczynamy odczytywać wartości z czujnika Flex i Potencjometru. Jak wiemy, funkcja serial.write () może wysyłać tylko jeden bajt danych na raz. Ponieważ jeden bajt to 8 bitów i 2 ^ 8 = 256. Będziemy mogli przesyłać wartości od 0 do 256. Musimy więc skompresować wartości wyjścia czujnika Flex i wyjścia potencjometru do 0 do 256.
W tym celu używamy funkcji map () w Arduino. Wszystkie wartości z czujnika flex są przeliczane z 5 na 100, więc kiedy zginamy czujnik, będzie on zwiększał się od 5, a po zwolnieniu wróci do 5. Wspominając o kliknięciach myszą, używana jest wartość 1 i 0. Kiedy wysyłane jest 1, przycisk myszy jest naciskany, a kiedy wysyłane jest 0, mysz jest zwalniana.
if (FlexValue> = 65 && FlexValue <= 120) // mój czujnik flex zmienia się od 65 do 120, twój może być inny {FlexValue = map (FlexValue, 120,65,0,100); // na podstawie zginania przekonwertuj na 0 do 100, jeśli (FlexValue> = 5) // 1 i 0 jest używane do kliknięcia myszą, więc zacznij od 5 {Mclick = true; Serial.write (1); // 1 jest wysyłany, aby kliknąć lewym przyciskiem myszy Serial.write (FlexValue); // Wartość Flex to odległość, na jaką należy przesunąć mysz w kierunku X} else {Mclick = false; Serial.write (0);}}
Podobnie wartości z potencjometru są konwertowane ze 101 na 200 przy użyciu funkcji map () i wysyłane do portu COM laptopa wykorzystującego funkcję Serial.write (), jak pokazano poniżej.
if (potValue <= 200) {potValue = map (potValue, 0,200,101,201); // Oparte z kolei na konwersję do 101 na 201 Serial.write (potValue); // Wartość puli to odległość, na jaką należy przesunąć mysz w kierunku Y}
Pozostała część programu jest wyjaśniona za pomocą komentarzy.
Kod przetwarzania:
Processing jest aplikacją programistyczną Open Source i można ją łatwo pobrać i wykorzystać do tworzenia interesujących projektów przy użyciu Arduino lub innych mikrokontrolerów. Zrealizowaliśmy już kilka projektów z wykorzystaniem Przetwarzania i możesz je sprawdzić, klikając poniższe linki.
- DIY Radio FM za pomocą przetwarzania
- Sterowanie wirtualną rzeczywistością / gestami za pomocą Arduino
- Prywatny pokój rozmów wykorzystujący Arduino.
- System radarowy Arduino wykorzystujący aplikację przetwarzającą i czujnik ultradźwiękowy
- Wykrywanie i śledzenie twarzy w czasie rzeczywistym za pomocą Arduino
- DIY Prędkościomierz wykorzystujący Arduino i przetwarzanie
- Gra w ping ponga przy użyciu akcelerometru Arduino
- Dwunożny robot wykorzystujący Arduino
- Kamera termowizyjna Arduino DIY
W tym projekcie użyliśmy IDE przetwarzania do odczytu wartości portu COM i sterowania wskaźnikiem myszy na podstawie wartości otrzymanych przez port COM. Kompletne przetwarzania kodu dla tego kontrolera gier Angry Bird można pobrać z poniższego linku:
- Przetwarzanie kodu dla tego kontrolera gry Angry Bird (kliknij prawym przyciskiem myszy i „Zapisz link jako”)
Program Arduino można znaleźć na końcu tego samouczka. Kod przetwarzania został zmodyfikowany tak, aby pasował do naszych celów, na podstawie kodu podanego przez yoggy'ego na jego stronie GitHub.
Dane przychodzące z portu COM należy odczytywać w tej samej szybkości transmisji, z jaką zostały wysłane z Arduino. Sprawdź również, który port COM jest podłączony do Twojego Arduino za pomocą menedżera urządzeń. Mój Arduino był podłączony do COM3 i było 0 th portu w komputerze i szybkość transmisji w Arduino 9600 był więc kod jest następujący
port = nowy Serial (this, Serial.list (), 9600);
Gdy zaczniemy odczytywać wartości, rozróżniamy je, rozpoznając je na podstawie ich wartości na podstawie tego, jak wysłaliśmy z Arduino. Wartości są ponownie mapowane od 0 do 100, dzięki czemu będziemy mogli sterować myszą na podstawie tej wartości.
if (port.available ()> 0) {data = port.read (); println (dane); // Odczytaj dane z portu COM i zapisz je w danych} if (data> = 101 && data <= 201) // Jeśli wartość wynosi od 101 do 201, to musi pochodzić z Potentiometer {Turn = int (map (data 101, 201, 100)); // Użyj tej wartości, aby włączyć catapullt} if (data> = 5 && data <= 100) // Jeśli wartość wynosi od 5 do 100, to musi pochodzić z czujnika Flex {Pull = int (map (data, 5,100, 0,100));} // Użyj tej wartości, aby wyciągnąć katapultę if (data == 1) click = true; // Użyj tej wartości, aby nacisnąć przycisk myszy if (data == 0) click = false; // Użyj tej wartości, aby zwolnić przycisk myszy
Po skategoryzowaniu danych możemy sterować myszą za pomocą klasy Robot Java w przetwarzaniu. Polecenie robot.mouseMove (crntX-Pull, crntY + Turn); można użyć do przesunięcia myszy w dowolne żądane miejsce i linie robot.mousePress (InputEvent.BUTTON1_DOWN_MASK); i robot.mouseRelease (InputEvent.BUTTON1_DOWN_MASK); można użyć do odpowiednio naciśnięcia lub zwolnienia przycisku myszy.
if (click == false) // kiedy Flex Sesnor nie jest ściągany {crntX = (int) p.getX (); crntY = (int) p.getY (); if (Pull> 50) robot.mouseRelease (InputEvent.BUTTON1_DOWN_MASK); // Zwolnij przycisk myszy} if (click == true) // kiedy Flex Sesnor zostanie wyciągnięty {robot.mousePress (InputEvent.BUTTON1_DOWN_MASK); // Naciśnij przycisk myszy robot.mouseMove (crntX-Pull, crntY + Turn); // Przesuń mysz na podstawie wartości Flex i POT}}
IDE przetwarzania po uruchomieniu wyświetli również małe okno dialogowe, w którym można znaleźć wartości ciągnięcia, obrotu i stanu kliknięcia myszą, jak pokazano poniżej
Ten szczegół może służyć do debugowania Programu lub poprawiania wszelkich wymaganych danych.
Pracujący:
Aby projekt Angry Bird działał przy użyciu dostarczonego kodu, zmontuj swój sprzęt zgodnie ze schematem obwodu i prześlij podany kod Arduino. Następnie zanotuj, do którego portu COM jest podłączone Twoje Arduino i wprowadź niezbędne zmiany w kodzie przetwarzania i uruchom szkic przetwarzania.
Teraz po prostu uruchom grę Angry Bird i umieść kursor w pobliżu katapulty i pociągnij czujnik flex, aby pociągnąć ptaka i ustaw kierunek za pomocą potencjometru. Po ustawieniu kierunku zwolnij czujnik Flex
EEEEWWWWWEEEEEEEEEE !!!!!!!!!!……………
Twój ptak zostanie wyrzucony prosto w powietrze i BUMM !! Na świnkach. Całość pracy można znaleźć w poniższym filmie.
Mam nadzieję, że spodobał Ci się projekt i udało Ci się zbudować coś podobnego. Jeśli masz jakiekolwiek wątpliwości, możesz skontaktować się ze mną w sekcji komentarzy lub zadać pytanie na forum z pytaniami technicznymi.
A teraz czas wbić się w te świnki i odzyskać nasze ptasie jaja !!!!