C ++ vs. Bahasa Arduino?

81

Apa kelebihan masing-masing bahasa saat menggunakan Arduino?

Saya pikir ini adalah pertanyaan umum yang bagus, tetapi saya akan menambahkan sedikit tentang mengapa saya bertanya apakah ada yang mau memberi saya tip.

Saya berpengalaman dalam bahasa yang telah diproses seperti JavaScript, PHP, dan telah mengutak-atik bahasa seperti Java dan Visual Basic. Dengan kata lain saya tahu teknik pemrograman dan orientasi objek prototypal baik klasik, tetapi tidak tentang berkomunikasi langsung dengan perangkat keras.

Saya membuat octocopter, dan saya berpikir bahwa pendekatan berorientasi objek akan menjadi yang paling mudah. (Perangkat lunak ini akan memiliki banyak fitur ...) Namun saya belum pernah menulis dalam bahasa C ++.

Karena ini adalah situs tanya jawab yang seharusnya membantu orang lain, hanya pertanyaan umum yang disajikan di awal yang sangat penting, tetapi saya menghargai komentar apa pun tentang situasi saya.

Teman Kim
sumber
16
Hindari Arduino IDE karena tidak layak dengan nama IDE-nya, itu bahkan editor yang sangat buruk: mungkin baik untuk pemula dan sketsa sederhana tetapi orang harus cepat pergi ke sesuatu yang lebih baik.
jfpoilpret
4
Ini adalah rincian yang cukup ringkas dari apa yang dimaksud dengan (dan apa yang sebenarnya ada di bawah) "Bahasa Pemrograman Arduino."
AdjunctProfessorFalcon
10
C++ vs. The Arduino Language?- "Bahasa Arduino" adalah C ++. Ada sedikit preprocessing untuk menyelamatkan Anda melakukan prototipe fungsi, tetapi yang paling pasti adalah C ++.
Nick Gammon
2
Tidak ada yang namanya bahasa Arduino. Ini hanyalah sebuah perpustakaan.
Overdrivr
2
Tidak begitu terkait dengan pertanyaan seperti pada komentar: Atmel studio gratis dan IMHO lebih baik daripada visual studio untuk pemrograman arduino. Juga mendukung plugin Visual Micro, meskipun tidak diperlukan sama sekali untuk pemrograman dan debugging arduinos.
cyberponk

Jawaban:

55

Pengalaman pribadi saya sebagai profesor (pemrograman, mekatronik) adalah bahwa jika Anda memiliki pengalaman pemrograman sebelumnya dan Anda menyadari konsep sebagai OOP, lebih baik menggunakan C / C ++. Bahasa arduino sangat bagus untuk pemula, tetapi memiliki beberapa batasan (mis. Anda harus memiliki semua file Anda di folder yang sama). Dan ini pada dasarnya adalah penyederhanaan C / C ++ (Anda praktis bisa menyalin & menempelkan kode arduino ke file C / C ++, dan itu akan berfungsi). Juga masuk akal bahwa Anda dapat pergi dan menggunakan IDE lengkap yang terkenal sebagai gerhana:

http://playground.arduino.cc/Code/Eclipse

Awalnya diperlukan sedikit lebih banyak pengaturan dan konfigurasi lingkungan dev Anda, tetapi IMHO itu sangat berharga bagi para programmer dengan pengalaman dalam bahasa lain.

Bagaimanapun, itu tidak akan membahayakan Anda untuk mulai menggunakan bahasa arduino dan arduino IDE selama beberapa hari untuk membiasakan diri dengan perangkat keras arduino dan kemudian pindah ke C / C ++ dengan Eclipse untuk benar-benar mengembangkan proyek Anda.

drodri
sumber
Terima kasih atas pemikiran anda Saya akan menggunakan Arduino IDE untuk mempelajari cara mengontrol semua perangkat keras yang berbeda seperti sensor dan layar LCD dll. Kemudian saya akan naik ke C ++ untuk membuat perangkat lunak untuk octocopter. Apakah Anda tahu buku yang bagus dan pendek untuk orang yang tahu bahasa lain? "Masalah" dengan banyak buku yang saya temukan adalah mereka memasukkan begitu banyak sehingga saya tidak perlu karena saya menggunakan mikrokontroler Atmel kecil daripada komputer UI.
Teman Kim
1
Ada buku bagus "C Programming for Arduino" oleh Julien Bayle yang bermanfaat. Ini bukan bahasa C ++ tetapi harus membantu Anda memahami dasarnya.
fenix688
Itu permintaan yang bagus: buku pendek dan bagus dengan dasar-dasar C ++ untuk programmer dari bahasa lain. Maaf saya tidak bisa memberikan rekomendasi, saya tidak tahu ada yang bagus. Sebenarnya, saya menulis buku, dengan fokus praktis (mengembangkan videogame) untuk murid-murid saya, tetapi hanya dalam bahasa Spanyol. Untuk buku C ++ yang bagus dan praktis, saya akan merekomendasikan Deitel & Deitel Cara memprogram C ++, Anda bisa melewati banyak bab lanjutan.
drodri
1
C ++ mendukung fitur OO, bahasa C tidak.
Chris O
1
@FriendofKim Tidak persis apa yang saya maksudkan (meskipun secara teknis Anda bisa, karena itu cukup cepat untuk mendukung solusi perangkat lunak untuk komunikasi serial non-megabit, dan memang memiliki total 5 U (S) SENI sementara perpustakaan Arduino hanya menyediakan 4 dari mereka tetapi iirc papan Karena tidak menyediakan pin untuk salah satu USARTs); pustaka Arduino mengkonfigurasi USART untuk menggunakan mode asinkron, tapi saya perlu sinkron hingga 6Mbps (dan saya harus menggunakan mode SPI karena input harus diperlakukan sebagai bitstream mentah sehingga tidak ada bit stop / etc.), yang juga melibatkan memodifikasi konfigurasi kontroler PIO default.
JAB
48

Secara teori ...
Sebenarnya tidak ada bahasa Arduino. Ini benar-benar hanya C ++ dengan beberapa perpustakaan khusus domain. Ini menambah berbagai fitur, seperti fungsi yang dapat Anda panggil untuk mengontrol perangkat keras. Jika Anda tidak memiliki fungsi-fungsi itu, Anda perlu mengutak-atik register khusus untuk mengendalikan semuanya. Begitulah cara pemrograman tertanam biasanya dilakukan. Ini cepat, tetapi bisa sangat sulit untuk dipelajari dan dipahami.

Selain fungsi, perpustakaan menambahkan nama alternatif untuk beberapa jenis. Misalnya, booleandan bytetidak dalam standar C ++. Namun, mereka secara langsung setara dengan booldan unsigned char.

Semua hal ini berarti Anda mungkin dapat mem-porting kode C ++ umum langsung ke Arduino tanpa kesulitan. Namun, kembali dengan cara lain mungkin memerlukan beberapa pengeditan kecil.

Dalam prakteknya ...
Setelah mengatakan semua itu, pemrograman untuk Arduino tidak persis sama dengan pemrograman C ++ umum. Banyak perbedaan yang umum terjadi pada semua pemrograman tertanam (seperti memori terbatas dan daya pemrosesan).

Perlu juga dicatat bahwa jika Anda menggunakan IDE Arduino resmi maka ada segala macam kebiasaan dan batasan yang mengganggu tentang cara Anda mengatur kode Anda. Ada beberapa solusi dalam semua kasus (sejauh yang saya ketahui), tetapi terkadang cukup membuat frustrasi.

Untuk fleksibilitas penuh, gunakan IDE pihak ketiga (seperti Eclipse) dengan plug-in untuk mendukung Arduino. Itu akan memberi Anda semua keuntungan dari C ++, bersama dengan perpustakaan Arduino.

Peter Bloomfield
sumber
25

Apa kelebihan C ++ vs bahasa Arduino saat menggunakan Arduino? Saya berpengalaman dalam bahasa yang telah diproses seperti JavaScript, PHP, dan telah mengutak-atik bahasa seperti Java dan Visual Basic.

Pertama, kompiler Arduino / IDE menerima C dan C ++ apa adanya. Sebenarnya banyak perpustakaan ditulis dalam C ++. Banyak dari sistem yang mendasarinya tidak berorientasi objek, tetapi bisa saja.

Dengan demikian, "Bahasa Arduino" adalah C ++ atau C.

C ++ bukan sampah yang dikumpulkan. Itu mengelola variabel dalam lingkup - jika Anda menulis:

int led = 13;

void blinkTimes(int value)
{
   int i;

   for(i=0;i<value;i++)
   {
      digitalWrite(led, HIGH);
      delay(1000);
      digitalWrite(led, LOW);
      delay(1000);
   }
}

Maka Anda akan menemukan itu leddan itidak tumbuh atau bocor, tidak peduli berapa kali Anda menelepon blinkTimes.

Jika isuatu kelas, itu juga akan dibuang begitu fungsi berakhir. Jadi selama Anda tidak menggunakan newatau fungsi alokasi memori serupa untuk membuat objek baru, maka Anda tidak perlu khawatir tentang kebocoran.

Anda mungkin masih kehabisan memori, jika Anda membuat kelas besar dan menggunakan banyak dari mereka dalam fungsi yang sangat bersarang, tetapi secara umum Anda tidak akan mengalami masalah sampai Anda mulai berurusan dengan newdan freefungsinya.

Jika Anda menggunakan new, maka Anda harus menelepon deletepada waktu yang tepat. C ++, dan dengan ekstensi Arduino, tidak memiliki pengumpulan sampah otomatis, Anda harus mengelola memori Anda sendiri secara eksplisit.

Adam Davis
sumber
1
Oke, jika objek instantiated (dengan yang baru) bukan sampah yang dikumpulkan, saya harus mempelajarinya juga. Saya kira setiap buku tentang C ++ akan membahasnya. Terima kasih atas jawaban yang bagus!
Teman Kim
14

Bahasa Arduino adalah C ++, tetapi sangat berbeda dari kebanyakan varietas C ++. Bahasa Arduino memiliki banyak abstraksi bawaan, terutama di antarmuka perangkat keras, yang membuatnya sangat mudah digunakan. Jika Anda memiliki latar belakang di Java, C dan C ++ harus sangat mirip.

Perbedaan utama antara Arduino dan C ++ ada di penyimpanan memori. Biasanya komputer modern memiliki lebih dari 2GB RAM, sedangkan Arduino Uno memiliki 2kB (1 juta kali lebih sedikit). Arduino juga menggunakan instruksi 8-bit sebagai pengganti instruksi 32 bit yang digunakan komputer. Ini terutama akan mempengaruhi jumlah informasi yang dapat Anda simpan dalam variabel.

Jika Anda sangat baru di dunia Arduino, Anda harus mencari tutorial, karena ada banyak yang bagus di luar sana.

Dokter
sumber
Anda menyebutkan memori. Saya memiliki Due yang telah mendapat 96KB RAM. Tetapi hal terakhir yang saya inginkan adalah agar copter crash karena kebocoran memori (memiliki kamera yang sangat mahal dipasang pada copter).
Teman Kim
Apakah memori dalam C ++ ditangani secara otomatis (seperti pengumpul sampah di Jawa) jika tidak ditentukan sebaliknya?
Teman Kim
2
Standar C ++ tidak menjamin ukuran memori - c ++ sudah berjalan pada perangkat keras yang tertanam tanpa modifikasi.
Michael Thorpe
2
Anda menjelaskan perbedaan antara platform perangkat keras, bukan C ++ di sana.
Cybergibbons
5
@FriendofKim Di C ++, ada dua cara yang berbeda untuk instantiating variabel / objek. Jika Anda instantiate secara lokal (mis. int blah = 5;) Maka mereka akan dihancurkan secara otomatis ketika mereka keluar dari ruang lingkup (yaitu pada akhir loop atau fungsi). Namun, jika Anda instantiate pada heap (mis int *blah = new int(5);) maka Anda harus melepaskannya sendiri. Biasanya tidak bijaksana untuk menggunakan data tumpukan dalam pemrograman tertanam.
Peter Bloomfield
14

--- Perbarui 170412
Saya menulis jawaban asli saya tiga tahun lalu dari perspektif ada yang berbeda "Arduino C ++". Bahasa yang digunakan dalam IDE adalah standar C ++, karena diimplementasikan oleh kompiler GNU C ++. "Tampaknya" perbedaan merayap masuk karena IDE akan melakukan beberapa pra-pemrosesan untuk membantu pendatang baru ke bahasa menghindari beberapa 'gotcha's, dengan mengisi beberapa #includes, f / ex. Tapi Anda bisa - dan saya lakukan - menulis C ++ yang benar untuk itu dan mendapatkan apa yang Anda harapkan.
--- akhiri pembaruan

Batasi penggunaan fitur bahasa C ++ untuk mereka yang implementasinya Anda pahami sepenuhnya. Ada beberapa fitur yang mengkompilasi ke kode sumber daya lebih intensif daripada yang jelas dari membaca kode sumber. Daftar .ls (gabungan sumber dan rakitan) yang dihasilkan opsional dapat memberi Anda wawasan yang baik tentang apa yang dilakukan oleh kompiler C ++ ketika Anda tidak melihat.

Untuk pertanyaan Anda tentang memori: C ++ tidak mengumpulkan sampah. Bahasa berbasis stack seperti C dan C ++ mengalokasikan penyimpanan sementara pada stack untuk variabel otomatis pada entri fungsi, yang kemudian dirilis ketika fungsi kembali, tetapi ini bukan pengumpulan sampah yang sebenarnya. Objek yang dibuat di heap- atau memori global hidup sampai Anda menghapusnya secara eksplisit. Pastikan Anda tahu di mana, kapan, dan berapa lama berbagai jenis objek akan dibuat. Anda benar-benar tidak ingin objek code new-ing dan delete-ing Anda mau tak mau. Mereka akan dibangun di memori tumpukan, memecahnya dan menyebabkannya tumbuh ke dalam tumpukan. Saat itulah kode Anda - dan copter Anda yang bagus - akan macet.

C lebih sedikit untuk Anda sehingga lebih sedikit untuk Anda. Itu bukan pilihan yang buruk. C dengan beberapa fitur C ++ bisa menjadi pilihan yang lebih baik, mengingat Anda memilih fitur tambahan dengan bijaksana.C ++, jika itu adalah dua pilihan Anda:

[Jawaban asli] - C ++ adalah bahasa terstandarisasi. Ini banyak digunakan di banyak lingkungan termasuk sistem tertanam dan oleh karena itu lebih teruji daripada bahasa yang sangat mirip C ++ yaitu "Arduino". Ini sangat penting untuk aplikasi mission-critical / safety-critical seperti yang Anda rencanakan. Kode rusak berarti copter yang mogok dan bahkan jika itu tidak melukai seseorang, itu akan merusak mesin mahal Anda.

  • Menjadi standar, C ++ portabel. Perlu meningkatkan prosesor Anda? Semuanya kecuali kode khusus silikon akan port ke yang baru. Perlu mengubah perangkat Anda, sistem pengembangan, host OS? C ++ akan didukung di mana saja. Meskipun Arduino IDE akan berjalan di mana saja Java didukung, itu adalah satu-satunya alat yang menggunakan Arduino C ++ dan itu adalah alat yang sangat terbatas. Jika Anda ingin menggunakan Eclipse, alat AVR, bertelanjang kaki di command-line, kembangkan di Emacs, atau lingkungan apa pun yang Anda suka, standar C ++ akan didukung.

  • Arduino IDE melakukan hal-hal di belakang Anda - khususnya, itu termasuk file .h ketika dianggap Anda membutuhkannya. Bahkan jika itu benar, Anda benar-benar ingin menulis, atau setidaknya melihat dan memahami, semua yang akan dilihat oleh kompiler. Bahasa pemrograman tidak dibuat untuk komputer (komputer memakan bit untuk sarapan); mereka dibuat untuk orang-orang, khususnya orang-orang yang mengikuti Anda dalam proyek, yang paling penting di antaranya adalah ... Anda !, ketika 6 bulan setelah Anda menulis modul, Anda harus kembali untuk meningkatkannya, atau lebih kemungkinan, perbaiki. Anda benar-benar ingin dapat melihat semua yang dilihat kompilator.

JRobert
sumber
2
Ini jawaban yang BENAR-BENAR bagus. Tampak jelas bahwa Anda menyukai C ++ dan saya juga harus menyukainya! ... Tapi serius, saya akan melompat langsung ke C ++ segera setelah saya mengerti bagaimana "komunikasi" dengan berbagai sensor dll bekerja.
Teman Kim
Apakah Anda tahu ada buku bagus tentang masalah ini? (Cocok untuk saya yang telah memprogram selama bertahun-tahun dalam bahasa lain, dan hanya membutuhkan "bagian yang disematkan" dari C ++.)
Teman Kim
Apakah Anda pikir Accelerated C ++ adalah buku yang bagus untuk ini?
Teman Kim
2
Saya berharap saya bisa membantu Anda dengan buku yang 'benar', tapi saya datang ke C ++ dengan banyak C di belakang saya dan Kernighan & Ritchie The C Programming Language masih menjadi buku pilihan saya (kata-kata buruk) untuk apa pun yang tidak secara eksplisit C ++ , dan Referensi Referensi C ++ Beranotasi Ellis & Stroustrup untuk C ++. Tetapi untuk menulis ke perangkat keras, Anda sebaiknya melihat beberapa pustaka perangkat yang dikontribusikan oleh pengguna di Arduino.cc . Mulailah mengutak-atik port I / O dengan fungsi pinMode (), digitalWrite () dan digitalRead (), kemudian rekan-rekan i / o analognya, dan akhirnya, ...
JRobert
1
... rencanakan untuk menulis langsung ke register I / O untuk peningkatan kecepatan dan ruang memori. Program seperti blinky.cpp dan hello.cpp adalah tempat yang bagus untuk mulai mengotak-atik perangkat keras. Tambahkan multimeter sederhana, dan beberapa LED dengan resistor pembatas arus yang tepat disolder secara permanen ke satu kaki dan Anda harus dapat melihat hasil nyata, jika sederhana, dari upaya Anda. Setelah itu, baca lembar data untuk perangkat keras apa pun yang menarik minat Anda untuk mempelajari sinyal apa yang dapat Anda baca / harus tulis kepada mereka untuk membuatnya diputar. Sensor suhu mudah digunakan dan tidak semua orang membutuhkan kulkas logger? Selamat bersenang-senang!
JRobert
10

Dalam pengalaman saya, yang terbaik adalah menghindari yang baru dan menghapus ketika menjalankan pada mesin dengan memori terbatas.

  • Manajemen memori itu sendiri menggunakan ruang program dan RAM yang berharga
  • Vektor ISR diatur pada compile tme. Sulit (mustahil?) Untuk instance kelas untuk mengklaim ISR pada saat run time
  • Secara umum Anda akan tahu pada waktu kompilasi instance kelas apa yang Anda butuhkan - mis. 3 tombol debouncer, driver display dan driver display 2-line
  • Manajemen memori menyebabkan penundaan yang tidak diketahui saat Anda menggunakan baru atau menghapus.

Mungkin ada kasus di mana dibenarkan untuk menggunakan konstruksi dan penghancuran instance yang dinamis, tapi saya curiga mereka jarang.

kiwiron
sumber
Menjadi sepenuhnya baru untuk C ++, saya punya pertanyaan lanjutan tentang STD. Apakah idenya buruk bila digunakan? Jika tidak, bagaimana bisa ditambahkan (Eclipse)? Saya telah menyiapkan kompiler AVR dan berfungsi dengan baik.
Teman Kim
1
Semua yang Anda katakan benar tetapi saya tidak melihat bagaimana ini merupakan jawaban untuk pertanyaan OP. newdan deletetersedia di Arduino IDE juga.
jfpoilpret
Ini bukan jawaban, tetapi informasi yang sangat membantu yang sangat saya hargai.
Teman Kim
8

Seperti disebutkan dalam beberapa jawaban, jika Anda memprogram sistem tertanam secara umum Anda harus menghindari yang baru kecuali jika Anda mengelola tumpukan memori Anda sendiri dan Anda benar-benar tahu apa siklus hidup objek Anda nantinya. Alokasi statis atau variabel stack jauh lebih aman. Yang mengatakan, salah satu trik umum untuk mengelola hal-hal seperti buffer panjang variabel yang dialokasikan untuk durasi fungsi adalah memiliki variabel otomatis (di stack) yang merupakan objek yang memanggil baru dalam konstruktornya, dan kemudian meletakkan delete di destructor jadi ketika objek keluar dari ruang lingkup buffer dilepaskan kembali ke heap. Sekali lagi, ini biasanya penggunaan terbatas dalam sedikit micros tetapi itu adalah pola yang bagus untuk diingat.

bd2357
sumber
6

Selain komentar di atas, saya ingin lebih menekankan masalah dengan RAM yang Anda miliki di papan Arduino, terutama dengan Uno (dan yang lain yang memiliki mikrokontroler yang sama). Baru-baru ini saya menulis game Space Invaders sederhana yang dijalankan pada matriks LED 32x32 dan berulang kali mengalami masalah yang disebabkan oleh memori yang rendah.

Uno hanya memiliki 2048 byte RAM. Perpustakaan untuk matriks saya mengambil alih 3/4 dari itu sehingga saya memiliki sekitar 400 byte untuk permainan. Karena itu adalah niat saya untuk "meningkatkan" proyek di beberapa titik untuk menjalankan beberapa game dengan program yang sama berdasarkan yang lebih kuat Karena, saya merancang kode dengan kepala sekolah OO dan banyak warisan kelas. (Kelas game diwarisi dengan pembaruan virtual dan menarik panggilan, entitas game semuanya diwarisi).

Saya cukup banyak kehabisan memori hanya dengan menambahkan penyerbu. Saya mencoba untuk menghemat memori dengan sedikit memasukkan variabel anggota mereka tetapi kehabisan lagi ketika menambahkan objek perisai. Setelah sedikit lebih banyak goresan saya kehabisan menambahkan bom / peluru. Pada titik ini saya menjelajahi kode dan menghapus semua tag "virtual" (semua prototipe kelas saya dibangun dari potongan Visual Assist dan destruktor semuanya virtual secara otomatis). Ini mengurangi separuh penggunaan memori saya secara instan, cukup membebaskan untuk dapat menyelesaikan kode.

Singkatnya, hasil akhirnya adalah kode C ++ yang tidak benar-benar menggunakan fitur C ++. Anda mungkin juga hanya berpegang teguh pada C dan sangat menyadari penggunaan memori Anda. Anda tidak mendapatkan bantuan jika Anda melebihi 2KB - terutama jika Anda menggunakan alokasi dinamis apa pun, kode hanya berhenti bekerja dan Anda dibiarkan menggaruk-garuk kepala Anda sebentar sampai Anda mempertimbangkan kemungkinan overflow memori.

Variabel PS - Bit fielding buruk. Sangat buruk. Selain menambahkan pemrosesan overhead, saya kehilangan jejak berapa kali saya akan menambahkan negara baru ke permainan tetapi kode tidak berjalan dan saya tidak mengerti mengapa. Variabel status saya tidak cukup lebar untuk menampung nilai status baru sehingga saya mendapatkan kondisi tak terduga.

Mick Waites
sumber
4

Bahasa Arduino adalah C ++ (meskipun biasanya diimplementasikan dalam gaya yang lebih mirip "C dengan kelas," yang sebenarnya cukup umum di dunia sistem embedded mikrokontroler). Akhir dari cerita. Cukup dengan orang-orang berpikir itu bahasa yang berbeda! Menggunakan kompiler g ++.

Bukti:

Aktifkan keluaran verbose selama kompilasi dalam Preferensi dan unggah dan Anda akan belajar banyak hanya dengan membaca baris-baris itu.

Inilah beberapa wawasan tambahan:

Kata-kata saya sendiri:

Kode Arduino adalah C ++. Fungsi inti Arduino hanyalah sekumpulan kelas C ++ dan pustaka yang dapat Anda gunakan. Itu dibangun dan dikompilasi menggunakan kompiler GNU gcc / g ++ . Fungsi setup () dan loop () Anda cukup ditempatkan pada fungsi wajib () utama ( di sini sebenarnya - perhatikan file adalah "main.cpp", yang merupakan file sumber C ++) secara otomatis untuk Anda dan ada beberapa tambahan preprocessing dilakukan untuk memastikan itu adalah program C ++ yang valid (mis: pemindaian untuk semua prototipe fungsi [alias: deklarasi] untuk Anda sehingga Anda dapat menggunakan fungsi meskipun prototipenya nanti ada di file .ino Anda). Namun, banyak dari Arduino ditulis dalam "gaya C", dan karenanya membutuhkan # extern "C" {}kawat di sekitarnya untuk mencegah C ++ dari"name-mangling" (juga dikenal sebagai "name decorating / name decoration" ) memanggil fungsi C yang diimplementasikan oleh AVR-libc , yang merupakan implementasi C untuk ATmega328 dan mikrokontroler arsitektur AVR-arsitektur lainnya .

Kata-kata Arduino:

" Bisakah saya memprogram papan Arduino di C?
Bahkan, Anda sudah; Bahasa Arduino hanyalah seperangkat fungsi C / C ++ yang dapat dipanggil dari kode Anda. Sketsa Anda mengalami perubahan kecil (misalnya pembuatan prototipe fungsi otomatis) dan kemudian diteruskan langsung ke kompiler C / C ++ (avr-g ++). Semua konstruksi standar C dan C ++ yang didukung oleh avr-g ++ harus bekerja di Arduino. Untuk lebih jelasnya, lihat halaman pada proses pembuatan Arduino . "

Sumber: https://www.arduino.cc/en/Main/FAQ#toc13

Kapan menggunakan perpustakaan Arduino vs pure C atau C ++?

Jadi, gunakan bahasa Arduino yang menyederhanakan berbagai hal, dan tuliskan fungsi Anda sendiri di mana Anda membutuhkan lebih banyak spesialisasi. Saya merekomendasikan menjauh dari IDE dengan cepat meskipun untuk menulis kode - cukup gunakan untuk kompilasi. Tetapkan preferensi IDE untuk menggunakan "Editor Eksternal." Kemudian gunakan editor kode sumber profesional / IDE seperti Sublime Text 3 , Atom , Visual Studio Code , atau Eclipse CDT untuk menulis kode Anda. Anda kemudian dapat mengklik kembali ke Arduino IDE untuk menyusun dan mengunggah. Jika Anda menggunakan Eclipse, ada cara untuk melakukannya di Eclipse (lihat jawaban lain di sini, dan lihat artikel Eclipse playground Arduino di sini juga) jadi pertimbangkan untuk menggunakan teknik-teknik itu juga.

Gabriel Staples
sumber