I’ve connect a Button (V1.4) on socket 4 on FEZ Spider II and same button on FEZ Panda III (pin3 -> D3, pin4 -> D2).
Value of reading is always correct, but event is only raised on FEZ Panda III.
Here is code (I change mb value when changing mainboard):
using System;
using System.Threading;
using GHIElectronics.TinyCLR.Devices.Gpio;
using GHIElectronics.TinyCLR.Pins;
namespace testButton
{
enum Mainboard
{
FEZSpiderII,
FEZPandaIII
};
public class Program
{
private static GpioPin _led;
private static GpioPin _btn;
public static void Main()
{
Mainboard mb=Mainboard.FEZSpiderII;
GpioController gpio = GpioController.GetDefault();
if (mb == Mainboard.FEZSpiderII)
{
_led = gpio.OpenPin(G120E.GpioPin.P2_0);
_btn = gpio.OpenPin(G120E.GpioPin.P2_31);
}
else
{
_led = gpio.OpenPin(FEZPandaIII.GpioPin.D2);
_btn = gpio.OpenPin(FEZPandaIII.GpioPin.D3);
}
_led.SetDriveMode(GpioPinDriveMode.Output);
_btn.SetDriveMode(GpioPinDriveMode.InputPullUp);
_btn.ValueChanged += Btn_ValueChanged;
for (int i = 0; i < 4; i++)
{
_led.Write(GpioPinValue.High);
Thread.Sleep(200);
_led.Write(GpioPinValue.Low);
Thread.Sleep(200);
}
while (true)
{
_led.Write(_btn.Read()==GpioPinValue.Low?GpioPinValue.High : GpioPinValue.Low);
Thread.Sleep(20);
}
}
private static void Btn_ValueChanged(object sender, GpioPinValueChangedEventArgs e)
{
}
}
}