C ++ vs Arduino Dili?


81

Arduino'yu kullanırken her dilin avantajları nelerdir?

Bunun iyi bir genel soru olduğunu düşünüyorum, ama neden birisinin bana bir ipucu vermek isteyip istemediğini sorduğum hakkında biraz ekleyeceğim.

JavaScript, PHP gibi önceden işlenmiş dillerde deneyimim var ve Java ve Visual Basic gibi dillerle tanıştım. Başka bir deyişle, programlama tekniklerini ve hem klasik hem prototip nesne yönelimini biliyorum, fakat doğrudan donanım ile iletişim kurmaktan başka bir şey yok.

Bir octocopter yapıyorum ve nesne yönelimli bir yaklaşımın en kolay olacağını düşünüyorum. (Yazılımın çok fazla özelliği olacak ...) Ancak C ++ ile hiç yazmadım.

Bu, başkalarına yardım etmesi gereken bir soru-cevap sitesi olduğu için, sadece başlangıçta sunulan genel soru çok önemlidir, ancak durumumla ilgili yorumlarınızı takdir ediyorum.


16
IDE adını hak etmediğinden Arduino IDE'den kaçının, hatta çok zayıf bir editör olsa da: yeni başlayanlar ve basit eskizler için iyi olabilir, ancak biri daha hızlı bir şekilde daha iyi bir şeye gitmeli.
jfpoilpret

4
Bu, "Arduino Programlama Dili" ile neyin kastedildiğini (ve aslında neyin altında olduğunu) oldukça özlü bir dökümdür.
AdjProtProfessorFalcon

10
C++ vs. The Arduino Language?- "Arduino Dili" olduğunu C ++. İşlev prototipleri yaparken sizi kurtarmak için bir miktar ön işlem var, ancak kesinlikle C ++.
Nick Gammon

2
Arduino dili diye bir şey yoktur. Bu sadece bir kütüphanedir.
Overdrivr

2
Yorumlarla ilgili soruya o kadar da bağlı değil: Atmel stüdyosu ücretsiz ve IMHO arduino programcılığı için görsel stüdyosundan daha iyi. Ayrıca, Visual Micro eklentisini de destekler, ancak programlama ve hata ayıklama arduinolarında hiç gerekli değildir.
cyberponk

Yanıtlar:


55

Profesör (programlama, mekatronik) olarak benim kişisel deneyimim, eğer önceki programlama deneyimine sahipseniz ve OOP olarak kavramların farkındaysanız, C / C ++ 'a gitmek daha iyi olacaktır. Arduino dili yeni başlayanlar için gerçekten harikadır, ancak bazı sınırlamaları vardır (örneğin, tüm dosyalarınızın aynı klasörde olması gerekir). Ve temelde C / C ++ 'nın basitleştirilmesidir (pratik olarak arduino kodunu C / C ++ dosyasına kopyalayıp yapıştırabilir ve çalışacaktır). Ayrıca, gidip eclipse olarak bilinen bir IDE'yi kullanmanız da anlamlı olabilir:

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

Başlangıçta, dev ortamınızın kurulumu ve yapılandırılması için biraz daha gereklidir, ancak IMHO, diğer dillerdeki deneyime sahip programcılar için buna değer.

Her durumda, arduino donanımını tanımak için arduino dilini ve arduino IDE'yi birkaç gün kullanmaya başlamanız ve daha sonra projenizi gerçekten geliştirmek için Eclipse ile birlikte C / C ++ 'a gitmeniz zarar vermez.


Düşüncelerin için teşekkür ederim. Sensörler ve LCD ekranlar gibi tüm farklı donanım parçalarının nasıl kontrol edileceğini öğrenmek için Arduino IDE'yi kullanacağım. Daha sonra octocopter için yazılımı yapmak üzere C ++ 'a gideceğim. Başka dilleri bilen insanlar için iyi ve kısa bir kitap biliyor musunuz? Bulduğum pek çok kitapla ilgili "sorun", ihtiyacım olan çok fazla şey içeriyor çünkü UI bilgisayarı yerine küçük bir Atmel mikro denetleyicisindeyim.
Kim

1
Yararlı olan Julien Bayle'nin "Arduino için C Programlaması" adlı güzel bir kitabı var. C, C ++ dili değildir ancak temelini anlamanıza yardımcı olmalıdır.
fenix688

Bu iyi bir istek: diğer dillerin programcıları için C ++ ile ilgili kısa ve iyi bir kitap. Üzgünüm, hiçbir öneride bulunamıyorum, hiçbir fikrimin farkında değilim. Aslında, öğrencilerim için pratik odaklı (bir video oyunu geliştirmek) bir kitap yazdım, ancak bu sadece ispanyolca. İyi ve pratik bir C ++ kitabı için Deitel & Deitel'i tavsiye ederim. C ++ nasıl programlanır, birçok gelişmiş bölümü atlayabilirsiniz.
drodri

1
C ++ OO özelliklerini destekler, C dili desteklemez.
Chris O,

1
@FriendofKim Tam olarak kastettiğim şey değildi (teknik olarak yapabilseniz de, Due, megabit olmayan seri iletişim için bir yazılım çözümünü destekleyecek kadar hızlı ve Arduino kütüphaneleri yalnızca 4 tane sağlarken, toplamda 5 U (S) ARTS var. onlar ancak iirc'e bağlı olarak, Yönetim Kurulu zaten USART'lardan biri için pim sağlamıyor); Arduino kütüphaneleri USART'ları eşzamansız mod kullanacak şekilde yapılandırıyor, ancak 6Mbps'ye kadar eşzamanlı olarak ihtiyacım vardı (ve girişin ham bit akımı olarak işlem görmesi gerektiğinden SPI modunu kullanmam gerekti; varsayılan PIO kontrol cihazı yapılandırmasını değiştirerek.
JAB

48

Teoride ...
Gerçekten de bir Arduino dili yok. Bazı etki alanı kitaplıkları ile gerçekten sadece C ++. Bunlar, donanımı kontrol etmek için çağırabileceğiniz işlevler gibi çeşitli özellikler ekler. Bu işlevlere sahip değilseniz, her şeyi kontrol etmek için doğrudan özel kayıtlarla oynamanız gerekir. Gömülü programlama genellikle böyle yapılır. Hızlı, ancak öğrenmek ve anlamak oldukça zor olabilir.

İşlevlere ek olarak, kitaplıklar bazı türler için alternatif adlar ekler. Örneğin, booleanve byteC ++ standardında değil. Ancak, doğrudan boolve ile eşdeğerdirler unsigned char.

Tüm bunlar, muhtemelen genel C ++ kodunu Arduino'ya zorluk çekmeden doğrudan taşıyabileceğiniz anlamına gelir. Ancak, diğer tarafa geri gitmek için küçük bir düzenleme yapılması gerekebilir.

Uygulamada ...
Bunların hepsini söyledikten sonra, Arduino için programlama, genel C ++ programlama ile tamamen aynı değildir. Farklılıkların çoğu, gömülü programlamanın tamamında ortaktır (sınırlı hafıza ve işlem gücü gibi).

Ayrıca, resmi Arduino IDE kullanıyorsanız, kodunuzu nasıl ayarladığınız konusunda rahatsız edici tuhaflıklar ve sınırlamalar olduğunu da belirtmek gerekir. Her durumda geçici çözümler var (bildiğim kadarıyla), ancak bazen oldukça sinir bozucu oluyorlar.

Tam esneklik için, Arduino'yu desteklemek için eklentili üçüncü taraf bir IDE (Eclipse gibi) kullanın. Bu size Arduino kütüphaneleriyle birlikte C ++ 'nın tüm avantajlarını vermelidir.


25

Arduino kullanırken C ++ ile Arduino dilinin avantajları nelerdir? JavaScript, PHP gibi önceden işlenmiş dillerde deneyimim var ve Java ve Visual Basic gibi dillerle tanıştım.

İlk olarak, Arduino derleyicisi / IDE C ve C ++ 'ı olduğu gibi kabul eder. Aslında kütüphanelerin çoğu C ++ ile yazılmıştır. Temel sistemin çoğu nesne yönelimli değil, olabilir.

Böylece, "arduino dili" C ++ veya C'dir.

C ++ çöp toplanmıyor. Değişkenleri kapsam içinde yönetir - eğer yazarsanız:

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);
   }
}

Öyleyse , kaç kere aradığın önemli değil , onu bulacaksın ledve ibüyümeyecek veya sızmayacaksın blinkTimes.

Eğer ibir sınıf vardı, bu benzer işlevi sona kez bertaraf edilecektir. newYeni nesneler oluşturmak için kullanmadığınız veya benzer bellek ayırma işlevlerini kullanmadığınız sürece, sızıntılar konusunda endişelenmenize gerek kalmayacaktır.

Eğer büyük sınıf oluşturma ve içe geçmiş fonksiyonlarda onlardan bir sürü kullansanız da, bellek yetersiz çalışabilir, ancak genel olarak sizinle ilgileniyor başlayana kadar derde gidiş değildir newve freeişlevleri.

Kullanıyorsanız , uygun zamanlarda newaramanız gerekir delete. C ++ ve Arduino uzantısına göre, otomatik çöp koleksiyonuna sahip değilsiniz, açık bir şekilde kendi hafızanızı yönetmeniz gerekiyor.


1
Tamam, başlatılmış nesneler (yeni olanlarla) çöp toplanmazsa, bunu da öğrenmem gerekecek. Sanırım C ++ ile ilgili herhangi bir kitap bunu kapsayacak. İyi bir cevap için teşekkür ederim!
Kim

14

Arduino dil olan C ++, ancak çoğu C ++ çeşitleri çok farklıdır. Arduino dili, özellikle donanım arayüzlerinde yerleşik olan ve kullanımı çok basit kılan bir soyutlamaya sahiptir. Java'da bir geçmişiniz varsa, C ve C ++ birbirine çok benzer olmalıdır.

Arduino ve C ++ arasındaki ana farklar bellek deposundadır. Genellikle modern bir bilgisayarda 2GB'tan fazla RAM, Arduino Uno'da ise 2kB (1 milyon kat daha az) var. Arduino, bilgisayarın kullandığı 32 bit yerine 8 bit komutları da kullanır. Bu, esas olarak bir değişkende saklayabileceğiniz bilgi miktarını etkileyecektir.

Arduino dünyasında çok yeniyseniz, orada birçok iyi insan olduğundan, bir öğreticiye bakmalısınız.


Hafızandan bahsediyorsun. 96 KB RAM'e sahip olan Due var. Ancak istediğim son şey, bir bellek sızıntısı nedeniyle helikopterin çökmesidir (helikopterin üzerine monte edilmiş çok pahalı bir kamera olması).
Kim

Aksi belirtilmediği takdirde, C ++ 'daki bellek otomatik olarak kullanılır (Java'daki çöp toplayıcılar gibi)?
Kim

2
C ++ standardı bellek boyutları hakkında hiçbir garanti vermez - c ++ zaten gömülü donanımlarda değişiklik yapmadan çalışır.
Michael Thorpe

2
Donanım platformları arasındaki farkları açıklıyorsunuz, orada C ++ değil.
Cybergibbons

5
@ FriendofKim C ++ 'da değişkenleri / nesneleri başlatmanın iki farklı yolu vardır. Onları yerel olarak başlatırsanız (örn. int blah = 5;), Bunlar kapsam dışına çıktığında (yani döngünün veya fonksiyonun sonunda) otomatik olarak imha edilir. Ancak, onları yığında başlatırsanız (örn. int *blah = new int(5);) O zaman onları kendiniz serbest bırakmanız gerekir. Öbek verileri gömülü programlamada kullanmak genellikle akıllıca değildir.
Peter Bloomfield

14

--- 170412 numaralı güncelleme
Orijinal cevabımı üç yıl önce orada farklı bir "Arduino C ++" bakış açısıyla yazdım. IDE içinde kullanılan dil olan GNU C ++ derleyici tarafından uygulanan, çünkü standart C ++. "Görünür" farklar ürküyor çünkü IDE, yeni gelenlerin bir çift dilimi engellemesine yardımcı olmak için bazı ön işlemler yapacak. Ama yapabilirsin - ve ben - doğru C ++ yazıp, tam olarak ne beklediğini elde edebilirsin.
--- güncellemeyi sonlandır

C ++ dil özelliklerini kullanımınızı, uygulamalarını tam olarak anladığınız şeylerle sınırlandırın. Kaynak kodunu okumaktan açık, kaynak yoğun kodlardan daha fazlasını derleyen özellikler vardır. İsteğe bağlı olarak oluşturulan .lss (birleştirilmiş kaynak ve derleme) listesi, bakmadığınızda C ++ derleyicisinin ne yaptığı hakkında size iyi bir fikir verebilir.

Bellek ile ilgili sorunuza: C ++ çöp toplama yapmaz. C ve C ++ gibi yığın tabanlı diller, fonksiyon girişindeki otomatik değişkenler için istif üzerinde geçici depolama alanı tahsis ederler ve fonksiyon geri döndüğünde serbest bırakılırlar, ancak bu gerçek bir çöp toplama değildir. Yığın veya genel bellekte oluşturulan nesneler, açıkça silene kadar yaşar. Farklı türde nesnelerin nerede, ne zaman ve ne kadar süreyle oluşturulacağını bildiğinizden emin olun. newKodlama ve delete-ing nesnelerinizi gerçekten istemezsiniz . Yığın hafızasına yerleştirilecek, parçalayacak ve yığına büyümesine neden olacaklar. İşte o zaman kodunuz - ve sizin güzel helikopteriniz - çarpışacak.

C daha az yapmak, böylece sizin için daha az yapar için size. Kötü bir seçim değil. Birkaç C ++ 'ın özelliklerine sahip olan C, daha da fazla seçenek olabilir, zira ekstra özellikleri akıllıca seçmeniz durumunda. C ++, eğer iki seçeneğiniz varsa:

[Orijinal cevap] - C ++ standart bir dildir. Gömülü sistemler de dahil olmak üzere pek çok ortamda yaygın şekilde kullanılmaktadır ve bu nedenle "Arduino" gibi bir çok C ++ dilinden daha ayrıntılı bir şekilde test edilmiştir. Bu, özellikle planladığınız gibi kritik görev / güvenlik açısından kritik uygulamalar için önemlidir. Çöktü kodu çöktü 'helikopter demektir ve birine zarar vermez bile, olacak pahalı makineyi bölünürler.

  • Standart olarak, C ++ taşınabilir. İşlemcinizi yükseltmeniz mi gerekiyor? Silikon spesifik kod dışında her şey yenisine yönlendirilir. Araç seti, geliştirme sistemi, ana bilgisayar işletim sisteminizi değiştirmeniz mi gerekiyor? C ++ her yerde desteklenecek. Arduino IDE, Java'nın desteklediği herhangi bir yerde çalışacak olsa da, Arduino C ++ kullanan tek araç ve çok sınırlı bir araçtır. Eclipse'i kullanmak istiyorsanız, AVR araçları komut satırından yalınayak gidin, Emacs içinde geliştirin veya tercih ettiğiniz başka bir ortam varsa, standart C ++ desteklenecektir.

  • Arduino IDE arkanızdaki şeyleri yapar - özellikle, ihtiyaç duyduğunu düşündüğü zaman .h dosyalarını içerir. Doğru olsa bile, derleyicinin göreceği her şeyi yazmak ya da en azından görmek ve anlamak istiyorsunuz. Programlama dilleri bilgisayarlar için yapılmamıştır (bilgisayarlar kahvaltıda bit yerler); insanlar için, özellikle de sizi projede takip eden insanlar için yapılmışlardır, en önemlisi ... siz!, bir modül yazdıktan 6 ay sonra, onu geliştirmek için geri gelmeniz gerekir. Muhtemelen, düzelt. Derleyicinin gördüğü her şeyi görmek gerçekten istiyorsun.


2
Bu gerçekten iyi bir cevap. C ++ 'ı sevdiğin ve benim de sevmem gerektiği çok açık! ... Ama cidden, farklı sensörlerle vb. "İletişim" in nasıl çalıştığını anladığım anda C ++ 'a atlayacağım.
Kim

Konuyla ilgili iyi bir kitap biliyor musunuz? (Yıllarca başka dillerde programlama yapan ve C ++ 'ın "gömülü kısmına" ihtiyaç duyan benim için uygundur.)
Kim

Accelerated C ++ ' in bunun için iyi bir kitap olduğunu düşünüyor musunuz ?
Kim

2
Size 'doğru' kitapta yardım edebilmeyi isterdim, ama C ++ 'a arkamda bir sürü C ile birlikte geldim ve Kernighan & Ritchie'nin C Programlama Dili hala açıkça C ++ olan herhangi bir şey için benim go-book'um (bad pun). ve Ellis & Stroustrup'un C ++ için Açıklamalı C ++ Referans Kılavuzu . Ancak donanıma yazmak için, Arduino.cc'daki kullanıcılar tarafından katkıda bulunan cihaz kitaplıklarının bazılarına iyi bakabilirsiniz . PinMode (), digitalWrite () ve digitalRead () işlevleriyle tweaking I / O portlarını, daha sonra analog giriş / çıkış meslektaşlarını ve en sonunda ...
JRobert 19:14

1
... hız ve bellek alanı iyileştirmeleri için doğrudan G / Ç kayıt defterlerine yazmayı planlayın. Blinky.cpp ve hello.cpp gibi programlar, donanımlarla uğraşmaya başlamak için iyi yerlerdir. Basit bir multimetre ve doğru akım sınırlama dirençlerine sahip olan ve bir bacağına kalıcı olarak lehimlenen birkaç LED ve basitse, çabalarınızdan elde edilen sonuçları görebilmeniz gerekir. Ondan sonra, hangi sinyalleri oynatabileceklerini / oynaması için yazmaları gerekenleri öğrenmenizle ilgilenen herhangi bir donanımın veri sayfalarını okuyun. Sıcaklık sensörlerinin kullanımı kolaydır ve herkesin bir buzdolabı kaydedicisine ihtiyacı olmaz mı? İyi eğlenceler!
JRobert

10

Benim durumumda, bu kaçınmak en iyisidir yeni ve silme sınırlı hafızaya sahip makinelerde çalışırken.

  • Hafıza yönetimi, değerli program ve RAM alanı kullanır
  • ISR vektörleri derleme zamanında ayarlanır. Bir sınıf örneğinin çalışma zamanında bir ISR talep etmesi zor (imkansız mı?)
  • Genellikle derleme zamanında hangi sınıf örneklerine ihtiyaç duyduğunuzu bileceksiniz - örneğin, 3 düğmeli güvenlik aracı, bir ekran sürücüsü ve 2 satırlık ekran sürücüsü
  • Bellek yönetimi, yeni veya sil kullandığınızda bilinmeyen gecikmelere neden olur.

Dinamik örnek inşası ve imhası kullanmanın haklı olduğu durumlar olabilir, ancak nadir olduklarından şüpheleniyorum.


C ++ için tamamen yeni olan STD ile ilgili bir takip sorum var. Bunu kullanmak akıllıca bir fikir mi? Değilse nasıl eklenebilir (Eclipse)? AVR derleyicisini ve iyi çalıştığını ayarladım.
Kim

1
Söylediklerinin hepsi doğru ama bunun OP sorusunun cevabı olduğunu anlamıyorum. newve deleteArduino IDE'de de mevcuttur.
jfpoilpret

Bu bir cevap değil ama gerçekten takdir ettiğim çok yararlı bir bilgi.
Kim

8

Birkaç cevaplar belirtildiği gibi genel olarak gömülü bir sistem programlama durumunda, kaçınmalısınız yeni kendi bellek yığını yönetmek sürece ve gerçekten nesne yaşam döngüleri ne olacağını biliyorum. Statik ayırma veya yığın değişkenleri çok daha güvenlidir. Bir fonksiyonun süresince tahsis değişken uzunluk tamponları gibi şeyler yönetmek Yani, bir ortak hile çağıran bir nesnedir ki (yığın) bir otomatik değişken sahip olmaktır yeni onun kurucu ve sonra koymak silme yıkıcı Bu nedenle, nesne kapsam dışına çıktığında arabellek yığına geri verilir. Yine, bu küçük mikroskoblarda genellikle sınırlı kullanım içindir, ancak hatırlanması güzel bir kalıptır.


6

Yukarıdaki açıklamalara ek olarak, Arduino kartlarında çalışan RAM'le ilgili problemlerinizi, özellikle de Uno'yla (ve aynı mikrodenetleyiciyi paylaşan diğerleriyle) daha da vurgulamak istiyorum. Geçenlerde bir 32x32 LED matris üzerinde çalışan basit bir Space Invaders oyunu yazdım ve art arda düşük hafızanın neden olduğu sorunlara rastladım.

Uno yalnızca 2048 bayt RAM'e sahiptir. Benim matrisimin kütüphanesi 3 / 4'ünü kaptı ve oyun için beni yaklaşık 400 bayt bıraktı. Projeyi bir noktada “yükseltmek” niyetindeyim, aynı program temelli birden fazla oyunu daha güçlü bir şekilde çalıştırmak için. Nedeniyle, OO müdürleri ve birçok sınıf mirası ile kod tasarladım. (Oyun sınıfı, sanal güncelleme ve arama çağrılarıyla miras kaldı, oyun varlıklarının tümü miras kaldı).

Sadece işgalcileri ekleyerek hafızam bitti. Üye değişkenlerini biraz arttırarak hafızayı kurtarmaya çalıştım ancak kalkan nesnelerini eklerken tekrar koştum. Biraz daha kazıma yaptıktan sonra bomba / mermi ekleyerek koştum. Bu noktada kodu taradım ve tüm "sanal" etiketlerini kaldırdım (tüm sınıf prototiplerim bir Visual Assist snippet'inden oluşturulur ve yıkıcılar otomatik olarak tüm sanaldır). Bu, hafıza kullanımımı anında yarıya indirdi ve kodu tamamlayabilecek kadar serbest kaldı.

Uzun lafın kısası, sonuç hiçbir C ++ özelliğini kullanmayan C ++ kodudur. Sadece C'ye bağlı kalıyor ve bellek kullanımınızı çok iyi biliyor olabilirsiniz. 2KB'yi aşarsanız, hiçbir yardım almazsınız - özellikle herhangi bir dinamik ayırma kullanıyorsanız, kod çalışmayı durdurur ve bellek taşması olasılığını düşünene kadar bir süre kafanızı çizmeye kalırsınız.

PS - Bit alan değişkenler kötüdür. Çok kötü. İşleme ek yükünün yanı sıra, oyuna yeni bir durum ekleyeceğim sayıyı da kaybettim ancak kod çalışmadı ve nedenini anlayamadım. Durum değişkenim yeni durum değerini tutacak kadar geniş değildi, bu yüzden beklenmedik bir durum elde ediyordum.


4

Arduino dili C ++ ' dır (genellikle daha çok gömülü sistemler mikrodenetleyici dünyasında oldukça yaygın olan "Sınıflı C" gibi bir stille de uygulanabilir). Hikayenin sonu. Zaten farklı bir dil olduğunu düşünen insanlarla yeter! G ++ derleyicisini kullanır.

Kanıt:

Tercihler bölümünde derleme sırasında ayrıntılı çıktıları etkinleştirin ve yükleyin; yalnızca bu satırları okuyarak çok şey öğreneceksiniz.

İşte bazı ek bilgiler:

Kendi sözlerim:

Çaba isteyen kodu olan C ++. Arduino çekirdek fonksiyonları , kullanabileceğiniz bir dizi C ++ sınıfı ve kütüphanesidir. GNU gcc / g ++ derleyicisi kullanılarak derlenir ve derlenir . Setup () ve loop () işlevleriniz sadece zorunlu main () işlevine yerleştirilir ( tam burada - aslında dosyanın C ++ kaynak dosyası olan "main.cpp" olduğunu unutmayın) ve bazı ekstralar da vardır. geçerli bir C ++ programı olduğundan emin olmak için ön işleme (örneğin: tüm işlev prototiplerini [aka: declarations] tararken sizin için bir prototip .ino dosyanızda olsa bile bir işlevi kullanabilirsiniz). Ancak, Arduino'nun çoğu "C stili" olarak yazılmıştır ve bu nedenle # extern "C" {}C ++ 'ı engellemek için etrafındaki parantezleri gerektirir."isim yönetimi" ( "isim dekorasyon / isim dekorasyon" olarak da bilinir ) fonksiyonu , ATmega328 ve diğer AVR mimarisi mikrokontrolcülerinin C uygulaması olan AVR-libc tarafından uygulanan C fonksiyonlarını çağırır .

Arduino'nun sözleri:

Arduino panosunu C
dilinde programlayabilir miyim? Aslında siz zaten varsınız; Arduino dili yalnızca kodunuzdan çağrılabilen bir dizi C / C ++ işlevidir. Taslaklarınız küçük değişikliklere uğrar (örn. Otomatik fonksiyon prototipleri oluşturma) ve sonra doğrudan bir C / C ++ derleyicisine (avr-g ++) geçirilir. avr-g ++ tarafından desteklenen tüm standart C ve C ++ yapıları Arduino'da çalışmalıdır. Daha fazla ayrıntı için, Arduino derleme işlemi sayfasına bakın . "

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

Arduino kütüphanesi ne zaman saf C veya C ++ kullanılmalı?

Dolayısıyla, Arduino dilini işleri basitleştirdiği yerde kullanın ve kendi işlevlerinizi daha fazla uzmanlık gerektiren yere yazın. Kod yazarken IDE'den hızlıca uzaklaşmanızı öneririm - sadece derleme için kullanın. "External Editor" kullanmak için IDE tercihlerini ayarlayın. Sonra , kodunuzu yazmak için Sublime Text 3 , Atom , Visual Studio Code veya Eclipse CDT gibi profesyonel bir kaynak kod editörü / IDE kullanın. Daha sonra derlemek ve yüklemek için Arduino IDE'ye tekrar tıklayabilirsiniz. Eclipse ile giderseniz, Eclipse'de bunu yapmanın yolları vardır (buradaki diğer cevaplara bakın ve buradaki Arduino Bahçesi Eclipse makalesine de bakın), bu yüzden bu teknikleri kullanmayı düşünün.

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.