[ create a new paste ] login | about

Link: http://codepad.org/OT7ll4sP    [ raw code | fork ]

ninwa - C, pasted on Oct 26:
 #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);
}


Create a new paste based on this one


Comments: