codepad
[
create a new paste
]
login
|
about
Language:
C
C++
D
Haskell
Lua
OCaml
PHP
Perl
Plain Text
Python
Ruby
Scheme
Tcl
#include "pitches.h" // Arduino Pins #define debugLED 13 #define clockLine 2 #define dataLine 4 #define latchLine 7 #define speakerPin 9 // NES Buttons #define BTN_A 0 #define BTN_B 1 #define BTN_SELECT 2 #define BTN_START 3 #define BTN_UP 4 #define BTN_DOWN 5 #define BTN_LEFT 6 #define BTN_RIGHT 7 int* getNESButtonState() { int* button_state = (int*) malloc(sizeof(int)*8); memset(button_state, 0, sizeof(int)*8); digitalWrite(latchLine, HIGH); delay(2); digitalWrite(latchLine, LOW); delay(2); for(int i = 0; i < 8; i++) { if(digitalRead(dataLine) == LOW) { button_state[i] = 1; } else { button_state[i] = 0; } digitalWrite(clockLine, HIGH); delay(2); digitalWrite(clockLine, LOW); delay(2); } return button_state; } void setup() { pinMode(debugLED, OUTPUT); pinMode(clockLine, OUTPUT); pinMode(dataLine, INPUT); pinMode(latchLine, OUTPUT); } void loop() { int* button_state = getNESButtonState(); if(button_state[BTN_LEFT] == 1) tone(8, NOTE_C4); else if(button_state[BTN_UP] == 1) tone(8, NOTE_D4); else if(button_state[BTN_RIGHT] == 1) tone(8, NOTE_E4); else if(button_state[BTN_DOWN] == 1) tone(8, NOTE_F4); else if(button_state[BTN_SELECT] == 1) tone(8, NOTE_G4); else if(button_state[BTN_START] == 1) tone(8, NOTE_G5); else if(button_state[BTN_B] == 1) tone(8, NOTE_A5); else if(button_state[BTN_A] == 1) tone(8, NOTE_B5); else noTone(8); free(button_state); }
Private
[
?
]
Run code
Submit