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

 

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