```
title = "Instalace PlatformIO"
perex = "Ukážeme si, jak nainstalovat a nastavit platform IO - vývojové prostředí
         (nejen) pro Arduino založené na moderním prostředí Atom"
tags = ["Článek", "Programování", "AVR", "Arduino"]
lang = "cpp"
image= "lead.png"
```

## Obsah
1. [Instalace ve windows](#instalace-ve-windows)
2. [Rychlé seznámení s prostředím](#rychle-seznameni-s-prostredim)
3. [Programování bez arduina](#programovani-bez-arduina)
4. [platformio.ini](#platformio.ini)
5. [Závěr](#zaver)
6. [Instalace pod linuxem - Fedora](#instalace-pod-linuxem---fedora)
7. [Problémy při instalaci](#problemy-pri-instalaci)

# Instalace ve windows

## Závislosti

Nejdřív nějaké potřebné programy.

1. Z [python.org](https://www.python.org/downloads/) stáhneme verzi 2.7.x s verzí
3.x to fungovat nebude.
2. Nainstalujeme standartním způsobem jen musíme při instalaci vybrat přidat python do proměnné PATH

![Python path screenshot](python-path.png)

Dále clang - ten sice není nutný ale bez něj nefunguje automatické doplňování, což je
velmi užitečný pomocník

1. Z [llvm.org](http://llvm.org/releases/download.html) stáhneme verzi pro windows (až dole)
2. To samé jako u pythonu

![Clang path screenshot](clang-path.png)

## PlatformIO

1. Stáhneme z [platformio.org](http://platformio.org/platformio-ide)
2. Nainstalujeme - nakonec se i automaticky zpustí prostředí Atom, na kterém je to postavené
3. Počkáme, až se dokončí instalace dalších věcí

## Oprava české klávesnice

Pokud používate českou klávesnici tak si určitě všimnete neschopnosti psát {}[] atd pomocí
AltGr+Něco. Naštěstí se to dá snadno opravit. Zmáčkneme Ctlr-Shift-P, napíšeme keymap a zmáčkneme Enter.

Na konec zobrazeného souboru zkopírujeme následující, uložíme a hotovo

    '.platform-win32 atom-workspace, .platform-win32 atom-text-editor':
      'ctrl-b': 'platformio-ide:target:build'
      'ctrl-r': 'platformio-ide:target:upload'
      'ctrl-alt-b': 'unset!'
      'ctrl-alt-g': 'unset!'
      'ctrl-alt-c': 'unset!'
      'ctrl-alt-v': 'unset!'
      'ctrl-alt-f': 'unset!'
    'atom-workspace, atom-text-editor':
      'ctrl-alt-b': 'unset!'
      'ctrl-alt-c': 'unset!'
      'ctrl-alt-f': 'unset!'

    'atom-text-editor':
      'ctrl-alt-f': 'unset!'
    'atom-workspace atom-text-editor:not([mini])':
      'ctrl-alt-f': 'unset!'
    '.platform-win32, .platform-linux':
      'ctrl-alt-f': 'unset!'

    '.platform-win32 atom-text-editor, .platform-linux atom-text-editor':
      'ctrl-alt-q': 'unset!'

    'atom-workspace atom-pane':
      'ctrl-alt--': 'unset!'

    'body':
      'ctrl-alt-r': 'unset!'

    '.platform-win32 atom-text-editor':
      'ctrl-alt-.': 'unset!'
      'ctrl-alt-m': 'unset!'

    '.platform-win32 .find-and-replace, .platform-linux .find-and-replace':
      'ctrl-alt-c': 'unset!'
    '.platform-win32 .project-find, .platform-linux .project-find':
      'ctrl-alt-c': 'unset!'

Tento konfigurační soubor navíc ještě nastavuje ctrl-b na sestavení (build) a ctrl-r na nahrání projektu (run).
Je to hned navrchu toho souboru - pokud vám tato konfigurace nevyhovuje stačí jí změnit.

# Rychlé seznámení s prostředím

Vytvoření projektu je snadné - stačí kliknout na ikonku nového projektu

![Vytvořit nový projekt](1-initialize-project-icon.png)

Tím se nám otevře následující menu, které snad nemusím vysvětlovat (vybereme desku a složku,
kde se projekt vytvoří)

![Menu pro vytvoření nového projektu](2-initialize-project-menu.png)

Následně ve složce src vytvoříme soubor s programem (např main.cpp) - klikneme pravým na
src a dáme New File - nyní můžeme programovat. Např jednoduchý program na blikání ledkou.

    #include "Arduino.h"

    void setup()
    {
      pinMode(LED_BUILTIN, OUTPUT);
    }

    void loop()
    {
      digitalWrite(LED_BUILTIN, HIGH);
      delay(1000);
      digitalWrite(LED_BUILTIN, LOW);
      delay(1000);
    }

Pokud uděláme chybu a soubor uložíme tak nás prostředí samo upozorní aniž bychom museli
kompilovat. Pro nahrání programu do arduina stačí zmáčnout ctrl-r nebo kliknout na druhou
ikonu zhora (šipka vpravo).

# Programování bez arduina

PlatformIO arduino podporuje, ale nijak nevyžaduje. Stejně jako v Arduino IDE nebo
eclipse či Atmel Studiu i tady bude fungovat následující program (který dělá totéž
co program výše - bliká ledkou)

    #include <avr/io.h>
    #include <util/delay.h>

    int main(void)
    {
      DDRB = 1;
      while(1)
      {
        PORTB ^= 1;
        _delay_ms(1000);
      }
    }

# platformio.ini

Pokud nechcete, nemůžete nebo nemáte arduino tak platformio lze nastavit i na
použití například s USBasp:

    [env:myboard]
    platform = atmelavr
    framework = arduino
    board = uno
    board_mcu = atmega328p
    upload_protocol = usbasp -B5
    build_flags = -Llibs -DDEBUG -Wl,-u,vfprintf -lprintf_flt
    board_f_cpu = 4000000UL

Pokud chceme používat arduino knihovny, které jsme si už nainstalovali tak přidáme

    [platformio]
    lib_dir=~/Arduino/libraries # případně jiná cesta

nebo je můžeme umístit přímo do složky lib

# Závěr

To je vše! Nyní máte vývojové prostředí (nejen) pro Arduino, které je mnohem lepší než arduino IDE.

# Instalace pod linuxem - Fedora

Instalace ve fedoře je o poznání rychlejší a jednodušší.
Pokud už máte atom

    sudo dnf -y install clang
    apm install platformio-ide

Pokud ještě ne

    sudo dnf -y install clang
    sudo dnf -y install https://dl.bintray.com/\
    platformio/ide-bundles/platformio-atom-linux-x86_64.rpm

Česká klávesnice funguje dobře od základu takže výše uvedený config není potřeba,
ale je užitečné si nastavit klávesové zkratky na zkompilování (zde ctrl-b) a
nahrání kódu (ctrl-r).

    '.platform-linux atom-workspace, .platform-linux atom-text-editor':
      'ctrl-b': 'platformio-ide:target:build'
      'ctrl-r': 'platformio-ide:target:upload'

# Problémy při instalaci

## platformio could not be spawned...

1. Máte python verze 2.7.x? Pokud máte python 3.x tak to nebude fungovat.
2. Máte avast? Pokud ano tak ho na chvíli vypněte. S jinými antiviry to normálně funguje.

# Dejte nám vědět!

Napište nám na naše [fórum](http://forum.ok1kvk.cz/)