Remarks

NesClassicController
Status Status badge: working
Source code GitHub
NuGet package NuGet Gallery for Meadow.Foundation.Sensors.Hid.WiiExtensionControllers

Code Example

NesClassicController nesController;

public override Task Initialize()
{
    Resolver.Log.Info("Initialize...");

    var i2cBus = Device.CreateI2cBus(NesClassicController.DefaultSpeed);

    nesController = new NesClassicController(i2cBus: i2cBus);

    //onetime update - could be used in a game loop
    nesController.Update();

    //check the state of a button
    Resolver.Log.Info("X Button is " + (nesController.AButton.State == true ? "pressed" : "not pressed"));

    //.NET events
    nesController.AButton.Clicked += (s, e) => Resolver.Log.Info("A button clicked");
    nesController.BButton.Clicked += (s, e) => Resolver.Log.Info("B button clicked");

    nesController.StartButton.Clicked += (s, e) => Resolver.Log.Info("+ button clicked");
    nesController.SelectButton.Clicked += (s, e) => Resolver.Log.Info("- button clicked");

    nesController.DPad.Updated += (s, e) => Resolver.Log.Info($"DPad {e.New}");

    return Task.CompletedTask;
}

public override Task Run()
{
    nesController.StartUpdating(TimeSpan.FromMilliseconds(200));
    return Task.CompletedTask;
}

Sample project(s) available on GitHub

Wiring Example

To wire a NesClassicController to your Meadow board, connect the following:

NesClassicController Meadow Pin
GND GND
SCL D08 (SCL)
SDA D07 (SDA)
VCC 3V3
Characteristic Locus
Inheritance System.Object WiiExtensionControllerBase WiiClassicControllerBase > NesClassicController
Inherited Members WiiClassicControllerBase.LeftJoystickX WiiClassicControllerBase.LeftJoystickY WiiClassicControllerBase.RightJoystickX WiiClassicControllerBase.RightJoystickY WiiClassicControllerBase.LeftTriggerPosition WiiClassicControllerBase.RightTriggerPosition WiiClassicControllerBase.PlusButtonPressed WiiClassicControllerBase.MinusButtonPressed WiiClassicControllerBase.HomeButtonPressed WiiClassicControllerBase.LButtonPressed WiiClassicControllerBase.RButtonPressed WiiClassicControllerBase.ZLButtonPressed WiiClassicControllerBase.ZRButtonPressed WiiClassicControllerBase.XButtonPressed WiiClassicControllerBase.YButtonPressed WiiClassicControllerBase.AButtonPressed WiiClassicControllerBase.BButtonPressed WiiClassicControllerBase.DPadLeftPressed WiiClassicControllerBase.DPadRightPressed WiiClassicControllerBase.DPadUpPressed WiiClassicControllerBase.DPadDownPressed WiiClassicControllerBase.useHighResolutionMode WiiClassicControllerBase.Initialize() WiiExtensionControllerBase.DefaultSpeed WiiExtensionControllerBase.i2cPeripheral WiiExtensionControllerBase.readBuffer WiiExtensionControllerBase.samplingLock WiiExtensionControllerBase.SamplingTokenSource WiiExtensionControllerBase.IsSampling WiiExtensionControllerBase.GetIdentification() WiiExtensionControllerBase.StartUpdating(Nullable<TimeSpan>) WiiExtensionControllerBase.StopUpdating()
Namespace Meadow.Foundation.Sensors.Hid
Assembly WiiExtensionControllers.dll

Syntax

public class NesClassicController : WiiClassicControllerBase

Constructors

NesClassicController(II2cBus)

Creates a NES Classic Mini Controller object

Declaration
public NesClassicController(II2cBus i2cBus)

Parameters

Type Name Description
II2cBus i2cBus

the I2C bus connected to controller

Properties

AButton

A Button

Declaration
public IButton AButton { get; }

Property Value

Type Description
IButton

BButton

B Button

Declaration
public IButton BButton { get; }

Property Value

Type Description
IButton

DPad

D-pad

Declaration
public IDigitalJoystick DPad { get; }

Property Value

Type Description
IDigitalJoystick

SelectButton

  • Button
Declaration
public IButton SelectButton { get; }

Property Value

Type Description
IButton

StartButton

  • Button
Declaration
public IButton StartButton { get; }

Property Value

Type Description
IButton

Methods

Update()

Get the latest sensor data from the device

Declaration
public override void Update()

Overrides