Author image Chris Kloberdanz
and 1 contributors

NAME

Device::BCM2835::NES - Perl extension for interfacing with a NES controller from the Raspberry Pi's GPIO ports.

SYNOPSIS

  # Sample Program (NOTE: MUST RUN VIA SUDO)

  use Device::BCM2835::NES;
  use strict;

  # Instantiate object
  my $nes = Device::BCM2835::NES->new();

  # Add controller at pin 21
  $nes->addController(Device::BCM2835::NES::RPI_GPIO_P1_13);

  # Initialize libraries / GPIO pins
  $nes->init();

  # Read contrller data
  while(1) {
        # Get raw data for all controllers
        my @raw = $nes->read();

        # Translate raw data into text (e.g SELECT, START)
        foreach $c (@raw) {
                my @btns = $nes->translateButtons($c);
                print join(' ',@btns);
        }

        # Cycle - NES Reads controller data at 60Hz
        $nes->cycle();
  }

DESCRIPTION

METHODS

new(['latch' => $latch, 'clock' => $clock])

        Instantiates new object and optionlly sets pins for CLOCK and LATCH pins.
        
        Defaults:
                LATCH - Device::BCM2835::NES::RPI_GPIO_P1_11
                CLOCK - Device::BCM2835::NES::RPI_GPIO_P1_12

init()

        Initialize BCM2835 libraries then clear latch and clock pins. 

addController($data_pin)

        Adds a controller from which to read data.

read()

        Gets raw data from each of the controllers and returns them in an array.    

translateButtons($btn_data)

        Translate raw button data into text (e.g. 'A', 'SELECT')  

cycle([$time])

        Delay between reads. NES polls at 60Hz by default.

SEE ALSO

http://search.cpan.org/~mikem/Device-BCM2835-1.3/lib/Device/BCM2835.pm http://www.mit.edu/~tarvizo/nes-controller.html

AUTHOR

Chris Kloberdanz, <klobyone at gmail.com>

COPYRIGHT AND LICENSE

Copyright (C) 2012 by Chris Kloberdanz

This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself, either Perl version 5.14.2 or, at your option, any later version of Perl 5 you may have available.