PlatformIO Investigation

While looking around for a good library to parse JSON on an Arduino, I bumped into PlatformIO. This seems to address a problem I've been struggling with – library / board management.

I had to update my OS X Homebrew install of Python to get this working (I really needed to do that anyway) and I needed to install this using sudo - sudo pip install -U platformio. Because of virtualenv, I also had to gpip install -U pip setuptools - which is using a 'global' version of the Python pip command. Modifications to my .bashrc file were required...

With all that, I was able to build and deploy the 'blink' code on a Arduino Uno (actually an Adafruit Metro) using the command:

 mkdir platformio_blink
 cd platformio_blink
 platformio init --board=uno

and then added a main.cpp file to the platformio_blink/src folder

Here's what that looks like:

#ifdef ENERGIA
    #include "Energia.h"
#else
    #include "Arduino.h"
#endif

#ifndef LED_PIN
    // Most Arduino boards already have a LED attached to pin 13 on the board itself
    #define LED_PIN 13
#endif

void setup() {
  pinMode(LED_PIN, OUTPUT);     // set pin as output
}

void loop() {
  digitalWrite(LED_PIN, HIGH);  // set the LED on
  delay(1000);                  // wait for a second
  digitalWrite(LED_PIN, LOW);   // set the LED off
  delay(1000);                  // wait for a second
}

Then by executing platformio run, the code was uploaded to the Uno / Metro board. And voila, blinking pin 13!