This is a small post on how to set up your Arduino development environment without using the crappy Arduino IDE. The setup uses an Arduino Uno.
The current version of Ubuntu (at this time it is Ubuntu 11.04) offers the latest version of the Arduino library through the Universe repository. This means that installation is as simple as typing:
sudo apt-get install arduino-core
Be aware that there are two packages in the Ubuntu repositories;
- arduino – Arduino library and IDE (including some additional libraries).
- arduino-core – Arduino library only (without any java dependencies).
Since the Arduino IDE is of no interest to us, the core package is perfect. The package installes files under:
/usr/share/arduino
/usr/share/doc/arduino-core
A main makefile is included under /usr/share/arduino/Arduino.mk
. It can be used to build an Arduino project by creating a small project specific makefile, refer to the main makefile and finally define a few required constants. Then type:
make
Here is a screenshot from the Arduino.mk
description section:
Also, a main.cpp file is included in the core package. Personally, I prefer to create my own in each project, so I delete it;
sudo rm /usr/share/arduino/hardware/arduino/cores/arduino/main.cpp
Now, create a project directory with the following content:
A make file Makefile
ARDUINO_DIR = /usr/share/arduino TARGET = <your project name> ARDUINO_LIBS = MCU = atmega328p F_CPU = 16000000 ARDUINO_PORT = <serial port, e.g. /dev/ttyACM0> AVRDUDE_ARD_BAUDRATE = 115200 AVRDUDE_ARD_PROGRAMMER = arduino include /usr/share/arduino/Arduino.mk
A main file main.cpp
#include <WProgram.h> int ledPin = 13; // LED connected to digital pin 13 void setup() { pinMode(ledPin, OUTPUT); } void loop() { digitalWrite(ledPin, HIGH); // set the LED on delay(500); // wait for half a second digitalWrite(ledPin, LOW); // set the LED off delay(500); // wait for half a second } int main(void) { init(); setup(); for (;;) { loop(); } }
Now build your project by typing the following in the project directory:
make upload
Your project should now be built and uploaded to the Arduino. Have fun!
WHAT PORT?
To find out what port the arduino is connected to, connect the Arduino Uno and type:
dmesg
There should be some lines similar to:
[11755.790269] usb 6-2: USB disconnect, address 3 [11758.350294] usb 6-2: new full speed USB device using uhci_hcd and address 4 [11758.555635] cdc_acm 6-2:1.0: ttyACM3: USB ACM device
This tells us that the Arduino is connected to serial port ttyACM3
, which has the path /dev/ttyACM3
.
Pingback: itemprop="name">Arduino UNO and the Google ADK – part I | Jayway Team Blog - Sharing Experience
Excellent post! thank you
Thanks! Just a FYI update, the next release of Debian and Ubuntu will have the makefile components in a new package: arduino-mk.
You should “apt-get install arduino-mk” in the future, and that package will pull in arduino-core.
This was done because arduino-core and arduino-mk are two separate projects and mixing the files wasn’t the right thing to do.
Hola, intente seguir los pasos para independizarme del IDE de arduino, pero aun no consigo hacer que ande el proyecto aqui publico, tengo el ubuntu 11.10
recomendaciones!
Hi! I would rather not remove the main.cpp from the arduino-core installation, as this would break the consistency of package management. Besides, this file does no harm, as your own main() will take precedence over anything defined in a library anyway.
If you are afraid of misspelling main() in your source, and then getting the library version instead, then just add
NO_CORE_MAIN_CPP = Yes
in your local Makefile.
Regards.
In Ubuntu 14.10, the recipe for getting started is the following:
1. $ sudo apt-get install arduino-mk
2. Get your development user into the ‘dialout’ group:
$ sudo gedit /etc/group
and append your username to the comma separated list of usernames on the dialout line:
dialout:x:20:
3. Log out, log in, to get the group to take effect
4. make an empty directory you want to program in.
5. create this makefile (for the uno):
~/empty_dir_for_an_arduino_project $ cat Makefile
ARDMK_DIR = /usr/share/arduino
BOARD_TAG = uno
include $(ARDMK_DIR)/Arduino.mk
6. make this code file:
$ cat main.cc
#include
int main(void) {
init();
const int led_pin = 12;
pinMode(led_pin, OUTPUT);
for (bool state = true; ; state = !state) {
digitalWrite(led_pin, state ? HIGH : LOW);
delay(500);
}
}
7: make && make upload
The included file in the code is supposed to be
#include Arduino.h
Where Arduino.h inside less than and greater than signs like this:
https://github.com/ondras/arduino/blob/master/serial-remote/Remote.cc#L3
Hi friends,
i am moni from delhi The current version of Ubuntu (at this time it is Ubuntu 11.04) offers the latest version of the Arduino library through the Universe repository. This means that installation is as simple as typing:
Thank you,