Pull to refresh

Arduino <> Firmata <> Visual Basic .NET

Reading time 2 min
Views 23K

В данной статье, я хочу сделать обзор библиотеки на языке .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
<code>Public Class Form1

    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        FirmataVB1.COMPortName = "COM5" ''Указываем наш COM порт платы
        FirmataVB1.Baud = "57600" ''Указываем скорость порта
        FirmataVB1.Connect() ''Подключаемся к плате
    End Sub

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        FirmataVB1.PinMode(6, 1) ''Указываем номер вывода и его состояние, в нашем случае 6-й вывод на выход
        FirmataVB1.DigitalWrite(6, 1) ''Зажигаем светодиод на 6-м выводе
    End Sub

    Private Sub Form1_FormClosed(sender As Object, e As FormClosedEventArgs) Handles Me.FormClosed
        FirmataVB1.Disconnect() ''Закрываем порт при закрытии программы
    End Sub
End Class</code>


PWM

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


FirmataVB1.PinMode(6,3) '' где 3 - это переход в режим PWM
FirmataVB1.DigitalWrite(6,x) '' где x - это значение от 0 до 255

Analog

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


FirmataVB1.PinMode(6,0) ''где 0 - перевод в режим входа
x = FirmataVB1.AnalogRead(6) '' где x - переменная в которую мы получаем значения порта, и 6 - порта

Заключение


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

Сайт библиотеки Firmata.VB.NET
Сайт протокола Firmata

P.S.: Если получилось мало информативно или же есть вопросы, готов ответить на любые из них
Tags:
Hubs:
+3
Comments 5
Comments Comments 5

Articles