Pitanje:
Kao ulazni uređaj koristite stari Nintendo NES kontroler
littlebirdceo
2009-11-02 10:18:55 UTC
view on stackexchange narkive permalink

Ima li netko dijagram pinouta za Nintendo NES kontroler? Želio bih spojiti NES kontroler na Arduino.

osim ako ne želite probati nabaviti konektor za spajanje za taj neobični NES utikač, zašto brinuti o pinoutu? Vjerojatno bih odsjekao originalni utikač i zamijenio ga DB-9 i ožičio po želji.
četiri odgovori:
#1
+7
Andrew S. Parnell
2009-11-07 04:08:34 UTC
view on stackexchange narkive permalink

NES Pad knjižnica ne samo da ima pinout, već je i sjajna klasa arduino za upotrebu NES kontrolera.

#2
+6
davr
2009-11-03 00:00:04 UTC
view on stackexchange narkive permalink

Evo još jedne stranice s nekim korisnim informacijama, uključujući dijagram signala.

  + ---- > Power (bijelo) | 5 + ---- ----- + 7 | x x o \ | o o o o | 4 + ------------ + 1 | | | | | | | + -> Prizemlje (smeđe) | | + ---- > Puls (crveni) | + ------- > zasun (narančasta) + ---------- > podaci (žuta)  
#3
+6
Michael Eakins
2010-11-04 05:30:13 UTC
view on stackexchange narkive permalink

Pronašao sam sjajan članak o Hack-A-Day u kojem opisujem vašu potragu. Ovaj je članak o povezivanju SNES kontrolera s Androidom koji koristi Arduino. Kako bih vam uštedio neke probleme s pregledavanjem članka, pronašao sam povezani kod koji su citirali:

Ovaj kôd koristi NES kontroler iz 1980-ih za upravljanje servo-motorom i LED-om sa Arduino. Ovim kodom jastučić 'gore' okreće servo na 180 stupnjeva, 'desno' na 90, a 'dolje' na 0 stupnjeva. Također, tipke A i B uključuju i isključuju LED. NES kontroler možete dobiti na ebayu za manje od 10,00 USD. Ovdje je sirovi crtež utikača kontrolera, četiri rupe s jedne strane i tri rupe s druge strane.


 0 - 0v (tlo ) + 5V --- 0 0 --ZAKLJUČAJ ništa --- 0 0 - ZATVARI ništa --- 0 0 --SERIJALNO IZLAZ 

Možete samo zabiti žice u rupe na utikaču kontrolera za izradu prototipa. +5 je povezan s Arduino +5 Ground to Arduino Ground Latch ide na Pin 2 (s ovim kodom) Clock to Pin 3 Serial Out to Pin 4

Servo podatkovna linija povezana je na Pin 10, a LED je na pinu 11.

Ako želite vidjeti ulaz kontrolera na serijskom monitoru, samo otvorite serijski monitor. Pokazat će vam binarne brojeve koji dolaze iz kontrolera. Svaki gumb ima svoj binarni broj. Na primjer, 'gore' je 11110111. Uključio sam // skriveni kôd Serial.println koji će prikazati "Gumb je pritisnut" ako pritisnete tipku za pokretanje. Samo obrišite '//' ako to želite koristiti. SNES utikač je drugačiji, zanima vas da ćete morati tražiti podatke o satu, zasunu, serijskom izlazu negdje drugdje.

Citat :

  / * INICIJALIZACIJA * / # uključuju <ServoTimer1.h>ServoTimer1 servo1; int zasun = 2; // postavimo sat za pričvršćivanje zasuna = 3; // postavljanje klina sata
int datin = 4; // postavimo podatke u pinbyte controller_data = 0; int ledpin = 11; / * SETUP * / void setup () {Serial.begin (57600); pinMode (zasun, IZLAZ); pinMode (sat, izlaz) ); pinMode (datin, INPUT); pinMode (ledpin, OUTPUT); digitalWrite (zasun, HIGH); digitalWrite (sat, HIGH); servo1.attach (10);} / * OVO ČITA PODATKE KONTROLERA * / void controllerRead () {data_kontrolera = 0; digitalWrite (zasun, NISKO); digitalWrite (sat, NISKO); digitalWrite (zasun, VISOKO); delayMicroseconds (2); digitalWrite (zasun, NIZKO); controller_data = digitalRead (datin); for (int i = 1; i < = 7; i ++) {digitalWrite (sat, VISOK); delayMicroseconds (2); controller_data = controller_data << 1; controller_data = controller_data + digitalRead (datin); delayMicroseconds (4); LOW);}} / * PROGRAM LED, SERVO I SERIJSKI NADZOR * / void loop () {controllerRead (); Serial.println (controller_data, BIN); // if (controller_data == B11101111) {// Serijski. println ("Gumb je pritisnut"); //} else {//Serial.println("Gumb nije pritisnut "); //} // za REFERENCE: // UP = 11110111 // DOLJE = 11111011 // LIJEVO = 11111101 // DESNO = 11111110 // SELECT = 11011111 // START = 11101111 // A = 01111111 // B = 10111111if (podaci_kontrolera == B01111111) {digitalWrite (ledpin, HIGH); } if (data_kontrolera == B10111111) {digitalWrite (ledpin, LOW);} if (data_kontrolera == B11110111) {servo1.write (180);} if (data_kontrolera == B11111011) {servo1.write (0);} if (kontroler_data == B11111110) {servo1.write (90);} kašnjenje (100);}  

Arduino SNES Instructable



Ova pitanja su automatski prevedena s engleskog jezika.Izvorni sadržaj dostupan je na stackexchange-u, što zahvaljujemo na cc by-sa 2.0 licenci pod kojom se distribuira.
Loading...