ayuda! Encender un LED mientras se presiona un boton y al soltarlo se apaga

Hola c: les dejo mi código en C#:

using System.Linq;
using System.Windows.Forms;
using System.IO.Ports;
using encender_Led_arduino.Properties;

namespace encender_Led_arduino
    public partial class Form1 : Form
        public Form1()
            serialPort1.PortName = "COM30";
            serialPort1.BaudRate = 9600;


        private void Form1_FormClosing(object sender, FormClosingEventArgs e)

            if (serialPort1.IsOpen) serialPort1.Close();


        private void ON_Click(object sender, EventArgs e)


        private void OFF_Click(object sender, EventArgs e)


y del arduino:

void setup()  
  pinMode(13, OUTPUT);

void loop()                    
    int c = Serial.read();
    if (c == '1')
    else if (c == '0')

Esto hace que al darle clic a un botón en la interfaz de C# encienda el led y al darle clic a otro se apague. Alguien podría ayudarme para hacer que al darle clic a un único botón se encienda el led pero al soltarle se apague??


El ejemplo Button.ino del IDE te puede servir.


Turns on and off a light emitting diode(LED) connected to digital
pin 13, when pressing a pushbutton attached to pin 2.

The circuit:

  • LED attached from pin 13 to ground

  • pushbutton attached to pin 2 from +5V

  • 10K resistor attached to pin 2 from ground

  • Note: on most Arduinos there is already an LED on the board
    attached to pin 13.

created 2005
by DojoDave http://www.0j0.org
modified 30 Aug 2011
by Tom Igoe

This example code is in the public domain.


// constants won’t change. They’re used here to
// set pin numbers:
const int buttonPin = 2; // the number of the pushbutton pin
const int ledPin = 13; // the number of the LED pin

// variables will change:
int buttonState = 0; // variable for reading the pushbutton status

void setup() {
// initialize the LED pin as an output:
pinMode(ledPin, OUTPUT);
// initialize the pushbutton pin as an input:
pinMode(buttonPin, INPUT);

void loop(){
// read the state of the pushbutton value:
buttonState = digitalRead(buttonPin);

// check if the pushbutton is pressed.
// if it is, the buttonState is HIGH:
if (buttonState == HIGH) {
// turn LED on:
digitalWrite(ledPin, HIGH);
else {
// turn LED off:
digitalWrite(ledPin, LOW);


Lo que necesitas es manejar en C# el evento de soltar la tecla, que supongo es KeyUP o Release o algo asi.