Eğitimler
EsploraKart
Bu örnekte Esplora'nızı özelleştirilmiş bir bilgisayar oyun tablasına nasıl dönüştüreceğiniz gösterilmektedir. Bir video oyununa giriş olarak analog joystick ve dört anahtarı kullanır. Esplora bilgisayara standart bir klavye olarak görünecek, bilgisayar joystick hareketini ve tuş basışlarını tuş vuruşları olarak görecektir.
Bu örnekte seçilen yapılandırma, Windows, OSX ve Linux için kullanılabilen açık kaynaklı bir yarış oyunu olan SuperTuxKart için uygundur. Http://supertuxkart.sourceforge.net/ adresinden indirilebilir.
Gerekli Donanım
- Arduino Esplora
Devre
Bu örnek için yalnızca Arduino Esplora'nız gereklidir. Esplora'yı bir USB kablosuyla bilgisayarınıza bağlayın.
SuperTuxKart oyun kumandası olarak Esplora
Kod
SuperTuxKart oyunu ile oynamak için varsayılan tuşlar:
komuta | anahtar |
boğaz | KEY_UP_ARROW |
Fren | KEY_DOWN_ARROW |
Sağa dönün | KEY_RIGHT_ARROW |
Sola çevirin | KEY_LEFT_ARROW |
Ateş | SPACE_BAR |
Bükmek | V |
nitro | N- |
Arkana bak | B |
Bu klavye tuş vuruşlarını Esplora kartınızdaki kullanılabilir girişlerle eşlemeniz gerekir. Sekiz farklı düğmeyi işlemek için dizileri , sabit boyutlu değişkenlerin sıralı listelerini kullanırsınız. Her dizide, dizide okuduğunuz konumu izlemek için bir dizin (0'dan sayar) bulunur ve her konum bir sayı içerebilir.
Bu kod üç farklı dizi kullanır: biri okuyacağınız düğmeler için, ikincisi düğmelerin geçerli durumunu tutmak için bir saniye ve her düğmeyle ilişkili tuş vuruşlarını tutmak için üçüncüsü.
Esplora, bağlı bir bilgisayara USB klavye olarak görünme yeteneğine sahiptir, bu nedenle düğmelere bastığınızda ve joystick'i hareket ettirdiğinizde, tıpkı klavyenizdeki tuşlara basmak gibidir.
For () döngüsü, tüm düğmelerin ve kumanda kolunun durumunu kontrol eder. Düğmenin durumu değiştiyse, ilgili tuşa basma veya serbest bırakma bilgisayara gönderilir. Esplora'yı klavye veya fare olarak kullanma hakkında daha fazla bilgi için klavye kitaplığı referansına bakın.
Esplora Kart
This sketch turns the Esplora into a PC game pad.
It uses the both the analog joystick and the four switches.
By moving the joystick in a direction or by pressing a switch,
the PC will "see" that a key is pressed. If the PC is running
a game that has keyboard input, the Esplora can control it.
The default configuration is suitable for SuperTuxKart, an
open-source racing game. It can be downloaded from
http://supertuxkart.sourceforge.net/ .
Created on 22 november 2012
By Enrico Gueli <enrico.gueli@gmail.com>
*/
#include <Esplora.h>
/*
You're going to handle eight different buttons. You'll use arrays,
which are ordered lists of variables with a fixed size. Each array
has an index (counting from 0) to keep track of the position
you're reading in the array, and each position can contain a number.
This code uses three different arrays: one for the buttons you'll read;
a second to hold the current states of those buttons; and a third to hold
the keystrokes associated with each button.
*/
/*
This array holds the last sensed state of each of the buttons
you're reading.
Later in the code, you'll read the button states, and compare them
to the previous states that are stored in this array. If the two
states are different, it means that the button was either
pressed or released.
*/
bool buttonStates[8];
/*
This array holds the names of the buttons being read.
Later in the sketch, you'll use these names with
the method Esplora.readButton(x), where x
is one of these buttons.
*/
const byte buttons[] = {
JOYSTICK_DOWN,
JOYSTICK_LEFT,
JOYSTICK_UP,
JOYSTICK_RIGHT,
SWITCH_RIGHT, // fire
SWITCH_LEFT, // bend
SWITCH_UP, // nitro
SWITCH_DOWN, // look back
};
/*
This array tells what keystroke to send to the PC when a
button is pressed.
If you look at this array and the above one, you can see that
the "cursor down" keystroke is sent when the joystick is moved
down, the "cursor up" keystroke when the joystick is moved up
and so on.
*/
const char keystrokes[] = {
KEY_DOWN_ARROW,
KEY_LEFT_ARROW,
KEY_UP_ARROW,
KEY_RIGHT_ARROW,
' ',
'V',
'N',
'B'
};
/*
This is code is run only at startup, to initialize the
virtual USB keyboard.
*/
void setup() {
Keyboard.begin();
}
/*
After setup() is finished, this code is run continuously.
Here we continuously check if something happened with the
buttons.
*/
void loop() {
// Iterate through all the buttons:
for (byte thisButton = 0; thisButton < 8; thisButton++) {
bool lastState = buttonStates[thisButton];
bool newState = Esplora.readButton(buttons[thisButton]);
if (lastState != newState) { // Something changed!
/*
The Keyboard library allows you to "press" and "release" the
keys as two distinct actions. These actions can be
linked to the buttons we're handling.
*/
if (newState == PRESSED) {
Keyboard.press(keystrokes[thisButton]);
} else if (newState == RELEASED) {
Keyboard.release(keystrokes[thisButton]);
}
}
// Store the new button state, so you can sense a difference later:
buttonStates[thisButton] = newState;
}
/*
Wait a little bit (50ms) between a check and another.
When a mechanical switch is pressed or released, the
contacts may bounce very rapidly. If the check is done too
fast, these bounces may be confused as multiple presses and
may lead to unexpected behaviour.
*/
delay(50);
}