#include SoftwareSerial softSerial(4, 11); //RX is on pin 4 int incomingByte = 5; int A = 8; int left = 2; int right = 3; int start = 7; void setup() { softSerial.begin(9600); pinMode(A, OUTPUT); digitalWrite(A, HIGH); //buttons are active low pinMode(right, OUTPUT); digitalWrite(right, HIGH); pinMode(left, OUTPUT); digitalWrite(left, HIGH); pinMode(start,OUTPUT); digitalWrite(start,HIGH); } void loop() { if (softSerial.available()) { incomingByte = softSerial.read(); if (incomingByte == 0) { digitalWrite(A, LOW); delay(500); //The A button needs a slight delay otherwise it won't be detected by the NES digitalWrite(A, HIGH); } if (incomingByte == 1) { digitalWrite(left, HIGH); digitalWrite(right, LOW); } if (incomingByte == 2) { digitalWrite(right, HIGH); digitalWrite(left, HIGH); } if (incomingByte == 3) { digitalWrite(right, HIGH); digitalWrite(left, LOW); } if (incomingByte == 4) { digitalWrite(start, LOW); delay(200); //Same goes for the start button digitalWrite(start, HIGH); } } }