Skip to content

Instantly share code, notes, and snippets.

@INTERNALINTERFERENCE
Created November 18, 2022 10:29
Show Gist options
  • Save INTERNALINTERFERENCE/063a433f98164ff5419b9905db57b9b0 to your computer and use it in GitHub Desktop.
Save INTERNALINTERFERENCE/063a433f98164ff5419b9905db57b9b0 to your computer and use it in GitHub Desktop.
iot
using System.Device.Gpio;
using System.Device.Gpio.Drivers;
var _gpioController = new GpioController(
numberingScheme: PinNumberingScheme.Logical,
driver: new SysFsDriver());
var relayPin = 128 + 18;
Console.WriteLine("open pin");
_gpioController.OpenPin(relayPin);
Console.WriteLine("set pin mode to input");
_gpioController.SetPinMode
(
relayPin,
PinMode.Input
);
Console.WriteLine("subscribe");
Subscribe();
ConsoleKeyInfo cki;
Console.WriteLine("press c to start");
cki = Console.ReadKey();
Console.WriteLine("start test relay process");
if(cki.Key == ConsoleKey.C)
{
Console.WriteLine("set pin mode to output");
_gpioController.SetPinMode(
relayPin,
PinMode.Output
);
Console.WriteLine("write value");
_gpioController.Write(
relayPin,
PinValue.High
);
Console.WriteLine("set pin mode to input");
_gpioController.SetPinMode(
relayPin,
PinMode.Input
);
Console.WriteLine("resubscribe");
Unsubscribe();
Subscribe();
}
void Subscribe()
{
_gpioController.RegisterCallbackForPinValueChangedEvent(
pinNumber: relayPin,
eventTypes: PinEventTypes.Rising,
callback: (_, args) =>
{
Console.WriteLine($"{args.PinNumber} is rising");
});
_gpioController.RegisterCallbackForPinValueChangedEvent(
pinNumber: relayPin,
eventTypes: PinEventTypes.Falling,
callback: (_, args) =>
{
Console.WriteLine($"{args.PinNumber} is falling");
});
}
void Unsubscribe()
{
_gpioController.UnregisterCallbackForPinValueChangedEvent(
pinNumber: relayPin,
callback: (_, _) =>
{
Console.WriteLine("unsubscribed");
});
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment