nanoFramework.Iot.Device.Button
1.2.631
Prefix Reserved
dotnet add package nanoFramework.Iot.Device.Button --version 1.2.631
NuGet\Install-Package nanoFramework.Iot.Device.Button -Version 1.2.631
<PackageReference Include="nanoFramework.Iot.Device.Button" Version="1.2.631" />
paket add nanoFramework.Iot.Device.Button --version 1.2.631
#r "nuget: nanoFramework.Iot.Device.Button, 1.2.631"
// Install nanoFramework.Iot.Device.Button as a Cake Addin #addin nuget:?package=nanoFramework.Iot.Device.Button&version=1.2.631 // Install nanoFramework.Iot.Device.Button as a Cake Tool #tool nuget:?package=nanoFramework.Iot.Device.Button&version=1.2.631
Button
The ButtonBase
class is a base implementation for buttons that is hardware independent and can be used across devices.
The GpioButton
is a GPIO implementation of the button and inherits from the ButtonBase
class. This implementation has been tested on an ESP32 platform, specifically on the M5StickC Plus.
Documentation
Documentation for the M5StickC Plus, including pin mapping, can be found here. Information regarding standard mouse events, used as inspiration for the button events, can be found here.
Usage
You can find an example in the samples directory.
// Initialize a new button with the corresponding button pin
GpioButton button = new GpioButton(buttonPin: 37);
Debug.WriteLine("Button is initialized, starting to read state");
// Enable or disable holding or doublepress events
button.IsDoublePressEnabled = true;
button.IsHoldingEnabled = true;
// Write to debug if the button is down
button.ButtonDown += (sender, e) =>
{
Debug.WriteLine($"buttondown IsPressed={button.IsPressed}");
};
// Write to debug if the button is up
button.ButtonUp += (sender, e) =>
{
Debug.WriteLine($"buttonup IsPressed={button.IsPressed}");
};
// Write to debug if the button is pressed
button.Press += (sender, e) =>
{
Debug.WriteLine($"Press");
};
// Write to debug if the button is double pressed
button.DoublePress += (sender, e) =>
{
Debug.WriteLine($"Double press");
};
// Write to debug if the button is held and released
button.Holding += (sender, e) =>
{
switch (e.HoldingState)
{
case ButtonHoldingState.Started:
Debug.WriteLine($"Holding Started");
break;
case ButtonHoldingState.Completed:
Debug.WriteLine($"Holding Completed");
break;
}
};
Thread.Sleep(Timeout.Infinite);
Expected output
Button is initialized, starting to read state
buttondown IsPressed=True
buttonup IsPressed=False
Press
buttondown IsPressed=True
buttonup IsPressed=False
Press
Double press
buttondown IsPressed=True
Holding Started
buttonup IsPressed=False
Press
Holding Completed
Testing
The unit test project can be found in the tests directory. You can simply run them using the VS2019 built-in test capabilites:
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET Framework | net is compatible. |
-
- nanoFramework.CoreLibrary (>= 1.15.5)
- nanoFramework.Runtime.Events (>= 1.11.18)
- nanoFramework.System.Device.Gpio (>= 1.1.41)
NuGet packages (9)
Showing the top 5 NuGet packages that depend on nanoFramework.Iot.Device.Button:
Package | Downloads |
---|---|
nanoFramework.M5Core2
This package includes the nanoFramework.M5Core2 assembly for .NET nanoFramework C# projects. |
|
nanoFramework.M5StickC
This package includes the nanoFramework.M5StickC assembly for .NET nanoFramework C# projects. |
|
nanoFramework.M5Core
This package includes the nanoFramework.M5Core assembly for .NET nanoFramework C# projects. |
|
nanoFramework.M5StickCPlus
This package includes the nanoFramework.M5StickCPlus assembly for .NET nanoFramework C# projects. |
|
nanoFramework.AtomLite
This package includes the nanoFramework.AtomLite assembly for .NET nanoFramework C# projects. |
GitHub repositories (2)
Showing the top 2 popular GitHub repositories that depend on nanoFramework.Iot.Device.Button:
Repository | Stars |
---|---|
nanoframework/Samples
🍬 Code samples from the nanoFramework team used in testing, proof of concepts and other explorational endeavours
|
|
nanoframework/nanoFramework.IoT.Device
📦 This repo includes .NET nanoFramework implementations for various sensors, chips, displays, hats and drivers
|
Version | Downloads | Last updated |
---|---|---|
1.2.631 | 1,604 | 8/28/2024 |
1.2.570 | 2,620 | 6/14/2024 |
1.2.560 | 554 | 5/29/2024 |
1.2.552 | 273 | 5/17/2024 |
1.2.548 | 440 | 5/15/2024 |
1.2.536 | 872 | 4/15/2024 |
1.2.514 | 1,141 | 3/22/2024 |
1.2.436 | 2,974 | 11/10/2023 |
1.2.329 | 6,993 | 5/26/2023 |
1.2.313 | 1,717 | 5/12/2023 |
1.2.308 | 1,131 | 5/11/2023 |
1.2.302 | 778 | 5/10/2023 |
1.2.297 | 1,287 | 5/3/2023 |
1.2.273 | 4,182 | 3/17/2023 |
1.2.215 | 13,497 | 1/6/2023 |
1.2.203 | 3,323 | 12/28/2022 |
1.2.153 | 7,995 | 11/5/2022 |
1.2.141 | 8,468 | 10/25/2022 |
1.2.122 | 4,264 | 10/12/2022 |
1.2.114 | 3,391 | 10/8/2022 |
1.2.95 | 8,764 | 9/22/2022 |
1.2.87 | 8,907 | 9/15/2022 |
1.2.73 | 3,537 | 9/8/2022 |
1.2.32 | 19,285 | 8/2/2022 |
1.1.113.2032 | 37,841 | 6/23/2022 |
1.1.58.10097 | 33,493 | 5/23/2022 |
1.1.43.5388 | 8,889 | 5/5/2022 |
1.1.16 | 1,010 | 4/19/2022 |
1.1.1 | 30,754 | 4/14/2022 |
1.0.300 | 12,013 | 3/31/2022 |
1.0.289-preview.6 | 184 | 3/25/2022 |
1.0.289-preview.1 | 148 | 3/24/2022 |
1.0.288-preview.99 | 180 | 3/18/2022 |
1.0.288-preview.98 | 135 | 3/18/2022 |
1.0.288-preview.93 | 197 | 3/15/2022 |
1.0.288-preview.86 | 215 | 3/8/2022 |
1.0.288-preview.65 | 229 | 2/18/2022 |
1.0.288-preview.48 | 251 | 2/4/2022 |
1.0.288-preview.29 | 250 | 1/28/2022 |
1.0.288-preview.20 | 230 | 1/27/2022 |
1.0.288-preview.19 | 151 | 1/27/2022 |
1.0.288-preview.5 | 199 | 1/24/2022 |
1.0.288-preview.3 | 168 | 1/21/2022 |
1.0.288-preview.1 | 155 | 1/21/2022 |
1.0.272 | 287 | 1/10/2022 |
1.0.259 | 1,544 | 12/9/2021 |
1.0.218 | 372 | 10/18/2021 |
1.0.214 | 815 | 10/15/2021 |
1.0.207 | 840 | 10/11/2021 |
1.0.196 | 805 | 10/5/2021 |