Opsi pemrograman selain C ++


14

Bisakah saya memprogram Arduino saya menggunakan bahasa pemrograman selain C ++? Jika demikian, bahasa pemrograman mana? Perangkat lunak apa yang saya perlukan untuk mengkompilasi dan memuat kode saya ke Arduino?



Sayangnya, ini adalah duplikat efektif dari pertanyaan non-Arduino.SE: lihat di sini saya pikir pertanyaan yang saya tautkan harus dipindahkan ke sini setelah beta berakhir, tetapi belum saat ini.
apnorton

@ anorton Pertanyaan itu menanyakan tentang IDE alternatif. Pertanyaan ini bukan duplikat karena berbicara tentang bahasa pemrograman alternatif.
tstew

@ user2202326 Maaf ... Saya sepertinya mengingat lebih banyak orang merespons dengan bahasa yang berbeda dari IDE pada utas itu, tetapi, ternyata, saya salah. Lanjutkan.
apnorton

Anda bisa melihat Netduino jika Anda terbiasa dengan C # (Visual Studio adalah cara untuk pergi, tetapi ada cara lain untuk mengkompilasi kode C #). Saya tidak tahu papan apa yang Anda miliki dan apakah itu kompatibel. netduino.com
Jason Down

Jawaban:


5

Beberapa yang umum dikenal:

Secara teori Anda harus dapat memperluas avr-gcc untuk mendukung bahasa lain, meskipun ini bukan usaha kecil. Saya juga harus memperingatkan bahwa dukungan untuk bahasa selain C biasanya datang dengan beberapa pembatasan yang cukup berat pada komponen bahasa - misalnya, bahkan dengan C ++ itu tidak disarankan untuk menjadi instantiasi objek baru karena mallocdan freesangat mahal dalam ruang memori dan siklus.

Selain menggunakan Google, referensi berikut berlaku Klik Di Sini.


8

Secara teori, setiap kompiler yang mengeluarkan perakitan AVR dapat digunakan (batasan modulo pada ukuran kode, penggunaan ram dll).

Backend AVR ada untuk LLVM dan GCC - jadi dalam teori, dengan beberapa upaya, sebagian besar bahasa yang didukung oleh LLVM dan front-end GCC dapat dikompilasi ke AVR. Pertanyaan besar adalah dukungan perpustakaan, dll.

Namun demikian, berikut adalah beberapa pilihan aneh untuk semangat pertanyaan, daripada suratnya [1].

  • AMForth , dialek maju dapat ditampilkan ke Arduino.
  • AVR-Ada : Ada untuk pengontrol mikro AVR.
  • BASIC : Kembalikan Goto!

Oh, dan Anda bisa menulis Majelis AVR mentah !

[1] - Namun saya belum mencobanya!


2

Ada juga beberapa orang yang bekerja pada sistem berbasis Javascript node.js. Salah satu yang sudah tersedia untuk umum adalah Espruino dan lainnya adalah Tessel yang diluncurkan pada musim semi 2014.


1

Karena avr-g ++ harus mendukung semua konstruksi C / C ++ standar, dimungkinkan untuk membuat kode inline assembly. Info lebih lanjut tentang utas forum arduino.cc ini


Perakitan inline bukan bagian dari standar C / C ++, tetapi gcc dan kompiler microsoft c mendukungnya, meskipun tidak kompatibel.
tbodt

benar, dan begitu juga avr_gcc.
Faux_Clef

Tidak ada yang mengalahkan menulis kode yang dapat dieksekusi dalam hex.
Faux_Clef

1

Saya terkejut bahwa tidak ada yang menyebutkan AVR Assembly !

Assembly tidak sering dianggap sebagai metode pemrograman yang paling menarik, atau bahkan mudah, tetapi tetap saja, 100% dimungkinkan dengan semua arduino berbasis AVR. Papan SAM kemungkinan tidak akan bekerja dengan citarasa ini, tetapi masih mungkin untuk menggunakan rakitan dalam pemrograman mereka.

Semua papan Arduino (per posting) mendukung pemrograman perakitan melalui Atmel Studio , SDK dibuat untuk chip berbasis Atmel.

Assembly didukung secara penuh oleh semua perangkat Atmel, dan tidak memerlukan boot loader untuk bekerja, sehingga semua program secara inheren real-time.


2
Perhatikan bahwa rakitan juga didukung oleh gchain toolchain, yang termasuk dalam instalasi Arduino IDE.
Edgar Bonet

@ EdgarBonet Benar, itulah sebabnya __asm__("Assembly code here")bekerja untuk menambahkan perakitan in-line ke sketsa apa pun. Namun untuk sebagian besar program, ini adalah ide yang buruk, karena sulit untuk mencapai independensi platform dengan metode ini.
tuskiomi
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.