Have you ever programmed an Arduino? Did you know that Arduino can be programmed with JavaScript?😏
Requirements
- Arduino UNO microcontroller,
- LED,
- 220-ohm resistor,
- Arduino IDE installed,
- NodeJS installed (I recommend the latest LTS version),
- Visual Studio Code (or another code editor).
We must first assemble the circuit we are going to work with.
A circuit similar to this is created in TinkerCad.
Once we have the circuit assembled we need to prepare our Arduino for programming with JavaScript not yet completely.
We must first install the Firmata library on it.
Navigate to File> Examples> Firmata> StandardFirmataPlus and upload the file that opens to our Arduino.
Upload the code to the Arduino board by pressing the Upload.
After a successful upload, we need to install some pre-required tools.
Now is the time to make a directory where we will write our code for Arduino.
Since I'm using a Windows computer, I had to do a couple of things before I could start programming Arduino with JavaScript.
In the console with administrative privileges, enter two commands to install two more programs.
npm --add-python-to-path install --global --production windows-build-tools
and install the node-gyp
JavaScript library with the command
npm install -g node-gyp
For your operating system, check what you need to install before starting at this link.
After installing everything you need, we can start working.
We will use the johnny-five
library to program the Arduino, which is one of the better libraries for programming microcontrollers. It supports Arduino, Raspberry Pi and more ... A list of all is available at this link.
The library allows us to program many components for the Arduino. The advantage I see is that it makes many tasks easier for us compared to C ++.
Code for our simple circuit.
const {Board, Led} = require("johnny-five");
const board = new Board({
port: "COM3" // Check if is your Arduino on this port (this you can make in Arduino IDE)
});
board.on("ready", () => {
const led = new Led(3);
led.blink(500);
});
Now, all we have to do is run the program on our Arduino. To do this, type in the command line:
node main.js # In case if our file is named main.js
Now it's your turn to start creating a variety of circuits with JavaScript and the Arduino microcontroller.
If you like the content I create, you can start following me on my Twitter account.
Top comments (17)
Just to be clear: you don't program the Arduino with JS; you run a JS program on your computer that controls the Arduino. If the computer is not connected to the Arduino, the Arduino doesn't "work".
Am I right?
Yes it's true. The purpose of the article was to show web developers how to manage Arduino with JavaScript, and thanks for comment.
My question was not some kind of value judgement, but really to clarify my understanding.
You don't always need the Arduino to be standalone.
Sometimes, it's OK to have the Arduino connected to your computer to run the program. For instance, when you use it to communicate with an electronic test equipment.
Sessions agree that no, if we want to use an Arduino standalone without a computer it's C ++, so. However, if we want to test a circuit or learn how to assemble electronic components together, it is easier to use JavaScript.
There's a board that runs javascript. Have you tried espruino?
A few years ago I tried something similar but using a raspberry pi to control a circuit with node.js
I have a few problem for lack of support and I even had to write a small package to controll an adc0832 (released with MIT licence) github.com/Edo78/ADC0832
Nice.
Thanks, it was a little fun project to show my daughters what a developer can do :D
youtu.be/kGFI8ifeHwY
The developer has the power to control the world 😉.
When attempting to set this all up and then running "node filename.js", I am receiving the following summarized error:
"Error: Cannot find module 'firmata' ... code: 'MODULE_NOT_FOUND'...
I then attempted to node install firmata, but it had a lot of errors during installation. I also attempted to node install arduino-firmata, but I don't think the latter is the correct module to use.
Any ideas on how I might go about fixing this issue?
On another issue, when attempting to execute the suggested script for windows-build-tools, errors occurred as it appears to be suggesting that this particular library is now a part of (baked in) node.
npm --add-python-to-path install --global --production windows-build-tools
Could this be the case?
I got this working by installing Visual Studio Build Tools. I didn't think I would need something so heavy as it installed about 1.6 GB on my machine. My intention is to allow a user to use an Arduino from a website by using javascript. I'm rather new to the npm and node side of things, but if I would like a user to use the arduino by going to my website, would they have to install visual studio and the likes or will this VS only be needed on my web server?
Cool to see these kind of articles. I made quite big DIY really customized heatpump controller with mega2560+nano backpack with johnny-five.
github.com/saksholm/heatpump-node
Nice.
Very cool. Thank you!
Thank you for reading.
Seems fun to play with!
Yes it is.