- PVSM.RU - https://www.pvsm.ru -

В данной статье, я хочу сделать обзор библиотеки на языке .NET для взаимодействия с аппаратной платформой Arduino.
Так как на просторах Хабра, я не видел упоминания о данной библиотеке то я решил взять в свои руки, данную инициативу.
В данной статье я буду давать примеры исключительно на языке VB.NET, но вы можете использовать данную библиотеку на любом другом языке .NET
Занимаясь разработкой специализированного комплекса, для выполнения нужных мне задач, я столкнулся с проблемой того что при моих потребностях, весь код может не влезть в память микроконтроллера а так же с учетом того что устройство должно взаимодействовать с ПК или же при отсутствии ПК давать тот же функционал.
В результате поисков я наткнулся на протокол Firmata для аппаратной платформы Arduino, и так как у меня пылилась Arduino Mega 2560, то я решил воспользоваться. В процессе ознакомления мне почему то данный протокол начал нравиться все меньше и меньше пока я не наткнулся на страницу [1] Andrew Craigie, который написал библиотеку взаимодействия протокола Firmata с языками .NET.
На сайте автора данны бесплатные примеры и исходники, скачав которые можно в принципе разобраться самому, также там есть уже готовые модули которые можно использовать для себя
Готовый модуль использования цифровых выводов платы Arduino

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

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

Для того что бы работать с данной библиотекой, нам в нашу Arduino достаточно загрузить из примеров:Standart Firmata.
На этом программирование с платой для нас закончено.
Теперь же, загрузив студию и добавив компонент, можем приступить к работе
Для того чтобы просто зажечь светодиод подключенный к порту платы достаточно прописать следующий код:
Добавляем на форму компонент 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(ШИМ) то в коде нужно сделать небольшие изменения.
FirmataVB1.PinMode(6,3) '' где 3 - это переход в режим PWM
FirmataVB1.DigitalWrite(6,x) '' где x - это значение от 0 до 255
Для работы с аналоговым входом мы указываем
FirmataVB1.PinMode(6,0) ''где 0 - перевод в режим входа
x = FirmataVB1.AnalogRead(6) '' где x - переменная в которую мы получаем значения порта, и 6 - порта
Как по мне библиотека написана не зря и лично мне сэкономила много времени.
Надеюсь данная статья кому-то будет интересна и полезна.
Сайт библиотеки Firmata.VB.NET [2]
Сайт протокола Firmata [3]
Автор: djmorgan
Источник [4]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/arduino/27304
Ссылки в тексте:
[1] страницу: http://www.acraigie.com/programming/firmatavb/default.html
[2] Firmata.VB.NET: http://www.acraigie.com
[3] Firmata: http://firmata.org/wiki/Main_Page
[4] Источник: http://habrahabr.ru/post/169707/
Нажмите здесь для печати.