VS Code untuk Arduino

Melanjutkan catatan tentang Visual Studio Code, dalam artikel ini saya akan menunjukkan bagaimana VSCode dapat dipakai untuk mengerjakan program untuk papan Arduino (termasuk Arduino compatible). Ada beberapa metode untuk memprogram Arduino melalui vscode, kali ini saya akan menunjukkan metode ekstensi dari Microsoft (yang juga membuat VS Code).

Gambar 1. Arduino extension

Keterangan lebih lanjut, termasuk cara instalasi terdapat di halaman ini.

Prerequisites

Arduino IDE is required. Please install it from here.

  • The supported Arduino IDE versions are 1.6.x and later.
  • The Windows Store’s version of Arduino IDE is not supported because of the sandbox environment of Windows app.

Installation

Open VS Code and press F1 or Ctrl + Shift + P to open command palette, select Install Extension and type vscode-arduino.

Or launch VS Code Quick Open (Ctrl + P), paste the following command, and press enter.

ext install vscode-arduino

Commands

This extension provides several commands in the Command Palette (F1 or Ctrl+Shift+P) for working with *.ino files:

  • Arduino: Board Manager: Manage packages for boards. You can add 3rd party Arduino board by configuring Additional Board Manager URLs in board manager.
  • Arduino: Change Baud Rate: Change the baud rate of selected serial port.
  • Arduino: Change Board Type: Change board type or platform.
  • Arduino: Close Serial Monitor: Stop serial monitor and release the serial port.
  • Arduino: Examples: Show example list.
  • Arduino: Initialize:Scaffold a VS Code project with an Arduino sketch.
  • Arduino: Library Manager: Explore and manage libraries.
  • Arduino: Open Serial Monitor: Open serial monitor in the intergrated output window.
  • Arduino: Select Serial Port: Change the current serial port.
  • Arduino: Send Text to Serial Port: Send a line of text via the current serial port.
  • Arduino: Upload: Build sketch and upload to Arduino board.
  • Arduino: Verify: Build sketch.

Isi dari file settings.json untuk sistem saya sebagai berikut:

// Place your settings in this file to
// overwrite the default settings
{
    "arduino.path": "/home/sunu/arduino-1.8.3/",
    "arduino.additionalUrls": "" ,
    "arduino.autoUpdateIndexFiles": false,
    "arduino.logLevel": "info"
}

Gambar 2. Screenshot file settings.json

Gambar 3. Mencoba contoh kode dengan menekan Ctrl+Shift+P

Gambar 4. Memilih contoh kode program Arduino sederhana

Gambar 5. Kombinasi Ctrl+Shift+P memunculkan pilihan papan Arduino yang akan dipergunakan

Gambar 6. Konfigurasi port

Setelah memilih tipe papan Arduino yang akan dipergunakan (Gambar 5), berikutnya perlu diatur port yang akan dipakai untuk melakukan upload program ke papan Arduino (Gambar 6). Konfigurasi akan disimpan di file bernama arduino.json. Setelah file dibuka, langkah berikutnya adalah dengan memilih port yang sesuai. Di sistem GNU/Linux biasanya bukan bernama COM1 tetapi ttyUSB0 (kadang-kadang ttyUSB1) sebagaimana terlihat pada Gambar 6.

Gambar 7. Verify/Upload

Untuk memeriksa kode (verify) atau melakukan (upload) tekan kombinasi Ctrl+Shift+P, lalu pilih dari dropdown menu. Untuk verify bisa juga langsung dengan menggunakan shortcut Ctrl+Alt+R.

Gambar 8. Hasil verifikasi kode program

Gambar 9. Laporan pengunggahan (uploading)

Visual Studio Code Node.js

Beberapa IDE (Integrated Development Environment) dan text editor telah ditampilkan di situs ini. Misalnya Netbeans, Eclipse, Codelite, Atom (dengan PlatformIO) dan Sublime Text. Menurut saya untuk cukup banyak keperluan Sublime Text masih yang paling membantu untuk menyusun sebuah program. Sublime Text bisa dipakai secara bebas, meskipun jika kita tidak membeli lisensinya sesekali akan muncul pemberitahuan seperti pada Gambar 1.

Gambar 1.

Alternatif yang cukup menarik adalah text editor Atom, terlebih lagi dengan adanya fasilitas kemampuan untuk menggunakan PlatformIO di editor itu. Selain Atom, yang tidak kalah menarik adalah Visual Studio Code yang dikeluarkan oleh perusahaan besar, Microsoft. Tetapi jangan terkecoh, karena dari namanya orang bisa salah mengiranya sebagai Visual Studio IDE, padahal keduanya adalah program/aplikasi yang berbeda.

Beberapa keterangan dapat dikutip dari FAQ, antara lain:

What is the difference between VS Code and VS Community?

Visual Studio Code is a streamlined code editor with support for development operations like debugging, task running and version control. It aims to provide just the tools a developer needs for a quick code-build-debug cycle and leaves more complex workflows to fuller featured IDEs. For more details about the goals of VS Code, see Why VS Code.

Which OS’s are supported?

VS Code runs on Mac, Linux, and Windows. See Requirements for the supported versions. You can find more platform specific details under SETUP.

Is VS Code free?

Yes, VS Code is a free, open source editor.

Gambar 2. Sekilas mengenai peruntukan masing-masing program [sumber]

Gambar 3. Visual Studio Code (vscode) juga tersedia untuk OS GNU/Linux

Pada Gambar 3 terlihat bagaimana VS Code tersedia untuk OS dengan sistem GNU/Linux seperti Fedora, Debian, Ubuntu, Mint secara gratis karena lisensiya adalah open source. Pada gambar yang sama juga dapat dilihat bahwa vscode dapat dipergunakan untuk berbagai bahasa pemrograman.

Visual Studio Code dapat diunduh (download) di halaman ini.

Visual Studio Code sebenarnya tidak membutuhkan Node.js untuk dapat dipergunakan sebagai text editor atau code editor. Dalam artikel singkat ini Node.js hanya dipakai sebagai contoh saja, mirip dengan C/C++, Python atau Lua.

What is Node.js?

Node.js® is a JavaScript runtime built on Chrome’s V8 JavaScript engine. Node.js uses an event-driven, non-blocking I/O model that makes it lightweight and efficient. Node.js’ package ecosystem, npm, is the largest ecosystem of open source libraries in the world. [source]

As an asynchronous event driven JavaScript runtime, Node is designed to build scalable network applications. In the following “hello world” example, many connections can be handled concurrently. Upon each connection the callback is fired, but if there is no work to be done, Node will sleep. [source]

Untuk mulai mempergunakan Node.js, terlebih dahulu perlu mengunduh program atau sumber program di halaman ini.


Gambar 4. Halaman untuk mengunduh Node.js

Jika sekadar ingin mencoba, bisa langsung melakukan download versi yang sudah terkompilasi (binnaries). Tetapi untuk kepentingan jangka panjang sebaiknya mengunduh sumber kode (source code) untuk kemudian dikompilasi secara manual. Dengan catatan bahwa proses instalasi manual ini memakan waktu cukup lama, sekitar lebih dari 10 menit.

Gambar 5 dan Gambar 6 berikut akan menampilkan kemudahan-kemudahan yang bisa diberikan oleh vs code dalam proses penyusunan kode program JS untuk menggunakan Node.js.

JavaScript IntellisenseGambar 5. Fasilitas IntelliSense [sumber]

JavaScript Code NavigationGambar 6. Fasilitas pencarian [sumber]

Jika Node.js telah terinstal dengan baik di sistem maka berikutnya kita bisa mengikuti langkah uji coba sebagaimana dipandu dalam tutorial Node.js Tutorial in VS Code.

Gambar 7. Pengujian eksekusi kode dari terminal

Gambar 8. Hasil eksekusi kode JS untuk Node.js menggunakan Code Runner

Gambar 9. Hasil percobaan penggunaan fasilitas debug

Berikutnya jika tertarik lebih lanjut mencoba Node.js dengan bantuan Visual Studio Code maka silakan mengacu dan mengikuti tuntunan/panduan pada sejumlah link berikut:

Sublime Text Lua

 

[intense_panel shadow=”11″ border=”1px solid #696161″]

Sublime Text sebagai text editor dapat dipergunakan untuk untuk melakukan pemrograman dalam berbagai bahasa pemrograman. Pada tulisan yang lalu sudah coba saya tampilkan Sublime Text dengan contoh untuk melakukan pemrograman dalam bahasa C (termasuk dialect untuk Arduino), pada artikel berikutnya telah saya sampaikan secara singkat penggunaannya untuk mempermudah pemrograman dalam bahasa Python. Pada artikel ini saya coba sampaikan secara singkat penggunaan ST (Sublime Text) untuk pemrograman dalam bahasa Lua.

[/intense_panel]

Ada beberapa sumber yang menarik untuk dibaca supaya bisa mengerti apakah Lua itu. Setelah saya seleksi beberapa yang paling menarik akan saya cantumkan dalam bentuk tautan (link). Tetapi mari mulai dengan mengutip salah satu sumber, yaitu situs utama Lua:

What is Lua?

Lua is a powerful, efficient, lightweight, embeddable scripting language. It supports procedural programming, object-oriented programming, functional programming, data-driven programming, and data description.

Lua combines simple procedural syntax with powerful data description constructs based on associative arrays and extensible semantics. Lua is dynamically typed, runs by interpreting bytecode with a register-based virtual machine, and has automatic memory management with incremental garbage collection, making it ideal for configuration, scripting, and rapid prototyping. <span class="su-quote-cite"><a href="https://www.lua.org/about.html" target="_blank">lua.org >> about.html</a></span>

Secara sederhana bahasa pemrograman Lua cenderung lebih dekat dengan pola penggunaan bahasa Python daripada bahasa C. Pengguna dapat langsung mencoba tiap baris kode dan memperhatikan hasil eksekusinya. Sebelum melanjutkan, Lua perlu diunduh (download) di link ini dan diinstal di sistem.

Lebih lanjut untuk mempelajari Lua, ada beberapa tutorial yang memudahkan untuk mengawali belajar memprogram dalam bahasa Lua. Saya urutkan sebagai berikut:

Setelah mengenal apakah bahasa Lua itu, maka langkah selanjutnya adalah bagaimana malakukan pengaturan agar Sublime Text dapat dipergunakan untuk mempermudah proses pengerjaan program dalam bahasa Lua.

Sebagaimana plugin atau paket lain (semisal untuk bahasa Python), instalasi paket-paket tambahan yang diperlukan untuk bahasa Lua ini akan lebih mudah dilakukan jika menggunakan Package Control.  Jika belum ter-install maka cara instalasi Package Control bisa dibaca dan diikuti pada link ini.

Gambar 1. Package Control telah terinstal dan siap untuk dipergunakan

Dua sumber informasi yang baik yang dapat dipakai untuk memandu instalasi paket untuk Lua adalah:

Berikut adalah paket-paket yang saya instal di Sublime Text untuk pemrograman dalam bahasa Lua:

LuaLove is a package for Sublime Text 2/3 with support for the Love2D API. It is based on SublimeLove, LuaSublime, and lua_snippet.

LuaExtended is a syntax definition and snippet package for Sublime Text 3.

Meskipun tertulis untuk ST 3, paket ini juga dapat berfungsi di ST 2.

Gambar 2. Contoh penggunaan LuaExtended [sumber]

Paket ini berfungsi untuk menyediakan interpreter internal sehingga pengguna dapat mencoba kode program secara interaktif. Sama seperti penggunaannya untuk bahasa Python , paket ini juga berfungsi baik untuk bahasa Lua.

Gambar 3. Penggunan REPL untuk Lua

Terakhir, kita dapat mencoba kode-kode contoh dari link pada bagian pertama artikel ini dengan Sublime Text yang telah konfigurasi sebagaimana pada bagian dua.

Gambar 4. Hasil uji Lua dengan menggunakan build (Ctrl+B)

Sublime Text editor

Pada post sebelumnya, saya sudah coba memperkenalkan Atom text editor yang dilengkapi dengan PlatformIO. Maka untuk artikel ini saya mencoba untuk memperkenalkan text editor lain yang juga memiliki penggemar aktif, bahkan mungkin penggunanya lebih banyak dari Atom. Text editor yang akan saya perkenalkan (tentu bagi yang belum kenal) adalah Sublime Text. Sampai saat saya menulis ini terdapat dua versi, yaitu versi dua (lazim juga disingkat sebagai ST 2) dan versi tiga (ST 3).

Para programmer yang menyukai editor Sublime Text biasanya mengungkapkan beberapa alasan seperti banyaknya plugin yang memudahkan dan mempercepat kerja, program yang ringan dan cepat dalam proses loading, dan bebas untuk dipergunakan. Sebagaimana IDE (Integrated Development Environment) maupun text editor yang baik lainnya, ST memberikan fasilitas untuk pewarnaan yang berbeda untuk tiap kata kunci dalam berbagai bahasa pemrograman. Misalnya untuk C/C++, Python, atau JavaScript.

Gambar 1 Pewarnaan kata kunci untuk bahasa C (AVR GCC)

Selain fasilitas yang lazim ditemui di banyak editor seperti pada Gambar 1, ST juga memberikan kemudahan bagi programmer untuk mendapatkan plugin yang mempermudah pekerjaan mereka. Salah satu contoh adalah plugin Stino yang memungkinkan pengguna untuk mengerjakan program untuk sistem Arduino langsung dari ST (Sublime Text) tanpa perlu mempergunakan Arduino IDE. Kemudahan ini terutama sangat menarik pada beberapa tahun yang lalu karena saat itu Arduino IDE masih dalam bentuk yang lebih sederhana daripada versi yang sekarang. Namun demikian menurut saya sendiri, untuk program yang memiliki banyak baris kode (program yang relatif panjang) menggunakan ST masih lebih memudahkan dan menyenangkan bila dibandingkan dengan menggunakan Arduino IDE.

Gambar 2. ST 2 dan Stino untuk pemrograman sistem Arduino

Gambar 2 menunjukkan penggunaan Sublime Text (ST) dengan Stino untuk pemrograman papan Arduino. Gambar 3 menunjukkan hasil dari build untuk program contoh sederhana (Hello World) dalam bahasa C untuk PC (GCC non Arduino). Program ini kemudian dieksekusi dengan perintah run dalam Gambar 4.

Gambar 3. Contoh hasil build program dalam bahasa C

Gambar 4. Hasil uji coba eksekusi (run) program sederhana dalam bahasa C (non Arduino)

Sublime Text, baik Sublime Text 2 maupun Sublime Text 3 (yang sampai saat saya tulis ini masih dalam versi beta) dapat di-install di sistem dengan OS Microsoft Windows maupun GNU/Linux (seperti Fedora, Debian, Ubuntu, Mint). Namun sampai saat ini khusus untuk sistem GNU/Linux Mint saya masih kesulitan untuk mempergunakan ST untuk pemrograman Atmel AVR (tanpa pengaturan tambahan), meskipun tidak ada masalah jika dipergunakan untuk pemrograman Arduino. Sedangkan untuk MS Windows XP, tidak ada kesulitan baik untuk Atmel AVR maupun Arduino.

Gambar 5. Contoh pesan kesalahan

Pesan kesalahan yang mendatangkan kesulitan seperti pada Gambar 5 dapat diatasi pada ST 2 dengan mengacu dan mengikuti dua sumber. Pertama, untuk memahami proses instalasi paket otomatis menggunakan Package Control (packagecontrol.io) yang mendatangkan pesan seperti pada Gambar 5 dapat dibaca di link berikut ini. Sedangkan untuk perbaikan dengan melakukan instalasi dan pengaturan secara manual dapat dibaca dan diikuti pada halaman berikut ini.

Bagian penting dari proses perbaikan–sekalipun menyulitkan– adalah bagian berikut (saya kutip dari halaman GitHub SublimeClang):

  1. If you don’t want to use package control, you can manually install it
    1. Go to your packages directory and type:
      1. git clone –recursive https://github.com/quarnster/SublimeClang SublimeClang
      2. After this you’ll have to Compile libcache as described in the Additional Prerequisites (Linux Only) section

 

Additional Prerequisites (Linux Only)

  1. ctypes can’t be imported in the Linux version of Sublime Text 2 right now. This can however be worked around easily with the help of pythonbrew:
    1. curl -kL http://xrl.us/pythonbrewinstall | bash
    2. source “$HOME/.pythonbrew/etc/bashrc”
    3. pythonbrew install –configure=”–enable-unicode=ucs4″ 2.6
    4. ln -s $HOME/.pythonbrew/pythons/Python-2.6/lib/python2.6/ <your Sublime Text 2 folder>/lib/python2.6
  2. If you install SublimeClang via Package Control, it seems libcache and libclang will be deleted when the package is updated, so it’s recommended that you manually install the plugin by using the git commands listed in the Installation section.
  3. Once SublimeClang has been installed, libcache will have to be compiled:
    1. cd src
    2. mkdir build
    3. cd build
    4. cmake ..
    5. make
  • Note that if a usable libclang library isn’t found, it will be downloaded and built as part of the build process.

 

Sebagai catatan tambahan dari saya, berdasarkan pengalaman langkah keseluruhan langkah instalasi memerlukan waktu yang cukup lama. Waktu yang cukup untuk membuat minuman kopi panas, merebus mie, makan lalu menucuci alat masak dan alat makan. Untungnya setelah perintah kita berikan pada komputer, proses ini berjalan secara otomatis. Proses yang paling lama adalah proses perintah berikut (semuanya dalam satu baris):

git clone --recursive https://github.com/quarnster/SublimeClang SublimeClang

Setelah instalasi library (pustaka) yang diperlukan selesai, proses dapat dilanjutkan oleh pengguna dengan memberikan perintah yang sesuai seperti pada panduan.

http://i.imgur.com/62RS0C8.gifGambar 6. Contoh fasilitas pengeditan text (kode) pada ST

Sublime Text memiliki banyak fitur (fasilitas) yang dapat membantu para programer, sebagai contoh dapat dilihat pada animasi di Gambar 6. Contoh fitur yang lain dapat langsung dilihat di situs ST yaitu: https://www.sublimetext.com/.

ST 2 maupun ST 3 bisa dipakai secara gratis, meskipun jika ingin anda dapat membeli lisensinya untuk penggunaan profesional di tautan berikut: https://www.sublimetext.com/buy?v=3.  Untuk mengunduh silakan mengakses halaman berikut: download. Untuk Stino, terdapat dua versi yang bisa dipergunakan, yang lama dan yang baru. Karena saya telah cukup lama mempergunakan Stino, maka versi yang saya pergunakan adalah versi Stino di link ini. Sedangkan versi Stino yang baru (sampai saat tulisan ini saya buat) ada di link berikut ini.

Demikian, semoga bermanfaat.

 

Save

Save

Mengenal PlatformIO

Pada kesempatan ini saya akan memuat catatan mengenai PlatformIO. Sebelumnya saya sudah membuat catatan penggunaan text editor maupun IDE seperti Energia, Codelite, Netbeans maupun Arduino IDE. Masing-masing IDE tentu memiliki keunggulan dan kekurangan dan masing-masing programer akan memilki kebutuhan dan selera yang berbeda-beda. Nah PlatformIO ini cukup unik, di satu sisi cukup lengkap dan mampu dipergunakan untuk mengerjakan kode untuk berbagai arsitektur mikrokontroler. Di sisi lain tampilannya menyerupai Sublime Text yang ringan dan sederhana.

pio001Gambar 1.

Di Gambar 1 dapat dilihat beberapa contoh default dan proyek yang dibuat manual. Yang sudah saya coba ada beberapa mikrokontroler, yang juga sudah pernah saya uji dengan IDE atau cara lain. Berikut beberapa arsitektur mikrokontroler yang sudah saya coba di PlatformIO (atau Atom);

Sebagai catatan untuk melakukan pemrograman pada STM8 (STM8S103F3); sekalipun PlatformIO tidak mendukung secara langsung toolchain STM8 tetapi editornya masih dapat dimanfaatkan dan mampu membantu keberhasilan pemrograman. Dapat dilihat pada Gambar 2.

pio002Gambar 2. [Klik gambar untuk memperbesar tampilan]

PlatformIO bukanlah text editor dalam pemahaman yang biasa dipergunakan. Pengungkapan yang lebih baik bisa diperoleh dari situs PlatformIO sendiri.

pio003Gambar 3. Apakah PlatformIO itu?

“Different microcontrollers normally have different developing tools . For instance Arduino rely on Arduino IDE. Few more advanced users set up different graphical interfaces like Eclipse for better project management. Sometimes it may be hard to keep up with different microcontrollers and tools. You probably thought that single unified development tool could be great. Well this is what PlatformIO open source ecosystem is for.

This is cross platform code builder and library manager with platforms like Arduino or MBED support. They took care of toolchains, debuggers, frameworks that work on most popular platforms like Windows, Mac and Linux. It supports more than 200 development boards along with more than 15 development platforms and 10 frameworks. So most of popular boards are covered. They’ve done hard work in organizing and managing hundreds of libraries that can be included in to your project. Also lots of examples allow you to start developing quickly. PlatformIO initially was developed with Command line philosophy. It’s been successfully used with other IDE’s like Eclipse or Visual Studio. Recently they’ve released a version with built in IDE based on Atom text editor”, – [Embedds].

 

PlatformIO dapat diintegrasikan ke dalam beberapa IDE di antaranya NetBeans, Codeblocks, dan Visual Studio. Meski begitu tampaknya yang terkenal adalah implementasinya ke dalam text editor Atom.io.

Atom is a text editor that’s modern, approachable, yet hackable to the core—a tool you can customize to do anything but also use productively without ever touching a config file.

Mungkin karena itu kadang-kadang PlatformIO dicampuradukkan dengan Atom. Keduanya jelas berbeda meski untuk banyak keperluan praktis merujuk pada hal yang sama. Perbedaan baru akan terlihat jika menemui kasus seperti contoh pada pemrograman STM8S103F3 di bagian atas tulisan ini. Untuk pemrograman contoh led berkedip itu, PlatformIO belum bisa mendukung platform maupun board sistem STM8. Karena itu yang bisa dimanfaatkan “hanya” text editor Atom saja. Tetapi dapat dilihat, dalam kondisi seperti itu pun terbukti masih bisa membantu menyelesaikan pemrograman dengan baik.

PlatformIO IDE yang dibangun berdasar text editor Atom dapat diunduh (download) di link ini. Saya sudah berhasil mencoba instalasi di sistem GNU/Linux, tetapi gagal mencoba di sistem tua saya, IBM Thinkpad T43 yang masih menggunakan Microsoft Windows XP SP3. PlatformIO mensyaratkan OS yang lebih baru dari XP.

Linux pengguna-laptop 3.16.0-38-generic #52~14.04.1-Ubuntu SMP Fri May 8 09:43:57 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux

 

Ada beberapa pengaturan yang perlu dilakukan agar manfaat yang bisa diberikan platform ini dapat dipergunakan secara maksimal. Salah satu pengaturan yang memerlukan perhatian adalah mengenai clang. Sekilas mengenai Clang dapat dipelajari di sini, begitu pula perbandingannya dengan GCC dapat dibaca di sini.

pio004Gambar 4

Ada dua paket yang perlu menjadi perhatian; autocomplete-clang dan clang-format package. Jika belum terinstalasi dengan baik maka keduanya sebaiknya diinstal terlebih dahulu. Paket yang pertama (autocomplete-clang) sangat membantu proses coding , fungsi dan cara kerjanya dapat lebih mudah dipahami melalui gambar gif berikut:

autocomplete-clangGambar 5. Fasilitas autocomplete [image credit: autocomplete-clang package]

pio006Gambar 6. Melihat paket clang di Settings.

Paket yang kedua (clang-format package) juga sangat membantu pengerjaan kode program. Tetapi berdasar apa yang saya alami, paket kedua ini memerlukan usaha yang lebih agar dapat mudah dipakai. Dari situs penyimpanan kode atom-clang-format:

Format your C/C++/Obj-C/Javascript files with clang-format from inside atom. Requires clang-format to be installed and on your systems path.

More info on clang-format can be found here: http://clang.llvm.org/docs/ClangFormat.html http://clang.llvm.org/docs/ClangTools.html

Pengaturan untuk clang-format disimpan di dalam file .clang-format (tanda titik menandakan bahwa file tersebut secara default tersembunyi di file manager). Untuk dapat melihat file itu di file manager, beri perintah dengan menekan kombinasi kunci di keyboard Ctrl+H. Di sistem saya file itu terletak di:

/home/rumahku/.atom/packages/clang-format/node_modules/clang-format/.clang-format

Yang cukup membuat repot, sejauh yang saya ketahui sampai saat ini, file tersebut perlu disalin manual ke setiap direktori proyek (project).

pio007Gambar 7.

Solusinya sebenarnya cukup mudah, tetapi perlu dilakukan. Salin (copy) file .clang-format ke home directory, untuk mesin saya ini menjadi

/home/rumahku/.clang-format

Adapun isi dari file .clang-format untuk konfigurasi yang saya kehendaki adalah sebagai berikut:

---
Language: Cpp
BasedOnStyle: LLVM
BreakBeforeBraces: GNU
ColumnLimit: 100

Dengan konfigurasi ini maka setiap file sumber untuk C atau CPP (C++) akan terformat ulang setiap kali diberikan perintah menyimpan kode di file. Pengguna bisa juga memberikan perintah untuk melakukan format secara manual melalui menu atau dengan shortcut: shift-cmd-K. Adapun isi dari konfigurasi bisa disimulasikan secara online di sini; https://clangformat.com/ .

Referensi tentang clang format <<klik untuk membuka>>

 

Pada Gambar 2, terlihat untuk platform yang tidak (belum) didukung oleh PlatformIO, maka hasil kompilasinya berada di direktori yang sama dengan file sumber. Pada mode ini yang dimanfaatkan adalah text editor Atom.  Tetapi untuk platform dan framework yang sudah didukung oleh PlatformIO peletakan hasil kompilasi dan build akan berbeda.

pio008Gambar 8.

Oleh PlatformIO hasil kompilasi akan diletakkan di direktori ./pioenvs . Sekedar sebagai contoh;

/tmp/atmelavr-native-blink-116720-6546-1qphcr7/.pioenvs/native_avr/

Sekalipun proses upload biasanya dapat dilangsungkan secara otomatis dengan bantuan PlatformIO, bisa jadi ada kebutuhan untuk melakukan operasi dengan command line di Terminal;

pio009Gambar 9.

pio010Gambar 10.

Mengenai perbedaan antara file elf dengan bin dapat dibaca di sini.

Untuk plaftorm dan framework yang sudah didukung oleh PlatformIO, proses upload dapat dilakukan oleh PlatformIO. Syaratnya pengguna memberi informasi yang cukup agar perintah pengunggahan tidak salah. Konfigurasi disimpan di file platformio.io yang disimpan di masing-masing root direktori proyek, contohnya:

/home/rumahku/platformioSTM32F103/platformio.ini

Misalnya untuk STM32 (mikrokontroler STM32F103C8T6) yang telah didukung oleh PlatformIO (melalui nucleo_f103rb) isi platformio.ini adalah:

#
# PlatformIO Project Configuration File
#
# Please make sure to read documentation with examples first
# http://docs.platformio.org/en/stable/projectconf.html
#
[env:nucleo_f103rb]
platform = ststm32
framework = mbed
board = nucleo_f103rb
upload_protocol = stlink

pio011Gambar 11.

Pada arsitektur STM32 jika yang dipakai adalah stlink maka perlu ditambahkan keterangan
  upload_protocol = stlink   di file platformio.ini . Diskusi mengenai kesalahan yang terjadi ada di sini dan acuan lengkap konfigurasi dapat dilihat di sini.

Gambar 12. Hasil proses uploading oleh PlatformIO

Satu hal lain yang menarik yang saya temui adalah tentang penggunaan framework mbed pada platform ststm32 (STM32). File sumber harus disimpan dengan ekstensi .cpp, jika disimpan dengan ekstensi .c maka akan manghasilkan kesalahan:

pio013Gambar 13. Kesalahan kompilasi dengan framework mbed.

Penjelasan mengenai kesalahan ini terdapat di sini:

mbed is c++-based framework. You should use *.cpp extension.

Please change file extension from *.c to .cpp.

 

pio014Gambar 14.