Arduino IDE dışında C Programı yazmak?


12

Arduino IDE'yi basit projeler için ve Arduino'ya başlamak için kullanma fikrini seviyorum, ancak şimdiye kadar aldığım fikir birliği , Arduino'da yeni olan ve / veya genel olarak programlama olanlar için.

Benim anlayış tamamen dışında Arduino IDE, sıfırdan bir C programı yazmak ve sonra bir Arduino MCU yüklemek için AVRDUDE gibi bir araç kullanmak mümkün olmasıdır. Bu seçenek, çekici ve ilginç olsa da, beni birkaç endişeyle bırakıyor:

  • Hangi Arduino kütüphanelerinin böyle bir "ham C" programı tarafından içe aktarılması / bağlanması gerekir? Arduino IDE tabanlı bir program yürütüldüğünde digitalWrite(...), gerçekten de Arduino tarafından sağlanan bir C lib'i başlık altında çağırdığını varsayıyorum . Tüm bu "altta yatan lbs" benim C programına dahil emin olmaktan endişe ediyorum. Düşünceler?
  • Yalnız uçarak ve Arduino IDE'nin dışına çıkarak başka bir şey "kaybedildi" mi? Şimdi "benim kendi rulo" olurdu herhangi bir yetenek / özellik?

Sorumun yanıtları, bu soruları yanıtlamamda bana yardımcı oldu. Arduino'dan herhangi bir şeyi değiştirebilir / bırakabilirsiniz. Şunları yapabilirsiniz: -Kendi tahtanızı yapın. -Kendi IDE'nizi kullanın. -Kendi kütüphanelerini kullan.
Paul

Yanıtlar:


4

İşte Arduino'nun aslında arka planda nasıl çalıştığı iki güzel makale. Mikrodenetleyici programlamasından sürtünmeyi nasıl giderir.

  1. Arduino Internals Turu: Hello World aslında nasıl çalışıyor?
  2. Arduino ve GCC, sadece makefiles kullanarak programları derlemek ve yüklemek

Burada da tartışıldı Arduino kodunu C koduna dönüştürmenin bir yolu veya öğreticisi var mı?


Teşekkürler @Michal Foksa (+1) - Sanırım bunun cevabının çok daha iyi bilinmediği için şok oldum! Ben Arduino IDE, diyelim ki, bir olduğunu sanırdım lib/gibi şeyler vardı onun kurulum kök altında dizin bir yere arduino-core.dll, arduino-io.dllvb
smeeb

@smeeb: Doğru, Arduino IDE yüklemesi temel çalışma zamanı işlevlerinin artı kullanıcı tarafından sağlananların kitaplıklarını içermelidir - içermelidir. Bağlantı 2 sayfasının yarısında, marka dosyasında LIBS sembolü onlara işaret eder. Bunlar .dlls değildir (Windows'ta çalışma zamanında çağrılır); bunlar, derlenmiş nesne dosyalarınızla (sonuçta) tam yükleyici görüntüsü olan bir .hex yükleme dosyasına statik olarak bağlanan nesne dosyalarıdır (unix benzeri sistemler altında .o, muhtemelen Windows altında aynıdır). ...
JRobert

... Yaşamak için programlar yazan insanlar tarafından iyi bilinir, ancak Arduino (marka) aracı tasarımcıları, dijital elektroniği profesyonel seviyeye gelmeden uygulamak için mümkün olduğunca çok sayıda dağınık ayrıntıyı kasıtlı olarak gizledi. programcılar ve mühendisler bunu yapmak için. Bu bilgileri Arduino topluluğunda bulmakta zorlandığınız ölçüde, başarılı oldular!
JRobert

Ne yazık ki, eski nedenlerle, Arduino yazılımını standart kabul edilen yoldan oldukça farklı bir şekilde oluşturuyorsunuz. Bunu kolaylaştırmak için 'sürtünmeyi ortadan kaldırırken' büyük, uyumsuz bir topluluk yarattılar. Her IDE 'eklentisi' standart olmayan bir şeyi standart bir şekilde çalışmaya yönelik bir girişimdir. Sorunlarla karşılaştığınızda bunu aklınızda bulundurun.

5

Diğer kütüphanelere bağlanmak konusunda kesinlikle haklısınız. Ancak, alışılmadık bir şey yapmak istemiyorsanız / yapmanız gerekmiyorsa, tüm ayrıntılar hakkında endişelenmeniz gerekmez. Birkaç alternatif IDE zaten tipik olarak birçok ayrıntıyı otomatik olarak işleyen eklentiler aracılığıyla Arduino'yu desteklemektedir.

Normalde Eclipse'yi tavsiye ederim, çünkü çeşitli amaçlar için çok yaygın olarak kullanılan bir IDE'dir. Ancak, başka olasılıklar da vardır. Daha fazla bilgi için bu soruya bakın:


Teşekkürler @Peter R. Bloomfield (+1) - ancak gerçekten IDE olmayan merkezli bir cevap arıyorum. IDE'lere karşı bir şeyim yok, sadece Arduino'nun "kütüphane manzarasını" anlamak için IDE'lerin sadece gereksiz bir orta adam olduğunu hissediyorum. Bunu söyledikten sonra, TÜM Arduino uygulamalarının bağlanması gereken 1+ "çekirdek kütüphanesi" olduğunu ve uygulamanızın gerçekte ne yaptığına bağlı olarak ihtiyaç duyabileceğiniz veya ihtiyaç duymayabileceğiniz isteğe bağlı kütüphaneler olduğunu varsayalım. Beni bu "çekirdek kütüphanelerin" yanı sıra isteğe bağlı olanların listesine de işaret edebilir misiniz? Tekrar teşekkürler!
smeeb

Ve IDE'lerin "gereksiz aracılar" olmaları hakkında söylediklerimi nitelendirmek için, gerçekten demek istediğim şu: Herhangi bir IDE'nin (Arduino, Eclipse veya başka bir) dışında bir C uygulaması yazabilmeliyim . Uygulamamın ihtiyacı var ve uygulamayı derlemek / Arduino donanımına dağıtmak. Bu kütüphanelerin ne olduğunu ve bunlarla ilgili belgeleri nerede bulabileceğimi merak ediyorum.
smeeb

@smeeb Arduino'nun yeni başlayanlara yönelik olduğu düşünüldüğünde, bu satırlarda çok fazla resmi belge olduğunu düşünmüyorum. Araştırmanın en iyi yolunun Arduino markaları için çevrimiçi arama yapmak olacağını umuyorum. Bu sayfanın alt kısmında bazı eski örnekler var .
Peter Bloomfield

@smeeb: Senin gibi ben de IDE'lerin hayranı değilim. Web üzerinde yüzen birkaç genel Arduino makefiles vardır. Temelde, sonra libore.a içine Arduino temel kütüphanesinin derleme ile .ino dosyasını derlemek zorunda -x c++ -include Arduino.hderleyicinizin (artı bir demet anlamak için -D, -Ivs.) libcore.a ile ve bağlantı.
Edgar Bonet

0

Evet, Arduino IDE dışında bir program yazabilirsiniz. Örneğin, Eclipse IDE'yi AVR eklentisiyle denedim ve şimdi AVR Studio'ya bağlı kaldım. Tabii ki, Arduino IDE ve bazı kütüphanelerde yazarken genellikle kullanabileceğiniz bazı işlevleriniz olmayacaktır. Ama neden bir şeyler uygulamayı denemiyorsunuz? Kendinizi, sahiplerinizi öğrenip yazabildiğiniz zaman, belki de mevcut olanlardan daha iyi olan başkaları tarafından yapılan işlevler ve kütüphanelerle sınırlandırmanız neden.


-3

ESP8266 + Arduino IDE 1.6.4 Taşınabilir - Tam Hızlı Kurulum Kılavuzu www.instructables.com /.../ ESP8266-Arduino-IDE-164-Portable-F ...

ESP8266 uzantısı, çizimler, yüklü kütüphaneler vb. Dahil olmak üzere tüm Arduino IDE v 1.6.4 dosyalarınız yalnızca yeni oluşturulan "arduino-1.6.4" klasörü altında bulunmalıdır.


Bu çok yardımcı bir cevap değil. Bağlantı gerçek bir bağlantı değil. Ve öyle olsa bile, Stack Exchange bağlı site aşağı gidebileceğinden, sadece bağlantı cevaplarında kaşlarını çatar. Lütfen cevabınızı genişletin.
Nick Gammon
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.