Sega MegaPi (4 / 6 steg)
Steg 4: Arduino skiss
Förskott är detta allt arbete med Jon Thysell. Jag har använt hans skiss för Leonardo utom jag använder en Pro Micro.
Detta fungerade bara utan några problem. Det är awesome! Men jag har provat det med sex knappen styrenheter kan du köpa på eBay just nu och det fungerar inte i sex knapp läge. Det finns givetvis några tidsfel där. Om du inte är sysslade om sex knapparna eller har olika styrenheter med billigt de närvarande erbjuder sedan utan problem (de eBay styrenheter är billigt - kort sladd, låg vikt, crappy knappen känsla!)
Programvara klokt men det verkar fungera bra. Bara ladda upp skissen och löda på trådarna enligt vad som beskrivs i skissen start på linje 43 även om jag ändrade det något som det finns olika pin numrering med mikro:
Controller DB9 stift till knappen flagga mappningar
Första kolumnen är den registeransvarige index, andra kolumnen
är den Arduino stift som regulatorns DB9 stift är
bifogas
ingång inputMap [] = {
{0, 2, upp, upp, Z}, / / P0 DB9 stift 1
{0, 3, ner, ner, Y}, / / P0 DB9 stift 2
{0, 4, vänster, X}, / / P0 DB9 stift 3
{0, 5 på höger, MODE}, / / P0 DB9 stift 4
{0, 6, a, B, 0}, / / P0 DB9 stift 6
{0, 7, START, C, 0}, / / P0 DB9 Pin 9
{1, A3, upp, upp, Z}, / / P1 DB9 stift 1
{1, A2, ner, ner, Y}, / / P1 DB9 stift 2
{1, A1, vänster, X}, / / P1 DB9 stift 3
{1, A0, på, rätt läge}, / / P1 DB9 stift 4
{1, 15, a, B, 0}, / / P1 DB9 stift 6
{1, 14, START, C, 0} / / P1 DB9 Pin 9
};
Du behöver också löda återstående trådarna enligt följande:
- P0 och P1 DB9 stift 5 till VCC
- P0 DB9 stift 7 till Arduino stift 8
- P1 DB9 stift 7 till Arduino Pin 9 (se linjerna 31 och 32 i skissen)
- P0 och P1 DB9 stift 8 till GND
DB9 pin konfigurationsinformation är här.
När du har detta gjort sedan Arduino visas som ett tangentbord och för varje knapptryckning skickas en viss tangenttryckning. Skissen stöd 3 och 6 knappen domänkontrollanter och gör detta automatiskt. Det är förmodligen bättre att använda en 6-knappen controller som det låter då de extra knapparna som ska användas när du spelar andra emulatorer. Den enda knappen som effektivt saknas är Välj. Jag har dock använt knappen Återställ för att tillhandahålla denna funktion genom att lägga till följande kod till skiss:
void readExtraButtons()
{
buttonState1 = digitalRead(buttonPin1);
buttonState2 = digitalRead(buttonPin2);
om (buttonState1 == låg & & buttonState1! = oldButtonState1) {
Keyboard.Print('w'); Skulle kunna använda detta som en SELECT-knappen
delayMicroseconds(1000);
}
oldButtonState1 = buttonState1;
om (buttonState2 == låg & & buttonState2! = oldButtonState2) {/ / gå igenom sex knappen lägen
om (sixButtonMode [0] == false & & sixButtonMode [1] == false)
sixButtonMode [0] = true;
annars om (sixButtonMode [0] == true & & sixButtonMode [1] == false) {
sixButtonMode [0] = false;
sixButtonMode [1] = true;
}
annars om (sixButtonMode [0] == false & & sixButtonMode [1] == true)
sixButtonMode [0] = true;
annat {
sixButtonMode [0] = false;
sixButtonMode [1] = false;
}
Keyboard.Print(sixButtonMode[0]);
Keyboard.println(sixButtonMode[1]);
}
oldButtonState2 = buttonState2;
}
Långt tryck cykler genom sex knapp läge som jag lagt till att försöka hjälpa de problem jag har försöker få billiga eBay styrenheten att arbeta. Du kan utelämna som eller använda lång pressen för att skicka olika viktiga stroke. Denna funktion kallas från loop()
Jag hade några frågor försöker lista ut hur man korrekt gränssnitt med emulatorn. Retropie sig behövs väldigt lite mixtrande för att få det upp allt och kör. Den bästa guiden för att konfigurera jag hittade här. Den frågan jag hade dock var denna guide förutsätter att du har USB-styrenheter som verkar PI som en Joystick/Joypad/Gamepad. I mitt fall domänkontrollanter som faktiskt verkar som ett tangentbord och det finns mycket lite information om hur du installerar ett tangentbord att arbeta med spel emulatorer. När jag säger väldigt menar lite jag jag inte kunde hitta något!
I slutändan nutted jag ut genom lägga märke till att det fanns ett exempel retroarch.cfg fil som har ett avsnitt med titeln på tangentbordet. Genom att använda det som mall och sedan hänvisar till knapp setup diagram på Retropie setup wiki kom jag upp med följande inledande rader för min egen retroarch.cfg fil:
# För Megadrive registeransvarige med tangentbord utgångar vi måste veta att den megadrive kartläggningen
# är udda. Se < en href = "https://github.com/petrockblog/RetroPie-Setup/wik..." rel = "nofollow" >< en rel = "nofollow" >< en rel = "nofollow" >< en rel = "nofollow" > https://github.com/petrockblog/RetroPie-Setup/wik... >>>>
# Controller A - Retroarch Y
# Controller B - Retroarch B
# Controller C - Retroarch A
# Controller X - Retroarch vänster knapp
# Controller Y - Retroarch X
# Controller Z - Retroarch höger knapp
# Controller Start - Retroarch Start
input_player1_a = c
input_player1_b = x
input_player1_y = z
input_player1_x = s
input_player1_l = en
input_player1_r = d
input_player1_start = ange
input_player1_select = w
input_player1_up = upp
input_player1_down = ner
input_player1_left = vänster
input_player1_right = höger
input_enable_hotkey = ange
input_exit_emulator = ner
input_player2_a = n
input_player2_b = b
input_player2_y = v
input_player2_x = g
input_player2_l = f
input_player2_r = h
input_player2_start = t
input_player2_up = jag
input_player2_down = k
input_player2_left = j
input_player2_right = l
Det är möjligt, med denna config fil, ställa in samtidiga knapptryckningar att göra speciella saker. Det viktigaste är att installera en sekvens för att avsluta spelet och gå tillbaka till emulatorn. I mitt fall jag trycker på START och ner tillsammans (se linjer input_enable_hotkey och input_exit_emulator). Detta är nyckel, som utan inställningen att du skulle behöva ett tangentbord inkopplad. Nu när allt är inställt på Megadrive kan man sitta där som det gjorde redan på 80-talet och kontrolleras helt av Gamepad.