В данной статье, я хочу сделать обзор библиотеки на языке .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
Автор: djmorgan