loading

Controll Leds With an Arduino From a C# Program

Picture of Controll Leds With an Arduino From a C# Program
Have you ever wanted to control some LEDs with your Arduino from a program you have written? Well I'm here to help you with just that. This is my First 'able so please help me out if i mess up along the way. And feel free to add on and change any of the code to fit your needs.

 
Remove these adsRemove these ads by Signing Up

Step 1: Open a new project

Picture of Open a new project
2.png
3.png

Open up Microsoft Visual Studio 2010 or Microsoft Visual C# 2010 and make a open a new C# Project and name it what ever you want. I will call mine "Arduino Led Controller". After you name it, click okay.

Step 2: Add your controlls

Picture of Add your controlls
5.png
6.png
7.png
9.png
10.png

For this example, i will do 2 simple buttons to turn an led connected to pin 13 on and off. First Open the toolbox and click and drag the button onto the screen. Do this twice. Then add two pannels and resize the form, view the pics to see this.

Also add a serial port from the toolbox

Step 3: Rename your Buttons

Picture of Rename your Buttons
You can now rename your buttons or keep them the same. i will keep them the same, but i will change the text. do this by clicking on the button and going to the properties on the right side of the screen and changing the text section. shown below.  Make sure you have the correct button selected when you are trying to change its text.

Step 4: Add the code

Picture of Add the code
12.png

Double click on the On button, and you should get a screen that looks like the first picture. Then in the block of the code add this code:

serialPort1.Open();
if (serialPort1.IsOpen)
{
serialPort1.WriteLine("A");
}
serialPort1.Close();
panel1.BackColor = Color.Lime;
panel2.BackColor = Color.Transparent;

then go up to the code:
public Form1()
{
}

and add this:
InitializeComponent();
serialPort1.PortName = "    ";
serialPort1.BaudRate = 9600;

in between the brackets.
we will add the PortName value in a later step.

Now go back to the design page and double click on the off button and add this code:
serialPort1.Open();
if (serialPort1.IsOpen)
{
serialPort1.WriteLine("a");
}
serialPort1.Close();
panel2.BackColor = Color.Red;
panel1.BackColor = Color.Transparent;


Step 5: Arduino Code

okay for the arduino code you have to receive messages from a serial port. so this is the only way i know how to do this. Please forgive me if there is a different way  for i have just started programming with the arduino.

int message = 0; // This will hold one byte of the serial message
int LEDPin = 13; // This is the pin that the led is conected to
int LED = 0; // The value or brightness of the LED, can be 0-255


void setup() {
Serial.begin(9600); //set serial to 9600 baud rate
}

void loop(){
if (Serial.available() > 0) { // Check to see if there is a new message
message = Serial.read(); // Put the serial input into the message

if (message == 'A'){ // If a capitol A is received
LED = 255; // Set LED to 255 (on)
Serial.println("LED on"); // Send back LED on
}
if (message == 'a'){ // If a lowercase a is received
LED = 0; // Set LED to 0 (off)
Serial.println("LED off"); // Send back LED off
}
}
}


Step 6: The setup

Picture of The setup
14.png
0911101855a.jpg
0911101855.jpg

First you need to take an led and connect it to your arduino like the photo below. make sure the anode(+) is in digital pin 13 and the cathode(-) is in ground.

Then you need to open up the arduino ide and add the code attached below. Then go to the menu bar of the program and go to tools/board and choose the correct board that you are using. i am using the Dueminelove. then go to tools/serial port and note the name of yours. in my case it is COM4.

sorry for the poor photo quality, i had to use my phone. My camera broke this morning.

Step 7: Adding the serial port number to the C# program

Picture of Adding the serial port number to the C# program
16.png
Go back to The C# project and find this code:
serialPort1.PortName = "   ";

in the blank quotes change it to whatever your serial port is.

then you're going to have to go to the design screen and click the serial port at the bottom left of the screen. Go to the properties section and change the PortName to the same thing you did as the code. in my case it is COM4.

Step 8: Test your program

Picture of Test your program
aalc4.png
aalc5.png
aalc6.png
0911101854.jpg
Upload your sketch to the arduino, and test it with the serial monitor. Type a capitol A for on and a lowercase a for off. then go to the C# program and click the start debugging button. its the play button on the top tool bar. (or click the button f5) and click the on button, the led should go on. click the off button and the led should go off. Voila! you just made a program that talks to an arduino!

Now you can add more leds and more functions! have fun!! below i have attached pics of my controller! have fun playing with this! i will attach the code and what not below for the whole project.
HassanK31 month ago
Which ARDUINO model do we need for this tutorial? Can you please share the product link.
Thank you
the seaker (author)  HassanK31 month ago
The arduino I used in this instructable is the Duemilinove however i would assume you could use any board just edit the code accordingly.
cpadilla102 years ago
Hello!, nice tutorial, what changes are necessary in the VB code to control leds with keyboard instead of buttons?

We can Do this but not through VB...This can be done using a Processing sketch.

I press 1,2,34, keys on the keyboard and accordingly led's turn on......

I can make an instructable on this if you want.

the seaker (author)  cpadilla102 years ago
I don't entirely understand what you mean? Could you elaborate please and maybe I could help you out
Rafeya1 year ago

Hi , i try this code.... in my PC my arduino was in COM11... but when i use that port in C# program then the program failed. it was showing "Access is denied" . how can i access COM11 in C# program

You mustn't to access COM11 in C# program. If you have linux, you can unlock that port from one command (for Ubuntu):

sudo chmod a+rw /dev/COM11

attila.bakay9 months ago

did you solved the connection lost problem if your arduino disconect the program will crash imidietli

fhoward10 months ago

Hi the seaker. Awesome thread. I'm a complete noob with Arduino and Visual Studio but your 'how-to' has helped me understand how the two communicate.

One problem though... I am receiving this error message....

"An unhandled exception of type 'System.UnauthorizedAccessException' occurred in System.dll

Additional information: Access to the port 'COM4' is denied."

Now COM4 is definitely where my Arduino is plugged in, could there be something up with the code? Looks as though the port is opened already?

You probably wont read this but if anybody else has encountered this problem and overcome it, I would be very grateful to know how.

Thanks guys!

Frankie

ahmjazly1 year ago

Hey dude nic work....i have a small problem...im using arduino mega...i wnt to control 40 LEDs.plz can put me the C# code please...thnx :)

cpadilla102 years ago
Hello the seaker, I want to control 4 LED but I want to use my laptop keyboard.
I need to create a C# program but I dont Know how to write the VB code so that the program communicates with arduino each time I press some key (A,S,D,F, or direction keys), each key turns on a different LED.
Thanks for the help.
the seaker (author)  cpadilla102 years ago
Hmm I don't know exactly how to do it but I have a few ideas. You can use a textbox that waits for updates,when a letter is typed in have it send a serial signal to the arduino that the arduino will process and then turn the led on or off depending on the state. It shouldn't be that heard I think, but I'm sure we can find you some more detailed help somewhere here.
Thank you the seaker, I am still browsing on the internet to find out a way to do that.
jborgne3 years ago
nice instruct,
Im new into the microconrollers but have mess with programming in vb6, asp3.0, js ect and last year got into c#. this is perfect for many things, I plan to adopt it to change eeprom values from the c# prog. Maybe to store a patterns/modes for some leds or the likes.
But untill my shift reg's get here i may just make a simple prog like you have.


regards.
the seaker (author)  jborgne3 years ago
Thanks for the feed back! And if you come up with a updated program let me know, id love to see what you can come up with!
Lyron4 years ago
How do you show the serial feedback in visual studio?
Use the Serial Monitor in Arduino.

I only wish it did hex.
the seaker (author) 4 years ago
im sorry, but that means..?
ggghhhggg4 years ago
I think that this program is break
lele_164 years ago
yay, go Seaker!!! sorry, just here to show some support for my bestie..hope that's okay...from the very little that i know, it looks good!!! :)
the seaker (author)  lele_164 years ago
haha its good to "see" a frendly face showing some support:) thanks bestie! i never new you had an account here!! instructables is my favorite website ever!
i just made it!! i finally remembered to click the link you sent me, and i wanted to show some support so i made an account!!! keep up the good work bestie!!!!
doby1624 years ago
If you could modify this to work with java that would be so awesome. In fact, let me know if you ever do something like that. Their is a lot of potential in somthing like this, now you just need to think of something good to do with it. good ible!
the seaker (author)  doby1624 years ago
thank you. i will definitely look into using java, i didn't even think of that. Thanks for the idea!!! and this is my first ible so i will be sure to review and post updates!