# Arduino Interface Question

**URL:** <https://mworks.discourse.group/t/arduino-interface-question/369>\
**Category:** Support\
**Created:** [November 8, 2017, 3:09pm UTC](https://mworks.discourse.group/t/arduino-interface-question/369 "2017-11-08T15:09:14Z")\
**Posts on this page:** 8\
**Page:** 1

<div class="post-metadata">

**Author:** ![cstawarz](https://yyz1.discourse-cdn.com/flex031/user_avatar/mworks.discourse.group/cstawarz/32/3_2.png) [@cstawarz](https://mworks.discourse.group/u/cstawarz)\
**Post date:** [November 8, 2017, 3:09pm UTC](https://mworks.discourse.group/t/arduino-interface-question/369/1 "2017-11-08T15:09:14Z")

</div>

Hi Chris,

We’re going to need to interface with Arduino through Firmata for our experiment’s juice reward, and I have looked at the documentation and am still unsure how to put this into practice. How do I, from the MWorks side, interface with an Arduino board that has Firmata on it already?

Thank you,  
Yvonne

---

<div class="post-metadata">

**Author:** ![cstawarz](https://yyz1.discourse-cdn.com/flex031/user_avatar/mworks.discourse.group/cstawarz/32/3_2.png) [@cstawarz](https://mworks.discourse.group/u/cstawarz)\
**Post date:** [November 8, 2017, 4:11pm UTC](https://mworks.discourse.group/t/arduino-interface-question/369/2 "2017-11-08T16:11:26Z")

</div>

Hi Yvonne,

> How do I, from the MWorks side, interface with an Arduino board that has Firmata on it already?

First, you need to add a [Firmata device](https://mworks.github.io/documentation/0.8/components/firmata_device.html) to your experiment. Then, for every input or output you want to use, you need to attach an appropriate channel to the device. The available channel types are

- [Analog input](https://mworks.github.io/documentation/0.8/components/firmata_analog_input_channel.html)
- [Analog output](https://mworks.github.io/documentation/0.8/components/firmata_analog_output_channel.html)
- [Digital input](https://mworks.github.io/documentation/0.8/components/firmata_digital_input_channel.html)
- [Digital output](https://mworks.github.io/documentation/0.8/components/firmata_digital_output_channel.html)

When adding a channel, you need to specify the pin number you want to use. This will normally be the number printed next to the pin connector on the Arduino board (e.g. `7`, `A3`). You also need to specify a variable for the “value” parameter. For input channels, the pin value will be stored in the variable. For output channels, the pin value will be read from the variable.

I’ve attached a short example experiment that configures digital pin 13 as an output and toggles its state every second. (On an [Arduino Uno](https://www.arduino.cc/en/Main/ArduinoBoardUno), this pin is tied to the built-in LED, which should light up when the pin value is high.) Because the device declaration omits both the [serial\_port](https://mworks.github.io/documentation/0.8/components/firmata_device.html#serial-port) and [bluetooth\_local\_name](https://mworks.github.io/documentation/0.8/components/firmata_device.html#bluetooth-local-name) parameters, MWorks looks for a single connected serial device and, if it finds one, assumes it’s the Firmata device. If you have multiple devices connected via serial-over-USB, or if you want to use a Firmata device connected via Bluetooth, you’ll need to include one of those parameters.

Hopefully this makes sense. If you have any questions, please let me know.

Chris

---

<div class="post-metadata">

**Author:** ![cstawarz](https://yyz1.discourse-cdn.com/flex031/user_avatar/mworks.discourse.group/cstawarz/32/3_2.png) [@cstawarz](https://mworks.discourse.group/u/cstawarz)\
**Post date:** [November 8, 2017, 4:11pm UTC](https://mworks.discourse.group/t/arduino-interface-question/369/3 "2017-11-08T16:11:26Z")

</div>

Attachment: [blink.mwel.zip](https://mworks.discourse.group/uploads/short-url/qIqGkBYq6VfMdTEXKFng4oJvslo.zip) (310 Bytes)

---

<div class="post-metadata">

**Author:** ![cstawarz](https://yyz1.discourse-cdn.com/flex031/user_avatar/mworks.discourse.group/cstawarz/32/3_2.png) [@cstawarz](https://mworks.discourse.group/u/cstawarz)\
**Post date:** [November 8, 2017, 9:16pm UTC](https://mworks.discourse.group/t/arduino-interface-question/369/4 "2017-11-08T21:16:49Z")

</div>

Hi Chris,

This is great, thank you. I had another question about MWorks’ Arduino  
integration. Does MWorks support servo commands? I couldn’t find anything  
about it on the forums or documentation.

Thanks,  
Yvonne

---

<div class="post-metadata">

**Author:** ![cstawarz](https://yyz1.discourse-cdn.com/flex031/user_avatar/mworks.discourse.group/cstawarz/32/3_2.png) [@cstawarz](https://mworks.discourse.group/u/cstawarz)\
**Post date:** [November 8, 2017, 9:21pm UTC](https://mworks.discourse.group/t/arduino-interface-question/369/5 "2017-11-08T21:21:14Z")

</div>

Hi Yvonne,

> Does MWorks support servo commands?

Not at present, but I can add support if you need it.

Chris

---

<div class="post-metadata">

**Author:** ![cstawarz](https://yyz1.discourse-cdn.com/flex031/user_avatar/mworks.discourse.group/cstawarz/32/3_2.png) [@cstawarz](https://mworks.discourse.group/u/cstawarz)\
**Post date:** [November 8, 2017, 9:26pm UTC](https://mworks.discourse.group/t/arduino-interface-question/369/6 "2017-11-08T21:26:58Z")

</div>

Hi Chris,

That would be great. We want to use servo commands to integrate with some  
custom equipment built by our staff scientist, so that would be very  
helpful.

Yvonne

---

<div class="post-metadata">

**Author:** ![cstawarz](https://yyz1.discourse-cdn.com/flex031/user_avatar/mworks.discourse.group/cstawarz/32/3_2.png) [@cstawarz](https://mworks.discourse.group/u/cstawarz)\
**Post date:** [November 15, 2017, 3:11pm UTC](https://mworks.discourse.group/t/arduino-interface-question/369/7 "2017-11-15T15:11:11Z")

</div>

Hi Yvonne,

As of the current [nightly build](https://mworks.github.io/downloads/), MWorks now supports servo control via the new [Firmata Servo Channel](https://mworks.github.io/documentation/0.8/components/firmata_servo_channel.html). Usage is pretty straightforward ([example](https://raw.githubusercontent.com/mworks/mworks/5261d5c128913ea45b34a1c10ea9213e59bb69c5/examples/Tests/IODevice/Firmata/Servo.inc)). If you have any questions, please let me know.

Chris

---

<div class="post-metadata">

**Author:** ![cstawarz](https://yyz1.discourse-cdn.com/flex031/user_avatar/mworks.discourse.group/cstawarz/32/3_2.png) [@cstawarz](https://mworks.discourse.group/u/cstawarz)\
**Post date:** [July 19, 2022, 9:51pm UTC](https://mworks.discourse.group/t/arduino-interface-question/369/8 "2022-07-19T21:51:20Z")

</div>

Closed on July 19, 2022, 9:51pm UTC


