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

 



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

Автор: Mike(admin) от 27-10-2016, 08:10

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


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

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


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



void setup() {
 pinMode (13,OUTPUT);
 Serial.begin(9600);
}
 
void loop() {
  int val;
  if(Serial.available()){
    delay(100);
    while(Serial.available() >0){
      val=Serial.read();
      if(val=='1'){digitalWrite(13,HIGH);}
      else if (val=='0') {digitalWrite (13,LOW);
      }
    }
  }
}

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



Imports System.IO
Imports System.IO.Ports
Imports System.Threading
 
Public Class Form1
 
    Shared _continue As Boolean
    Shared _serialPort As SerialPort
 
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        SerialPort1.Close()
        SerialPort1.PortName = "com3" 'change com port to match your Arduino port
        SerialPort1.BaudRate = 9600
        SerialPort1.DataBits = 8
        SerialPort1.Parity = Parity.None
        SerialPort1.StopBits = StopBits.One
        SerialPort1.Handshake = Handshake.None
        SerialPort1.Encoding = System.Text.Encoding.Default 
    End Sub
 
    Private Sub btnOn_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnOn.Click
        SerialPort1.Open()
        SerialPort1.Write("1")
        SerialPort1.Close()
    End Sub
 
    Private Sub btnOff_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnOff.Click
        SerialPort1.Open()
        SerialPort1.Write("0")
        SerialPort1.Close()
    End Sub
End Class

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




© digitrode.ru


Теги: Arduino, Visual Basic




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

Комментарии:

Оставить комментарий
  • Группа: Гости
  • ICQ:
  • Регистрация: --
  • Статус:
  • Комментариев: 0
  • Публикаций: 0
^
Несколько вопросов по статье "Arduino и обмен данными с программой на Visual Basic"

Автор: Mike(admin) от 27-10-2016, 08:10

Пытаюсь повторить. Возникли проблемы с VB. (У меня Visual Studio 13). Не принимает: Shared _continue As Boolean
Shared _serialPort As SerialPort
Не принимает:
SerialPort1.Close()
SerialPort1.PortName = "com3" 'change com port to match your Arduino port
SerialPort1.BaudRate = 9600
SerialPort1.DataBits = 8
SerialPort1.Parity = Parity.None
SerialPort1.StopBits = StopBits.One
SerialPort1.Handshake = Handshake.None
SerialPort1.Encoding = System.Text.Encoding.Default
Убираю "1" с SerialPort1, вроде бы признает, но программа не запускается, выдает, что это ошибка.

Скетч в Ардуино тоже не желает заливаться. С третьей попытки "залил", из-за VB работать отказывается.

Если возможно - подскажите, в чем недоработка у меня?
  • Salex

  • 24 октября 2017 11:30
  • Группа: Посетители
  • ICQ:
  • Регистрация: 24.10.2017
  • Статус: Пользователь offline
  • Комментариев: 1
  • Публикаций: 0
^
Ардуино контролирует нагрев куба по термосопротивлению. Нагрев включаю отсылая "1" с кнопки на VB. При работающем нагреве (пин 12, реле) включаю "Монитор порта" Ардуино, или "Плоттер", чтобы наблюдать рост температуры или график ее - пин 12 отключается!
Как сделать так, чтоб и нагрев был и Монитор или плоттер наблюдать можно было?

С уважением
Salex
  • dimon

  • 20 апреля 2019 04:47
  • Группа: Гости
  • ICQ:
  • Регистрация: --
  • Статус:
  • Комментариев: 0
  • Публикаций: 0
^
Исправленный код VBA

Imports System.IO.Ports


Public Class Form1

Private SerialPort1 As New SerialPort


Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
SerialPort1.Close()
SerialPort1.PortName = "com3" 'change com port to match your Arduino port
SerialPort1.BaudRate = 9600
SerialPort1.DataBits = 8
SerialPort1.Parity = Parity.None
SerialPort1.StopBits = StopBits.One
SerialPort1.Handshake = Handshake.None
SerialPort1.Encoding = System.Text.Encoding.Default
End Sub

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
SerialPort1.Open()
SerialPort1.Write("1")
SerialPort1.Close()
End Sub

Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
SerialPort1.Open()
SerialPort1.Write("0")
SerialPort1.Close()
End Sub
End Class

Для ардуино
byte lol;
void setup() {
Serial.begin (9600);
pinMode (13,1);
}



void loop() {
if (Serial.available() >0){
lol=Serial.read();
if (lol=='1'){
digitalWrite(13,1);
}
if (lol=='0'){
digitalWrite(13,0);
}
}
delay (3);
}
  • Peotr

  • 18 августа 2019 21:49
  • Группа: Посетители
  • ICQ: 333774344
  • Регистрация: 18.08.2019
  • Статус: Пользователь offline
  • Комментариев: 1
  • Публикаций: 0
^
[quote=dimon]Исправленный код VBA

Imports System.IO.Ports

При команде "Run" выдаётся сообщение:
Compile error: Invalid outside procedure
и выделяется "System" в Imports System.IO.Ports


Public Class Form1
= здесь подсвечивается красным цветом

Private SerialPort1 As New SerialPort


Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
= здесь тоже буквы подсвечиваются красным

далее также ряд операторов подсвечиваются красным.

Здравствуйте!
Я новичок в VBA, нужно решить как раз такую задачу: двусторонний обмен Excel с Arduino по последовательному порту. Что у меня не так?

PLX-DAQ | Parallax Inc у меня работает на приём
https://www.parallax.com/downloads/plx-daq
т.е. ActiveX и пр. на месте.

Спасибо.