Arduino'yu C / C ++ yerine Python kullanarak programlama


36

C Dili konusunda çok yetenekli değilim ve bir Python'un bir Arduino programlamak için kullanabileceği bir yol olup olmadığını merak ediyordum. Bu, büyük olasılıkla, kendi komut dosyalarının hatalarını ayıklayabilmek için farklı bir IDE gerektirir.


2
Arduino'nun programlanması için çift alternatifler var, bunlardan biri BitLash ve temel bir tercüman var . İnternette arama yaparken çift seçenek vardır, ancak C / C ++ öğrenmek sonunda sonuç verir.
jippie

Teşekkürler, aslında C’de biraz daha iyiyim, Python’da olduğum kadar iyi değil.
JVarhol


Ahududu PI bir seçenek midir?
Paul

Yanıtlar:


26

Herhangi bir Python senaryosunun doğrudan Arduino'da çalışmasını sağlamak çok zor olacak. Bunun nedeni, tercüme edilmiş bir dil olmasıdır, bu nedenle düz metin komut dosyasına ek olarak yerleşik tercümana ihtiyacınız olacaktır. Muhtemelen bunların hepsi için yeterli hafıza olmayacak.

En iyi seçeneğiniz muhtemelen Python betiğini yerel makine koduna (C / C ++ nasıl çalıştığı) derlemek için bir yol bulmak olabilir. Diğer platformlar için böyle bir şey yapacak projeler olduğuna inanıyorum, ancak (bildiğim kadarıyla) henüz Arduino için başarılı bir şekilde yapmadı.

Bu soru hakkında Stack Overflow'ta daha yararlı bilgiler bulabilirsiniz: Python kodunu Arduino (Uno) üzerine "derlemek" için bir yol var mı ?


15

Evet, Arduino'yu Python kullanarak programlamak mümkün. Github'daki böyle bir proje Python Arduino Prototipleme API v2'dir . Dijital giriş / çıkış ve analog giriş / çıkış gibi çok temel işlevleri sağlar.

Bu çok basit projeler için kullanılabilir.


* Bu proje, seri bağlantıyı kullanarak tahtayı "programlamada" bir parça kesmek. Komutları seri bağlantı üzerinden, tahta üzerinde çalışan ve daha sonra Python komutunu "yürüten" bir taslaktan geçirir.


Yani anakart kodunu çalıştırmak için bir bilgisayara takılı olmalı?
JVarhol

@JVarhol Garip bir şekilde evet.
asheeshr

1
Bu çok berbat. Ahududu Pi kullanmak daha kolay olurdu.
JVarhol

8

Bir Python sanal makinesini Arduino Mega da dahil olmak üzere mikro denetleyicilere getiren bir proje var .

İşte Ardunio Mega bir alıntı README böyle ne olabilir için bir fikir verir, (gerçi ben bu test ettik!):

Aşağıdaki ipm :: kullanarak örnek bir oturumdur

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)

3

Arduino'daki pinleri kontrol etmede büyük başarı ile pyserial kullandım. İş istasyonunuz (dizüstü bilgisayar vb.), Daha sonra gerçek zamanlı olarak arduino ile iletişim kuran bir python betiği çalıştırır.

Bu senaryoyu doğrudan arduino üzerinde çalıştırmakla aynı şey değil, fakat arduino'nun başa çıkabileceğini düşündüğümden biraz daha fazlasını yapıyordum (bazı müzik analizleri, bir REST api, vb.).


3

Dikkate alınması gereken bir başka seçenek de Arduino Yun . Çoğu Arduinos'un sahip olduğu AVR yongasına ek olarak, Linux çalıştıran bir MIPS yongasını da içeriyor. Linux olduğundan, kolayca python kodunu çalıştırabilir ve herhangi bir saf python paketi kolayca kurulabilir.

Bununla birlikte, bütün ilginç giriş / çıkış yetenekleri MIPS yongasında değil AVR yongasındadır. Autobahn ve LininoIO gibi projeler , MIPS çipinin talimatı altında G / Ç işlemleri gerçekleştiren AVR yongasında özel bir program çalıştırarak bu sorunu çözer.


0

Bunun Arduino programlamada ve genel olarak gömülü dünyada açık bir sorun olduğunu biliyoruz. Piyasada MicroPython gibi çeşitli çözümler bulunmaktadır, ancak çoğu belirli kartlara adanmıştır ve sistemi gerçek zamanlı tutmaya izin vermemektedir. Bir çözüm üzerinde çalışıyoruz! VIPER, Arduino DUE için bir Python Sanal Makinesi ve gerçek zamanlı bir işletim sisteminin üzerinde çalışan tüm ARM 32 bit mimarileridir. Bu, Arduino DUE, UDOO, Spark (tüm panolar) ve ayrıca yeni ST nucleo panolarında gösterilebilecek Python komut dosyalarını geliştirebileceğiniz anlamına gelir. Dahası, yüksek performansa ihtiyacınız varsa ve C konusunda uzmansanız, VIPER için Python scriptleri tarafından çağrılabilen ve yönetilebilen gerçek zamanlı modüller geliştirebilirsiniz.

VIPER'i burada çalışırken görebilirsiniz: http://bit.ly/kickviper


Bu açık bir sorun değil. python, korkunç bir girinti dilidir.
user2497

-1

Evet. Python bir Arduino'yu programlamak için kullanılabilir, sadece arduinoyu Python ile arayüzlendirebilecek pyfirmata'yı içe aktararak.


Doğru. Ancak OP'nin istediği şey bu değil.
sempaiscuba

-8

Korkarım Arduino IDE, C / C ++ dilini kullanmıyor. Processing IDE'den türetilmiştir ve oldukça basitleştirilmiş C / Java benzeri bir sözdizimine sahiptir.


8
Arduino IDE, C ++ 'dır: en az ön işleme ("#include <Arduino.h>" ve tanımladığınız işlev için bildirimler yapar) yapar, ardından normal bir C ++ derleyicisi (GNU g ++) çağırır.
Edgar Bonet,

İşlemden türetilen programlama dili yerine IDE'nin kendisidir.
Peter Bloomfield

Neredeyse hiç kimse IDE'yi Arduino'ya uygulamayı umursamıyor. Mesele şu ki, Arduino'da verimli bir şekilde çalışan Python yazabilmek.
Ocak'ta
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.