nanoFramework.Iot.Device.Button 1.2.673

Prefix Reserved
There is a newer version of this package available.
See the version list below for details.
dotnet add package nanoFramework.Iot.Device.Button --version 1.2.673
                    
NuGet\Install-Package nanoFramework.Iot.Device.Button -Version 1.2.673
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="nanoFramework.Iot.Device.Button" Version="1.2.673" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="nanoFramework.Iot.Device.Button" Version="1.2.673" />
                    
Directory.Packages.props
<PackageReference Include="nanoFramework.Iot.Device.Button" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add nanoFramework.Iot.Device.Button --version 1.2.673
                    
#r "nuget: nanoFramework.Iot.Device.Button, 1.2.673"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#addin nuget:?package=nanoFramework.Iot.Device.Button&version=1.2.673
                    
Install nanoFramework.Iot.Device.Button as a Cake Addin
#tool nuget:?package=nanoFramework.Iot.Device.Button&version=1.2.673
                    
Install nanoFramework.Iot.Device.Button as a Cake Tool

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:

unit tests

Product Compatible and additional computed target framework versions.
.NET Framework net is compatible. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages (10)

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 (3)

Showing the top 3 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
nanoframework/nanoFramework.M5Stack
:package: Board support package for M5Stack, M5StickC and M5StickCPlus for .NET nanoFramework
Version Downloads Last updated
1.2.864 733 4/2/2025
1.2.852 696 3/11/2025
1.2.822 1,861 2/26/2025
1.2.775 1,958 2/4/2025
1.2.772 165 2/4/2025
1.2.759 623 1/31/2025
1.2.755 352 1/31/2025
1.2.737 701 1/13/2025
1.2.718 508 12/30/2024
1.2.696 773 12/16/2024
1.2.673 1,299 10/23/2024
1.2.631 2,632 8/28/2024
1.2.570 2,762 6/14/2024
1.2.560 584 5/29/2024
1.2.552 300 5/17/2024
1.2.548 466 5/15/2024
1.2.536 944 4/15/2024
1.2.514 1,162 3/22/2024
1.2.436 3,084 11/10/2023
1.2.329 7,248 5/26/2023
1.2.313 1,739 5/12/2023
1.2.308 1,156 5/11/2023
1.2.302 804 5/10/2023
1.2.297 1,308 5/3/2023
1.2.273 4,219 3/17/2023
1.2.215 13,724 1/6/2023
1.2.203 3,444 12/28/2022
1.2.153 8,047 11/5/2022
1.2.141 8,493 10/25/2022
1.2.122 4,301 10/12/2022
1.2.114 3,418 10/8/2022
1.2.95 8,789 9/22/2022
1.2.87 8,931 9/15/2022
1.2.73 3,564 9/8/2022
1.2.32 19,314 8/2/2022
1.1.113.2032 37,885 6/23/2022
1.1.58.10097 33,523 5/23/2022
1.1.43.5388 8,917 5/5/2022
1.1.16 1,038 4/19/2022
1.1.1 30,799 4/14/2022
1.0.300 12,041 3/31/2022
1.0.289-preview.6 209 3/25/2022
1.0.289-preview.1 171 3/24/2022
1.0.288-preview.99 203 3/18/2022
1.0.288-preview.98 159 3/18/2022
1.0.288-preview.93 220 3/15/2022
1.0.288-preview.86 238 3/8/2022
1.0.288-preview.65 257 2/18/2022
1.0.288-preview.48 276 2/4/2022
1.0.288-preview.29 278 1/28/2022
1.0.288-preview.20 259 1/27/2022
1.0.288-preview.19 179 1/27/2022
1.0.288-preview.5 225 1/24/2022
1.0.288-preview.3 193 1/21/2022
1.0.288-preview.1 189 1/21/2022
1.0.272 317 1/10/2022
1.0.259 1,580 12/9/2021
1.0.218 405 10/18/2021
1.0.214 848 10/15/2021
1.0.207 871 10/11/2021
1.0.196 836 10/5/2021