How to Auto-detect and Connect to Arduino in Visual Studio Using Visual Basic

Introduction: How to Auto-detect and Connect to Arduino in Visual Studio Using Visual Basic

How to auto detect what port the arduino or geekduino is connected to using visual basic and automatically connect to it!! (later I will add how to auto detect when it is unplugged!).

Note: button is not necessary but there in case you plug your arduino in after opening the program.

Teacher Notes

Teachers! Did you use this instructable in your classroom?
Add a Teacher Note to share how you incorporated it into your lesson.

Step 1: Visual Studio

1. Add the following to your Windows Form in design view:

  • Timer and call it TimerConnect.
  • Listbox and call it lstConsole.
  • Button and call it btnConnect.

2. Add Reference IO ports at top of code:

Imports System.IO.Ports

3. Set a global variable at the beginning of the Public Class:

Dim ArduinoConnected As Boolean

4. Add these to your Form Load sub:

TimerConnect.Enabled = False
ArduinoConnected = False

3. Add these subs to the script:

Private Sub BtnConnect_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnConnect.Click
If ArduinoConnected Then SerialPort.Close() btnConnect.Text = "Connect" Else autoconnect() End If End Sub
Private Sub autoconnect()
For Each sp As String In My.Computer.Ports.SerialPortNames Try SerialPort.PortName = sp SerialPort.BaudRate = 9600 SerialPort.DataBits = 8 SerialPort.Parity = Parity.None SerialPort.StopBits = StopBits.One SerialPort.Handshake = Handshake.None SerialPort.Encoding = System.Text.Encoding.Default SerialPort.Open() SerialPort.Write("3/") TimerConnect.Interval = 500 TimerConnect.Start() While TimerConnect.Enabled And ArduinoConnected = False Application.DoEvents() End While If ArduinoConnected Then btnConnect.Text = "Disconnect" Exit For End If SerialPort.Close() Catch ex As Exception MsgBox(ex.Message) End Try Next If ArduinoConnected = False Then MsgBox("Arduino failed to connect. Please check that it is plugged in.") End If
End Sub
Public Sub TimerConnect_Tick(sender As Object, e As EventArgs) Handles TimerConnect.Tick
End Sub
Public Sub SerialPort_DataReceived(ByVal sender As Object, ByVal e As System.IO.Ports.SerialDataReceivedEventArgs) Handles SerialPort.DataReceived
Dim str As String = SerialPort.ReadExisting()
If str.Contains("Arduino") Then
ArduinoConnected = True
lstConsole.Items.Add("Arduino Connected")
End If
End Sub

Step 2: Arduino Code

void setup()

void loop()

if ( == "3/")



Be the First to Share


    • LED Strip Speed Challenge

      LED Strip Speed Challenge
    • Sculpting Challenge

      Sculpting Challenge
    • Clocks Contest

      Clocks Contest

    2 Discussions


    2 years ago

    Just for anyone have trouble to make this as for the Serial reference. No need to add any reference just import from toolbox the serial port tool. Just make sure you have same name in code and form.

    Thanks for you helpfull tutorial.


    4 years ago

    Thank you for sharing, welcome to instructables! :)