Có ai có sơ đồ chân cho Bộ điều khiển Nintendo NES không? Tôi muốn kết nối bộ điều khiển NES với Arduino.
Có ai có sơ đồ chân cho Bộ điều khiển Nintendo NES không? Tôi muốn kết nối bộ điều khiển NES với Arduino.
Câu trả lời:
PinoutsGuide có một trang sơ đồ điều khiển cần điều khiển Nintendo NES và SNES .
Các thư viện NES Pad không chỉ có một pinout, nhưng là một lớp Arduino tuyệt vời cho sử dụng bộ điều khiển NES.
Đây là một trang khác với một số thông tin hữu ích , bao gồm một sơ đồ tín hiệu.
+----> Power (white)
|
5 +---------+ 7
| x x o \
| o o o o |
4 +------------+ 1
| | | |
| | | +-> Ground (brown)
| | +----> Pulse (red)
| +-------> Latch (orange)
+----------> Data (yellow)
Tôi tìm thấy một bài viết tuyệt vời về Hack-A-Day lấy lại nhiệm vụ của bạn. Bài viết này là về việc kết nối bộ điều khiển SNES với Android sử dụng Arduino. Để tiết kiệm cho bạn một số rắc rối của việc sàng lọc thông qua bài viết, tôi đã tìm thấy mã được liên kết mà họ đã trích dẫn:
Mã này sử dụng bộ điều khiển NES cũ của năm 1980 để điều khiển servo và đèn LED với Arduino. Với mã này, phần đệm 'lên' biến một servo thành 180 độ, 'bên phải' biến nó thành 90 và 'xuống' biến nó thành 0 độ. Ngoài ra, các nút A và B bật và tắt đèn LED. Bạn có thể nhận được bộ điều khiển NES từ ebay với giá dưới 10 đô la Dưới đây là bản vẽ thô của phích cắm bộ điều khiển, bốn lỗ ở một bên, ba lỗ ở mặt khác.
0 - 0v (mặt đất) + 5V --- 0 0 --CLOCK không có gì --- 0 0 - CUỐI không có gì --- 0 0 - NGOÀI RA
Bạn chỉ có thể dán dây vào các lỗ cắm bộ điều khiển để tạo mẫu. +5 được kết nối với Arduino +5 Ground to Arduino Ground Latch đi đến Pin 2 (với mã này) Đồng hồ đến Pin 3 Nối tiếp với Pin 4
Đường dữ liệu servo được kết nối với Chân 10 và đèn LED ở Chân 11.
Nếu bạn muốn xem đầu vào bộ điều khiển trên màn hình nối tiếp thì chỉ cần mở màn hình nối tiếp. Nó sẽ cho bạn thấy các số nhị phân đến từ bộ điều khiển. Mỗi nút có số nhị phân riêng. 'Lên' là 11110111, ví dụ. Tôi đã bao gồm // mã serial.println ẩn sẽ hiển thị "Nút đã được nhấn" nếu bạn nhấn nút bắt đầu. Chỉ cần xóa '//' nếu bạn muốn sử dụng nó. Phích cắm SNES thì khác, bạn quan tâm đến việc bạn sẽ phải tìm nơi khác để biết thông tin về đồng hồ, chốt, nối tiếp.
Trích dẫn:
/* INITIALIZATION */ #include <ServoTimer1.h> ServoTimer1 servo1; int latch = 2; // set the latch pin int clock = 3; // set the clock pin int datin = 4;// set the data in pin byte controller_data = 0; int ledpin = 11; /* SETUP */ void setup() { Serial.begin(57600); pinMode(latch,OUTPUT); pinMode(clock,OUTPUT); pinMode(datin,INPUT); pinMode(ledpin, OUTPUT); digitalWrite(latch,HIGH); digitalWrite(clock,HIGH); servo1.attach(10); } /* THIS READS DATA FROM THE CONTROLLER */ void controllerRead() { controller_data = 0; digitalWrite(latch,LOW); digitalWrite(clock,LOW); digitalWrite(latch,HIGH); delayMicroseconds(2); digitalWrite(latch,LOW); controller_data = digitalRead(datin); for (int i = 1; i <= 7; i ++) { digitalWrite(clock,HIGH); delayMicroseconds(2); controller_data = controller_data << 1; controller_data = controller_data + digitalRead(datin) ; delayMicroseconds(4); digitalWrite(clock,LOW); } } /* THE LED, SERVO, AND SERIAL MONITOR PROGRAM */ void loop() { controllerRead(); Serial.println(controller_data, BIN); // if (controller_data==B11101111){ // Serial.println("Button has been Pressed"); //} else { //Serial.println("Button not pressed"); //} //for REFERENCE: //UP = 11110111 //DOWN=11111011 //LEFT=11111101 //RIGHT=11111110 //SELECT=11011111 //START=11101111 //A=01111111 //B=10111111 if (controller_data==B01111111){ digitalWrite(ledpin, HIGH); } if (controller_data==B10111111){ digitalWrite(ledpin, LOW); } if (controller_data==B11110111){ servo1.write(180); } if (controller_data==B11111011){ servo1.write(0); } if (controller_data==B11111110){ servo1.write(90); } delay(100); }