Visual basic and arduino

Digitrode

цифровая электроника вычислительная техника встраиваемые системы

Arduino и обмен данными с программой на Visual Basic

При работе с платой Arduino и отладке скетча очень полезным бывает монитор последовательного порта, встроенный в среду разработки Arduino IDE. Но иногда возможностей последовательного порта не хватает из-за его слишком простого интерфейса. Если вам нужно довольно быстро и просто создать приложение на компьютере, которое бы без проблем взаимодействовало с платой Arduino через последовательный порт и обладало удобным визуальным интерфейсом, то можете воспользоваться возможностями языка Visual Basic.

В этом материале будет показано, как можно создать простую программу на Visual Basic, с помощью которой можно было бы включать и выключать светодиод, подсоединенный к плате Arduino. В данном случае использовалась среда Visual Basic 2008 Express.

Для того чтобы запрограммировать Aruino, скопируйте приведенный ниже скетч в Arduino IDE и загрузите его в Arduino. Этот скетч позволяет Arduino принимать от компьютера инструкции, которые, по сути, представляют собой символы в коде ASCII. Скорость передачи данных по последовательному порту установлена на 9600 бод. Светодиод, который будет управляться с приложения на Visual Basic подключен к цифровому порту D13 платы Arduino. Скетч для Arduino:

Теперь в среде VB2008 Express нужно создать проект варианта Visual Basic Windows Forms и поместить на форму две кнопки с названиями btnOn и btnOff, которые будут отвечать за включение и выключение светодиода соответственно. Вся суть программы на Visual Basic сводится к настройке последовательного порта и отправке символа «1» в качестве команды для включения светодиода и символа «0» в качестве команды для выключения светодиода. Код программы на Visual Basic представлен ниже.

Учтите, что скорее всего вам нужно будет изменить номер COM-порта на свой вариант. Это делается в переменной SerialPort1.PortName.

Источник

Arduino <> Firmata <> Visual Basic .NET


В данной статье, я хочу сделать обзор библиотеки на языке .NET для взаимодействия с аппаратной платформой Arduino.
Так как на просторах Хабра, я не видел упоминания о данной библиотеке то я решил взять в свои руки, данную инициативу.
В данной статье я буду давать примеры исключительно на языке VB.NET, но вы можете использовать данную библиотеку на любом другом языке .NET

Занимаясь разработкой специализированного комплекса, для выполнения нужных мне задач, я столкнулся с проблемой того что при моих потребностях, весь код может не влезть в память микроконтроллера а так же с учетом того что устройство должно взаимодействовать с ПК или же при отсутствии ПК давать тот же функционал.

Arduino <> Firmata <> Visual Basic .NET

В результате поисков я наткнулся на протокол Firmata для аппаратной платформы Arduino, и так как у меня пылилась Arduino Mega 2560, то я решил воспользоваться. В процессе ознакомления мне почему то данный протокол начал нравиться все меньше и меньше пока я не наткнулся на страницу Andrew Craigie, который написал библиотеку взаимодействия протокола Firmata с языками .NET.

На сайте автора данны бесплатные примеры и исходники, скачав которые можно в принципе разобраться самому, также там есть уже готовые модули которые можно использовать для себя

Готовый модуль использования цифровых выводов платы Arduino

Готовый модуль работы с аналоговыми входами платы Arduino

Но я же рекомендую использовать только компонент Firmata.Vb

Примеры и как использовать

Для того что бы работать с данной библиотекой, нам в нашу Arduino достаточно загрузить из примеров:Standart Firmata.
На этом программирование с платой для нас закончено.
Теперь же, загрузив студию и добавив компонент, можем приступить к работе

Hello World >> Led ON!

Для того чтобы просто зажечь светодиод подключенный к порту платы достаточно прописать следующий код:
Добавляем на форму компонент FirmataVB

Для того что бы использовать PWM(ШИМ) то в коде нужно сделать небольшие изменения.

Analog

Для работы с аналоговым входом мы указываем

Заключение

Как по мне библиотека написана не зря и лично мне сэкономила много времени.
Надеюсь данная статья кому-то будет интересна и полезна.

Источник

Arduino.ru

Arduino Serial and VB

  • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии

Небольшой проект взаимодействия Arduino UNO и Visual Basic.

Управление светодиодами и прочими штуками через PC (COM)

  • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии

Вот само видео: http://youtu.be/zczEG2dIuOI

  • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии

Здорово. А код покажите для будущих поколений?

  • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии

У меня есть связка Arduino + Access работает прекрасно. Access VBA, кому интересно могу поделится

  • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии

Конечно =)
вот ARDUINO

VB

  • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии

бегущий огонёк проходит три круга, это 2 вложенных цикла. не жалко вам памяти дуины..

а вот с VB есть вопрос, как на VB автоматом выбрать com порт на которой висит дуина? и если дуины нет, то окошко VB сообщило бы об этом и висело в ожидании подключения.

  • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии

Я с вами полностью согласен. код Arduino можно упростит и памяти займет (сделал на абум). Больше внимания обращал на VB.

Если я вас понял. Вы хотите чтоб порт автоматически выходил, как тут:

  • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии

нет, вы просто строите список портов и вручную выбираете тот на котором дуина. а задача что бы порт был выбран автоматически. при подключении каждой новой дуины, ей назначается новый порт как новому устройству. также на разных компах порты назначаются разные. даже при двух компах трёх дуинах уже нужно задумываться какой порт правильный для конкретной комбинации.

На мой взгляд оно должно работать так: строится список портов, и после они все последовательно опрашиваются. нашли дуину, подключаемся, не нашли — говорим нет таких. И было бы всё просто, если бы в построенном списке не отображались порты назначенные виртуальным устройствам (для мобильников например). Попытка открыть такой порт где устройство физически отключено — вызывает ошибку.

ГИС Русса например находит GPS модули именно так, нашли модуль, подключились, не нашли, ждём появления модуля.

подозреваю, что ошибки нужно как то перехватывать и обрабатывать, однако такое без подробного примера мне пока не по силам..

Источник

Control Arduino With Visual Basic 6.0

Introduction: Control Arduino With Visual Basic 6.0

this instructable is part of my book Arduino + visual basic 6.0 (make your own software to control arduino Robot.

Visual basic 6.0 is a very old version some people may ask why we want to use visual basic 6.0 . visual basic 6.0 is a user friendly programming language . so if you are beginner and want to lean basic pc based controlling system then visual basic 6.0 is a best option for you . here we start :)

part to be required

software’s

1. visual basic 6.0

Step 1: Bread Board Circuits

Here we use Pin 9 as digital output pin connect Led With 9 Number pin of Arduino Board .As shown in breadboard circuit .

Step 2: Arduino Program

int drukdata = Serial.read();

Step 3: Visual Basic 6.0 Program

make form shown in picture

Program for Visual basic 6 (Led on off Control Software)

Private Sub EXIT_Click()

Private Sub Form_Load()

MSComm1.CommPort = 2 // (Write Port Number on which your Arduino Board is available).

Private Sub TURNOFF_Click()

Text1.Text = «LED IS OFF»

Private Sub TURNON_Click()

Text1.Text = «LED IS ON»

Step 4: For More Information Check This Book

This book will help you

1. Control Leds with Arduino and Visual Basic 6.0.

2. Control Dc Motor With Arduino and Visual Basic 6.0.

3. Control Stepper Motor with Arduino and Visual Basic 6.0.

4. Control Servo Motor with Arduino and Visual Basic 6.0.

5. Make voice guidance program in Visual Basic 6.0

6. Interfacing RF Module with Arduino and Visual Basic 6.0.

7. Make simple Pc operated Wireless Arduino Robot.

also available in kindle store

if you have any problem or need any help related to Arduino and any other project related to mechatronics robotics or in mechanical field. you can mail me or message me . Thank you :)

Be the First to Share

Did you make this project? Share it with us!

Recommendations

Back to School: Student Design Challenge

Plywood Contest

Fandom Contest

11 Comments

Question 2 years ago

Hi Sir , could you please send this interested Book at Tunisia? we dont have paypal in tunisia
i am interested please to visual basic and arduino digital read signal project which dont You put code project in this part.

Источник

Martyn Currey

Mostly Arduino stuff

Arduino and Visual Basic Part 3: Controlling an Arduino

I am still very new to Visual Basic and I have been surprised at how quickly you can develop working apps. My first attempt resulted in a very basic app to receive data from the Arduino which taught me the basics of serial communication in VB. The next step is two way communication and controlling the Arduino from the VB program. I already have a similar project arduinoBTcontrol, where the Arduino is controlled from an Android app over Bluetooth. So all I need do is tweek the Arduino sketch and recreate the Android app in VB.

Here is the app screen.Visually it is nothing special and all controls are straight out of VB but is it working well.

Here is the circuit. Basically the same circuit as used in the Bluetooth project minus the Bluetooth module.

Serial Communication

The communication between the Arduino and Visual Basic is done using ascii over serial/usb. The data sent to the Arduino is formatted in to commands which are enclosed in start and end markers; » «.

In this example there is very little data sent from the Arduino to the host computer and so I have not used start and end markers for the data send from the Arduino. For a more complex project I would enclose all data in markers as an easy way to ensure I receive a complete command.

The Commands

Depending on the button / slider used, the VB program sends different commands to the Arduino. I have tried to make the commands easy to read and this makes them longer than they need to be. For example, to turn on the LED connected to pin 4 the command is “

”, this can be shortened to “

” by using 1 to mean HIGH and 0 to mean LOW.


P – Pin HIGH/LOW.

, Pin 001 on or Pin 1 HIGH

, Pin 001 off or Pin1 1 LOW
The button toggles between ON and OFF. First click turns the LED on, the second click turns the LED off
The Arduino Sketch recognises Pin 4,5,6,7,8,9, and 12


N – Navigation
– , U for UP. ON for HIGH
– , U for UP. OF for LOW
The navigation buttons work on button down and button up. When the button is clicked and the button becomes pressed the ON signal is sent. When the button is released the button returns to the up position the OF signal is sent.

There are 4 directions (up, down, left and right) and a OK/Select button
The OK button works with regular mouse clicks.

Command buttons.
There are 3 command buttons, these send the following commands
– – red / green flash
– – LED chaser
– – RGB LED cycle colours

The command buttons work in a different way to the other buttons. After a command is sent, the VB program waits for a completed signal from the Arduino. The clicked button becomes inactive until the completed signal is received.


T – RGB slider

– rrr is the decimal value 0-255 for the red LED
– ggg is the decimal value 0-255 for the green LED
– bbb is the decimal value 0-255 for the blue LED
is fully off and is fully on

As soon as one of the RGB sliders is moved the new position is sent to the Arduino.


At the bottom of the window is a text box where any command can be entered by the user. The data entered is enclosed in the start and end markers before being sent to the Arduino.
The commands accepted are FON, FOF, DON, and DOF
– FON / FOF, acknowledgement on/of. If you turn this off the commands buttons never reset.
– DON / DOF, debug on/of. With debug on, the Arduino mirrors the data it receives back to the VB program. The commands are then displayed in the Received Data text box.

The Arduino Sketch

The Arduino sketch waits around for serial data and then depending on the data received does something. Basically turn an LED on or turn one off. Of course once you have the LEDs working you can change the sketch to do what ever you like.

The Arduino expects the data to be enclosed in start and end markers and anything received not contained in the markers is ignored.

Most of the work is done in the parseData() routine. This looks at the data received and reacts accordingly.

/* **************************************************** Sketch Arduino and Visual Basic Part 3 — Controlling an Arduino arduinoVBserialcontrol Arduino controlled by VisualBasic www.martyncurrey.com Some of the below code is not very elegant but it should be easy to see what is happening. Pins 2 3 4 LED 5 LED 6 LED 7 LED 8 LED 9 RGB LED RED PIN 10 RGB LED GREEN PIN 11 RGB LED BLUE PIN 12 LED 14 LED — LEFT 15 LED — DOWN 16 LED — UP 17 LED — RIGHT 18 LED — OK Commands The expected commands are Pin HIGH / LOW

— P001 = Pin 1. ON = HIGH

The Visual Basic Program

The program is written in VB2013 which is part of the Visual Studio package. I am using Visual Studio 2013 Community which is a full development package and available for free for hobbyists, students and freelance developers. Visual Studio 2013 Community is available for download at https://www.visualstudio.com/en-us/products/visual-studio-community-vs.aspx.

The VB program waits for the user to press a button or move a slider and then sends the appropriate command to the Arduino

‘ arduinoVBserial ‘ Arduino and Visual Basic: Receiving Data From the Arduino ‘ A simple example of sending and receiving data to and from an Arduino ‘ Imports System Imports System.IO.Ports Public Class Form1 ‘ Global variables Dim comPORT As String Dim receivedData As String = «» Dim connected As Boolean = False Dim count = 0 ‘ When the program starts; make sure the timer is off (not really needed) and add the available COM ports to the COMport drop down list Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Timer1.Enabled = False populateCOMport() End Sub ‘The refresh button updates the COMport list Private Sub refreshCOM_BTN_Click(sender As Object, e As EventArgs) Handles refreshCOM_CB_BTN.Click SerialPort1.Close() populateCOMport() End Sub Private Sub populateCOMport() comPORT = «» comPort_ComboBox.Items.Clear() For Each sp As String In My.Computer.Ports.SerialPortNames comPort_ComboBox.Items.Add(sp) Next End Sub Private Sub comPort_ComboBox_SelectedIndexChanged(sender As Object, e As EventArgs) Handles comPort_ComboBox.SelectedIndexChanged If (comPort_ComboBox.SelectedItem <> «») Then comPORT = comPort_ComboBox.SelectedItem End If End Sub ‘ When the Connect button is clicked; if a COM port has been selected, connect and send out a HELLO message. ‘ Then wait for the Arduino to respond with its own HELLO. ‘ When the HELLO is received we are connected; change the button text to Dis-connect. Private Sub connect_BTN_Click(sender As Object, e As EventArgs) Handles connect_BTN.Click comPORT = comPort_ComboBox.SelectedItem If (connect_BTN.Text = «Connect») Then If (comPORT <> «») Then SerialPort1.Close() SerialPort1.PortName = comPORT SerialPort1.BaudRate = 9600 SerialPort1.DataBits = 8 SerialPort1.Parity = Parity.None SerialPort1.StopBits = StopBits.One SerialPort1.Handshake = Handshake.None SerialPort1.Encoding = System.Text.Encoding.Default SerialPort1.ReadTimeout = 10000 SerialPort1.Open() ‘See if the Arduino is there count = 0 SerialPort1.WriteLine(» «) connect_BTN.Text = «Connecting. » connecting_Timer.Enabled = True Else MsgBox(«Select a COM port first») End If Else ‘connect_BTN.Text = «Dis-connect» ‘close the connection a reset the button and timer label Timer1.Enabled = False Timer_LBL.Text = «Timer: OFF» SerialPort1.Close() connected = False connect_BTN.Text = «Connect» populateCOMport() End If End Sub ‘The connecting_Timer waits for the Arduino to say HELLO. ‘ If HELLO is not received in 2 seconds display an error message. ‘ The connecting_Timer is only used for connecting Private Sub connecting_Timer_Tick(sender As Object, e As EventArgs) Handles connecting_Timer.Tick connecting_Timer.Enabled = False count = count + 1 If (count «) Else ‘start the timer again and keep waiting for a signal from the Arduino connecting_Timer.Enabled = True End If Else ‘time out (8 * 250 = 2 seconds) RichTextBox1.Text &= vbCrLf & «ERROR» & vbCrLf & «Can not connect» & vbCrLf connect_BTN.Text = «Connect» populateCOMport() End If End Sub ‘After a connection is made the main timer waits for data from the Arduino ‘Only OK1, OK2 or OK3 is available. Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick receivedData = ReceiveSerialData() RichTextBox1.Text &= receivedData Dim tmp As String tmp = Microsoft.VisualBasic.Left(receivedData, 3) If (tmp = «OK1») Then cmd1_BTN.Enabled = True End If If (tmp = «OK2») Then cmd2_BTN.Enabled = True End If If (tmp = «OK3») Then cmd3_BTN.Enabled = True End If End Sub Function ReceiveSerialData() As String Dim Incoming As String Try Incoming = SerialPort1.ReadExisting() If Incoming Is Nothing Then Return «nothing» & vbCrLf Else Return Incoming End If Catch ex As TimeoutException Return «Error: Serial Port read timed out.» End Try End Function ‘Clear the RecievedData text box Private Sub clear_BTN_Click(sender As Object, e As EventArgs) Handles clear_BTN.Click RichTextBox1.Text = «» End Sub ‘LED buttons ‘ This is a basic example and to keep the code simple each button has a separate function. The code could be reduced by using the sender object ‘If the Arduino is not connected a nessage box display an error message Private Sub Pin4_BTN_Click(sender As Object, e As EventArgs) Handles Pin4_BTN.Click If (connected) Then If (Pin4_BTN.Text = «4 OFF») Then SerialPort1.WriteLine(«

«) Pin4_BTN.Text = «4 ON» Else SerialPort1.WriteLine(«

«) Pin4_BTN.Text = «4 OFF» End If Else MsgBox(«Not connected») End If End Sub Private Sub Pin5_BTN_Click(sender As Object, e As EventArgs) Handles Pin5_BTN.Click If (connected) Then If (Pin5_BTN.Text = «5 OFF») Then SerialPort1.WriteLine(«

«) Pin5_BTN.Text = «5 ON» Else SerialPort1.WriteLine(«

«) Pin5_BTN.Text = «5 OFF» End If Else MsgBox(«Not connected») End If End Sub Private Sub Pin6_BTN_Click(sender As Object, e As EventArgs) Handles Pin6_BTN.Click If (connected) Then If (Pin6_BTN.Text = «6 OFF») Then SerialPort1.WriteLine(«

«) Pin6_BTN.Text = «6 ON» Else SerialPort1.WriteLine(«

«) Pin6_BTN.Text = «6 OFF» End If Else MsgBox(«Not connected») End If End Sub Private Sub Pin7_BTN_Click(sender As Object, e As EventArgs) Handles Pin7_BTN.Click If (connected) Then If (Pin7_BTN.Text = «7 OFF») Then SerialPort1.WriteLine(«

«) Pin7_BTN.Text = «7 ON» Else SerialPort1.WriteLine(«

«) Pin7_BTN.Text = «7 OFF» End If Else MsgBox(«Not connected») End If End Sub Private Sub Pin8_BTN_Click(sender As Object, e As EventArgs) Handles Pin8_BTN.Click If (connected) Then If (Pin8_BTN.Text = «8 OFF») Then SerialPort1.WriteLine(«

«) Pin8_BTN.Text = «8 ON» Else SerialPort1.WriteLine(«

«) Pin8_BTN.Text = «8 OFF» End If Else MsgBox(«Not connected») End If End Sub Private Sub Pin12_BTN_Click(sender As Object, e As EventArgs) Handles Pin12_BTN.Click If (connected) Then If (Pin12_BTN.Text = «12 OFF») Then SerialPort1.WriteLine(«

«) Pin12_BTN.Text = «12 ON» Else SerialPort1.WriteLine(«

«) Pin12_BTN.Text = «12 OFF» End If Else MsgBox(«Not connected») End If End Sub ‘Command buttons Private Sub cmd1_BTN_Click(sender As Object, e As EventArgs) Handles cmd1_BTN.Click If (connected) Then SerialPort1.WriteLine(» «) cmd1_BTN.Enabled = False End If End Sub Private Sub cmd2_BTN_Click(sender As Object, e As EventArgs) Handles cmd2_BTN.Click If (connected) Then SerialPort1.WriteLine(» «) cmd2_BTN.Enabled = False End If End Sub Private Sub cmd3_BTN_Click(sender As Object, e As EventArgs) Handles cmd3_BTN.Click If (connected) Then SerialPort1.WriteLine(» «) cmd3_BTN.Enabled = False End If End Sub ‘RGB sliders Private Sub red_TrackBar_Scroll(sender As Object, e As EventArgs) Handles red_TrackBar.Scroll updateRGBlbl() End Sub Private Sub green_TrackBar_Scroll(sender As Object, e As EventArgs) Handles green_TrackBar.Scroll updateRGBlbl() End Sub Private Sub blue_TrackBar_Scroll(sender As Object, e As EventArgs) Handles blue_TrackBar.Scroll updateRGBlbl() End Sub Private Sub updateRGBlbl() slider_LBL.Text = «R:» & Format(red_TrackBar.Value, «000») & » G:» & Format(green_TrackBar.Value, «000») & » B:» & Format(blue_TrackBar.Value, «000») If (connected) Then Dim data As String data = » » SerialPort1.WriteLine(data) End If End Sub ‘Navigation buttons Private Sub up_BTN_MouseDown(sender As Object, e As MouseEventArgs) Handles up_BTN.MouseDown If (connected) Then SerialPort1.WriteLine(» «) End If End Sub Private Sub up_BTN_MouseUp(sender As Object, e As MouseEventArgs) Handles up_BTN.MouseUp If (connected) Then SerialPort1.WriteLine(» «) End If End Sub Private Sub down_BTN_MouseDown(sender As Object, e As MouseEventArgs) Handles down_BTN.MouseDown If (connected) Then SerialPort1.WriteLine(» «) End If End Sub Private Sub down_BTN_MouseUp(sender As Object, e As MouseEventArgs) Handles down_BTN.MouseUp If (connected) Then SerialPort1.WriteLine(» «) End If End Sub Private Sub left_BTN_MouseDown(sender As Object, e As MouseEventArgs) Handles left_BTN.MouseDown If (connected) Then SerialPort1.WriteLine(» «) End If End Sub Private Sub left_BTN_MouseUp(sender As Object, e As MouseEventArgs) Handles left_BTN.MouseUp If (connected) Then SerialPort1.WriteLine(» «) End If End Sub Private Sub right_BTN_MouseDown(sender As Object, e As MouseEventArgs) Handles right_BTN.MouseDown If (connected) Then SerialPort1.WriteLine(» «) End If End Sub Private Sub right_BTN_MouseUp(sender As Object, e As MouseEventArgs) Handles right_BTN.MouseUp If (connected) Then SerialPort1.WriteLine(» «) End If End Sub ‘The OK button acts as soon as the button is clicked. It does not wait for the user to release the button ‘There is no of for the OK button Private Sub ok_BTN_MouseDown(sender As Object, e As MouseEventArgs) Handles ok_BTN.MouseDown If (connected) Then SerialPort1.WriteLine(» «) End If End Sub ‘Add the start and end markers to the contents of the text box and then send to the Arduino. ‘Does not clear the contents Private Sub send_BTN_Click(sender As Object, e As EventArgs) Handles send_BTN.Click If (connected) Then Dim tmp As String tmp = » » SerialPort1.WriteLine(tmp) End If End Sub End Class

Connecting

To connect to the Arduino selected the appropriate COM port and click the connect button. The VB program will make a connection and send a HELLO message to the Arduino. If the Arduino replies then we are connected and the button text changes. If no reply is received then an error message is displayed.

Next steps

– add different functions such as motor control or send sensor data from the Arduino to the VB program,
– add regular checks to see if the Arduino is connected
– reset the command buttons when acknowledgement is turned off
– reset the Arduino when disconnected

Download

Download the Arduino Sketch, the VB program(exe file) and the VB2013 project files

Источник

Adblock
detector