How to program an Arduino using vim
The Arduino IDE leaves a lot to be desired. Granted, it's easy for beginners to build and upload sketches, but as a text-editor it makes you want to smash your keyboard against your monitor. Repeatedly.
Files open in new windows instead of a tab, and there are no advanced features like auto-complete; did I mention it looks like a relic from the Windows 95 era?
This article describes how you can free yourself from the shackles of the Arduino IDE and program your Arduino using vim.
arduino-makefile
arduino-makefile by Sudar Muthu is a great project that allows you compile, upload, and monitor the serial port using a simple makefile.
How simple you ask? 4 lines! Seriously. And one of those is blank!
Let's work through an example together, from scratch. Let's create a makefile for the legendary Blink sketch.
1. Install the Arduino IDE
The Arduino IDE is still required as arduino-makefile uses the software it provides. Download the latest version and extract it:
wget -O arduino.tar.xv http://arduino.cc/download.php\?f\=/arduino-1.6.8-linux64.tar.xz
mkdir ~/.arduino_ide
tar xf arduino.tar.xv -C ~/.arduino_ide --strip-components=1
2. Install arduino-makefile
To install arduino-makefile we'll use git to clone the project:
git clone https://github.com/sudar/Arduino-Makefile.git ~/.arduino_mk
You should now have the Arduino IDE installed in ~/.arduino_ide and arduino-makefile installed in ~/.arduino_mk if you've used the same paths as I have above.
3. Create a makefile
Create a folder for the project and copy the Blink sketch to that folder:
mkdir -p ~/projects/blink
cp .arduino_ide/examples/01.Basics/Blink/Blink.ino ~/projects/blink
Create an empty makefile in the same project folder:
touch ~/projects/blink/Makefile
Open the Makefile in vim and add the following:
ARDUINO_DIR = /home/jon/.arduino_ide
ARDMK_DIR = /home/jon/.arduino_mk
BOARD_TAG = uno
include $(ARDMK_DIR)/Arduino.mk
That's unbelievably simple. All you do is set some variables, and arduino-makefile takes care of the rest.
ARDUINO_DIR |
Path to the Arduino IDE |
ARDMK_DIR |
Path to arduino-makefile |
BOARD_TAG |
The name of the Arduino board we're programming. Use make show_boards to get a list of available boards. |
There are many other variables that can set. One that I use often is ARDUINO_LIBS which specifies the Arduino libraries a project requires. Checkout the arduino-makefile documentation for a complete list.
The last line in the Makefile includes arduino-makefile. You need this!
4. Build, upload, and monitor
There are three commands you need to know, which you can type in a terminal:
make |
Build the sketch |
make upload |
Upload the sketch |
make monitor |
Monitor the serial port |
Try it out. It's freakin' awesome!
Integrate with vim
We're now able to write code using vim and use the command-line to build, upload, and monitor our sketch.
Because we're using a makefile, and vim has built-in support for makefiles, integrating with vim requires no effort. None. Nada.
| vim command | Task |
|---|---|
:make |
Build the sketch |
:make upload |
Upload the sketch |
:make monitor |
Monitor the serial port |
When you run :make and there are errors, vim will go to the line where the first error is. The commands :cnext and :cprevious will cycle through the errors.
Please vote for me for witness to show your support.
This article was originally published by me on March 16th, 2016 at humblecoder.com.
Leave How to program an Arduino using vim to:
Read more #arduino posts
Best Posts From bitcalm
We have not curated any of bitcalm's posts yet. But you can encourage our curation team to review posts by visiting them regularly and by referring other readers. Because we give priority to frequently read content.
More Posts From bitcalm
- All thanks to those bloody bankers
- The lies we tell ourselves overview #1
- The lies we tell ourselves - the fear of missing out (fomo)
- The lies we tell ourselves - the Google effect
- How to setup a python development environment for Steem
- The lies we tell ourselves - the bystander effect
- Mom I'm out of gas
- [steemduino] Adafruit TFT LCD example
- How to program an Arduino using vim
- The lies we tell ourselves - the just-world fallacy