Memprogram Arduino menggunakan Python, bukan C / C ++

36

Saya tidak terlalu mahir dengan Bahasa C dan saya bertanya-tanya apakah ada cara di mana python dapat digunakan untuk memprogram Arduino. Ini kemungkinan besar akan membutuhkan IDE yang berbeda untuk dapat men-debug skrip sendiri.

JVarhol
sumber
2
Ada beberapa alternatif untuk pemrograman Arduino, salah satunya adalah BitLash dan ada juru bahasa dasar . Ada beberapa opsi ketika Anda mencari di internet, tetapi mempelajari C / C ++ akan terbayar pada akhirnya.
jippie
Terima kasih, saya sebenarnya mendapatkan sedikit lebih baik di C, hanya saja tidak sebagus saya dengan Python.
JVarhol
2
terkait, pertanyaan yang lebih umum: "Pilihan pemrograman Arduino selain C ++"
David Cary
Apakah PI raspberry merupakan pilihan?
Paul

Jawaban:

26

Akan sangat sulit untuk menjalankan segala jenis skrip Python langsung di Arduino. Alasannya adalah bahwa itu adalah bahasa yang ditafsirkan, jadi Anda akan membutuhkan penerjemah di papan selain skrip teks biasa. Mungkin tidak akan ada cukup memori untuk semua itu.

Taruhan terbaik Anda mungkin akan menemukan cara untuk mengkompilasi skrip Python ke kode mesin asli (yang merupakan cara kerja C / C ++). Saya percaya ada proyek di sekitar untuk melakukan sesuatu seperti itu untuk platform lain, tetapi (sejauh yang saya tahu) tidak ada yang berhasil untuk Arduino.

Anda mungkin menemukan beberapa informasi yang lebih berguna tentang pertanyaan ini di Stack Overflow: Apakah ada cara untuk "mengkompilasi" kode Python ke Arduino (Uno) .

Peter Bloomfield
sumber
15

Ya, sangat mungkin untuk memprogram Arduino menggunakan Python. Salah satu proyek semacam itu di Github adalah Python Arduino Prototyping API v2 . Ini memberikan fungsionalitas yang sangat mendasar seperti I / O digital dan I / O analog.

Ini dapat digunakan untuk proyek yang sangat sederhana.


* Proyek ini sedikit meretas di "pemrograman" papan menggunakan koneksi serial. Ini melewati perintah melalui koneksi serial ke sketsa yang berjalan di papan yang kemudian "mengeksekusi" perintah Python.

asheeshr
sumber
Jadi papan harus dicolokkan ke komputer agar benar-benar menjalankan kode?
JVarhol
@Jarhol Anehnya, ya.
asheeshr
1
Yah, itu sangat jelek. Akan lebih mudah menggunakan Raspberry Pi.
JVarhol
8

Ada proyek yang membawa mesin virtual Python ke pengontrol mikro, termasuk Arduino Mega .

Berikut adalah kutipan dari README Ardunio Mega , yang memberikan kesan seperti apa ini (walaupun, saya belum menguji ini!):

Berikut ini adalah contoh sesi menggunakan ipm ::

ipm> import avr, sys
ipm> avr.ddrA(0xff)
ipm> avr.portA(0)       # Pins 22-29 all at 0 V
ipm> avr.portA(0xa5)
ipm> sys.heap()
(2622, 7424)
Matius G.
sumber
3

Saya telah menggunakan pyserial dengan sukses besar dalam mengendalikan pin pada Arduino. Workstation Anda (laptop, dll) menjalankan skrip python yang kemudian berkomunikasi secara real time ke Arduino.

Ini tidak sama dengan menjalankan skrip langsung pada Arduino tapi saya melakukan sedikit lebih dari yang saya pikir Arduino dapat menangani (beberapa analisis musik, memukul api REST, dll).

anggukan
sumber
3

Pilihan lain untuk dipertimbangkan adalah Arduino Yun . Selain chip AVR yang dimiliki kebanyakan Arduino, ia juga termasuk chip MIPS yang menjalankan Linux. Karena ini adalah linux, Anda dapat dengan mudah menjalankan kode python, dan paket pure-python dapat dengan mudah diinstal.

Namun, semua kemampuan input / output yang menarik adalah pada chip AVR, bukan pada chip MIPS. Proyek-proyek seperti Autobahn dan LininoIO memecahkan masalah ini dengan menjalankan program khusus pada chip AVR yang melakukan operasi I / O di bawah instruksi dari chip MIPS.

DaveP
sumber
0

Kami tahu ini adalah masalah terbuka dalam pemrograman Arduino dan di dunia tertanam pada umumnya. Ada berbagai solusi yang tersedia di pasaran seperti MicroPython tetapi sebagian besar dari mereka didedikasikan untuk papan tertentu dan tidak memungkinkan untuk menjaga sistem secara real-time. Kami sedang mengerjakan solusi! VIPER adalah Mesin Virtual Python untuk Arduino DUE dan semua arsitektur ARM 32 bit yang berjalan di atas sistem operasi waktu-nyata. Ini berarti Anda dapat mengembangkan skrip Python yang dapat dieksekusi oleh Arduino DUE, UDOO, Spark (semua papan) dan juga pada papan nukleus ST yang baru. Apalagi jika Anda membutuhkan kinerja tinggi dan Anda terampil dalam C Anda dapat mengembangkan modul real-time untuk VIPER yang dapat dipanggil dan dikelola oleh skrip Python.

Anda dapat melihat VIPER beraksi di sini http://bit.ly/kickviper

Daniele Mazzei
sumber
Ini bukan masalah terbuka. python adalah bahasa indentasi yang mengerikan.
user2497
0

Anda dapat belajar dari C (AVR) bagaimana sensor bekerja tetapi membutuhkan lebih banyak waktu. Arduino IDE Code dan Python Code untuk Arduino menggunakan fungsi C Code untuk mempermudah. Python dan Arduino IDE jika menggunakan Firmata mereka menggunakan komunikasi serial dan Anda pikir Anda membuat kode sendiri.

xrhstos
sumber
-1

Iya nih. Python dapat digunakan untuk memprogram Arduino, cukup dengan mengimpor pyfirmata, yang dapat menghubungkan arduino dengan Python.

saya beruntung
sumber
Benar. Tapi bukan itu yang diminta OP.
sempaiscuba
-8

Saya khawatir Arduino IDE tidak menggunakan bahasa C / C ++. Ini berasal dari Memproses IDE dan memiliki sintaksis yang mirip C / Java.

Andrzej Marczak
sumber
9
Arduino IDE adalah C ++: ia melakukan beberapa preprocessing minimal (prepends “#include <Arduino.h>” dan deklarasi untuk fungsi yang telah Anda tetapkan), kemudian memanggil kompiler C ++ biasa (GNU g ++).
Edgar Bonet
Ini adalah IDE itu sendiri dan bukan bahasa pemrograman yang berasal dari Pemrosesan.
Peter Bloomfield
Sebenarnya tidak ada yang peduli tentang penerapan IDE pada Arduino. Intinya adalah untuk dapat menulis Python yang dieksekusi secara efisien di Arduino.
wallyk