C ++ vs. Arduino-kieli?

Mitkä ovat kunkin kielen edut Arduinoa käytettäessä?

Luulen, että tämä on hyvä yleinen kysymys, mutta minä ”Lisää hieman siitä, miksi kysyn, haluaisiko joku antaa minulle vihjeen.

Olen kokenut esikäsiteltyjä kieliä, kuten JavaScriptiä, PHP: tä, ja olen törmännyt kieliin, kuten Java ja Visual Basic. Toisin sanoen tunnen ohjelmointitekniikoita ja sekä klassisen että prototyyppisen kohdesuuntauksen, mutta en mitään kommunikoinnista suoraan laitteiston kanssa.

Olen tekemässä oktokopteria ja ajattelen, että olio-lähestymistapa on helpoin. (Ohjelmistolla on hyvin monia ominaisuuksia …) En kuitenkaan ole koskaan kirjoittanut C ++: lla.

Koska tämä on Q & Sivusto, jonka oletetaan olevan auttaa muita, vain alussa esitetyllä yleisellä kysymyksellä on suuri merkitys, mutta kiitän kaikkia kommentteja tilanteestani.

Kommentit

  • Vältä Arduino IDE: tä, koska se ei ansaitse IDE-nimeään, se on jopa erittäin huono toimittaja: se voi olla hyvä aloittelijoille ja yksinkertaisille luonnoksille, mutta pitäisi mennä nopeasti parempaan.
  • Tämä on melko ytimekäs erittely siitä, mitä iv id = = mitä ’ todella tarkoittaa? ”5f5c6138a9”>

Arduino-ohjelmointi Kieli. ”

  • C++ vs. The Arduino Language? – ” Arduinon kieli ” on C ++. Funktioprototyyppien säästämiseksi on vähän esikäsittelyä, mutta ehdottomasti se on C ++.
  • Arduino-kieltä ei ole olemassa. Se on yksinkertaisesti kirjasto.
  • Ei liity kysymykseen vaan kommentteihin: Atmel-studio on ilmainen ja IMHO on parempi kuin visuaalinen studio arduino-ohjelmointia varten. Tukee myös Visual Micro -laajennusta, vaikka se ei ole ollenkaan välttämätöntä arduinojen ohjelmoinnissa ja virheenkorjauksessa.
  • Answer

    Henkilökohtainen kokemukseni professorina (ohjelmointi, mekatroniikka) on, että jos sinulla on aikaisempaa ohjelmointikokemusta ja tiedät käsitteet OOP: na, on parempi valita C / C ++. Arduino-kieli on todella hieno aloittelijoille, mutta sillä on joitain rajoituksia (esim. Kaikki tiedostosi täytyy olla samassa kansiossa). Ja se on periaatteessa yksinkertaistettu C / C ++ (voit käytännössä kopioida & liittää arduino-koodin C / C ++ -tiedostoon, ja se toimii). Lisäksi on järkevää, että voit käyttää täysin tunnettua IDE: tä pimennyksenä:

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

    Siinä tapauksessa se ei haittaa sinua aloittamasta arduino-kielen ja arduino IDE: n käyttöä muutaman päivän ajan tutustuaksesi arduino-laitteistoon ja siirtyäksesi sitten C / C ++: een Eclipse-palvelun kanssa projektisi todella kehittämiseksi.

    Kommentit

    • Kiitos ajatuksistasi.

    Käytän Arduino IDE -ohjelmaa oppimaan kuinka hallita kaikkia erilaisia laitteita kappaletta, kuten anturit ja LCD-näytöt jne. Sitten ’ siirryn C ++: een tekemään oktokopterin ohjelmiston. Tiedätkö hyvän ja lyhyen kirjan ihmisille, jotka osaavat muita kieliä? ” -ongelma ” monien kanssa kirjat, jotka ’ ovat löytäneet, sisältävätkö ne niin paljon, että en tarvitse ’ tarvitsevani, koska en ’ m pienellä Atmel-mikrokontrollerilla eikä käyttöliittymätietokoneella.

  • Arduinolle on mukava kirja ” C-ohjelmointi ” Julien Bayle on hyödyllinen. Se ei ole C-kieli C ++ – kieli, mutta sen pitäisi auttaa sinua ymmärtämään perusta.
  • Se on hyvä pyyntö: lyhyt ja hyvä kirja C ++: n perusteista muiden kielten ohjelmoijille. Valitettavasti en voi antaa suosituksia, en ole tietoinen hyvistä. Itse kirjoitin kirjan, jossa käytännönläheinen (kehitettävä videopeli) opiskelijoille, mutta se on vain espanjaksi. Hyvästä ja käytännöllisestä C ++ -kirjasta suosittelen Deitel & Deitel C ++ -ohjelmointia varten voit ohittaa monia edistyneempiä lukuja.
  • C ++ tukee OO-ominaisuuksia, C-kieli ei.
  • @FriendofKim Ei tarkalleen mitä tarkoitin (vaikka teknisesti voisitkin, Due on tarpeeksi nopea tukemaan ei-megabittisen sarjaliikenteen ohjelmistoratkaisua, ja siinä on 5 U (S) ARTS kun taas Arduinon kirjastot tarjoavat vain neljä niistä, mutta iirc Due-kortti ei kuitenkaan tarjoa nastoja yhdelle USART-kortista); Arduino-kirjastot määrittelevät USART: t käyttämään asynkronista tilaa, mutta tarvitsin synkronoinnin jopa 6 Mbit / s nopeudella (ja minun piti käyttää SPI-tilaa, koska tuloa oli käsiteltävä raakana bittivirrana, joten ei pysäytysbittejä / jne.), johon sisältyi myös PIO-ohjaimen oletusasetusten muuttaminen.
  • Vastaus

    Teoriassa …
    Arduino-kieltä sinänsä ei ole. Se on oikeastaan vain C ++, jossa on joitain toimialakohtaisia kirjastoja. Nämä lisäävät erilaisia ominaisuuksia, kuten toimintoja, joihin voit soittaa hallitaksesi laitteistoa. Jos sinulla ei ollut näitä toimintoja, sinun ei tarvitse hämätä suoraan erityisten rekisterien kanssa kaiken hallitsemiseksi. Näin sulautettu ohjelmointi yleensä tehdään. Se on nopeaa, mutta sen oppiminen ja ymmärtäminen voi olla melko vaikeaa.

    Funktioiden lisäksi kirjastot lisäävät vaihtoehtoisia nimiä joillekin tyypeille. Esimerkiksi boolean ja byte eivät kuulu C ++ -standardiin. Ne ovat kuitenkin suoraan vastaavia bool ja unsigned char.

    Kaikki nämä asiat tarkoittavat, että voit todennäköisesti portoida yleistä C ++ -koodi suoraan Arduinoon ilman vaikeuksia. Toisella tavalla paluu voi kuitenkin edellyttää pieniä muokkauksia.

    Käytännössä …
    Tämän kaiken sanottuaan Arduinon ohjelmointi ei ole täsmälleen sama kuin yleinen C ++ -ohjelmointi. Monet erot ovat kuitenkin yhteisiä kaikille sulautetuille ohjelmoinnille (kuten rajallinen muisti ja prosessointiteho).

    On myös syytä huomata, että jos käytät virallista Arduino IDE -ohjelmaa, koodisi määrittämisessä on kaikenlaisia ärsyttäviä oivalluksia ja rajoituksia. Kaikissa tapauksissa on kiertotapoja (tietojeni mukaan), mutta ne ovat joskus melko turhauttavia.

    Täyden joustavuuden takaamiseksi käytä kolmannen osapuolen IDE: tä (kuten Eclipse) ja laajennusta Arduinon tukemiseen. Tämän pitäisi antaa sinulle kaikki C ++: n edut yhdessä Arduino-kirjastojen kanssa.

    Kommentit

    • Täällä ’ s Asetukseni Eclipse-sovellukseen, joka toimii hyvin Arduinon kanssa. arduino.stackexchange.com/a/75491/7727 . En käytä ’ en käytä Arduino-laajennuksia, vain puhdasta Eclipseä C / C ++: lle.

    Vastaa

    Mitkä ovat C ++: n ja Arduinon kielen edut Arduinoa käytettäessä? Olen kokenut esikäsiteltyjä kieliä, kuten JavaScriptiä, PHP: tä, ja olen törmännyt kieliin, kuten Java ja Visual Basic.

    Ensinnäkin Arduino-kääntäjä / IDE hyväksyy C ja C ++ sellaisenaan. Itse asiassa monet kirjastot on kirjoitettu C ++: lla. Suuri osa taustajärjestelmästä ei ole olio, mutta se voi olla.

    ”Arduino-kieli” on siis C ++ tai C.

    C ++: ta ei kerätä roskiin. Se hallitsee laajuuden muuttujia – jos kirjoitat:

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

    Sitten löydät että led ja i eivät kasva tai vuoda, riippumatta siitä kuinka monta kertaa soitat blinkTimes.

    Jos i olisi luokka, se samoin hävitettäisiin, kun funktio päättyy. Joten niin kauan kuin et käytä new tai vastaavia muistinjakotoimintoja uusien objektien luomiseksi, sinun ei tarvitse huolehtia vuodoista.

    Muisti voi silti loppua, jos luot valtavia luokkia ja käytä paljon niistä syvälle sisäkkäisiin toimintoihin, mutta yleensä et aio joutua vaikeuksiin, ennen kuin aloitat new ja free -toiminnot.

    Jos käytät new, sinun on soitettava delete sopivina aikoina. C ++: lla ja laajennuksella Arduinolla ei ole automaattista roskien keräystä, sinun on hallittava nimenomaisesti omaa muistiasi.

    Kommentit

    • Okei, jos instantioidut objektit (uudella) areen ’ t roskat kerätään, minun on myös opittava myös tämä ’. Oletan, että jokainen C ++ -kirja kattaa sen. Kiitos hyvästä vastauksesta!

    Vastaa

    — Päivitys 170412
    Kirjoitin alkuperäisen vastaus kolme vuotta sitten sen näkökulmasta, että olemassa on erillinen ”Arduino C ++”. IDE: ssä käytetty kieli on vakio C ++, koska GNU C ++ -kääntäjä toteuttaa sen. ”Näennäiset” erot piiloutuvat, koska IDE tekee jonkin esikäsittelyn auttaakseen kielen uusia tulokkaita välttämään pari ”gotchaa” täyttämällä joitain #includes, f / ex. Mutta voit – ja minä – kirjoittaa siihen oikean C ++: n ja saada juuri sen, mitä odotat saavan.
    — end update

    Rajoita C ++ – kieliominaisuuksien käyttöä niihin, joiden toteutuksen sinä ymmärtää täysin. On joitain ominaisuuksia, jotka kokoavat resursseja vievämmäksi koodiksi kuin mitä lähdekoodin lukeminen on ilmeistä. Valinnaisesti luotu .ls (yhdistetty lähde ja kokoonpano) -luettelo voi antaa sinulle hyvän käsityksen siitä, mitä C ++ -kääntäjä teki, kun et etsinyt.

    Muistikysymykseen: C ++ ei kerää roskia. Pino-pohjaiset kielet, kuten C ja C ++, jakavat väliaikaisen tallennustilan pinoon automaattisten muuttujien kohdalla toiminnon syötössä, joka vapautetaan sitten, kun funktio palaa, mutta tämä ei ole totta roskien keräys. Kasaan tai globaaliin muistiin luodut objektit elävät, kunnes poistat ne nimenomaisesti. Varmista, että tiedät missä, milloin ja kuinka kauan erilaisia esineitä luodaan. Et todellakaan halua, että koodisi new -ing ja delete -objektit ovat haluttomia. Ne rakennetaan kasomuistiin, pirstouttaa sitä ja saa sen kasvamaan pinoksi. Silloin koodisi – ja mukava kopterisi – kaatuu.

    C tekee vähemmän sinulle, joten se voi tehdä vähemmän sinulle sinulle. Se ei ole huono valinta. C muutamilla C ++: n ominaisuuksilla voi olla vieläkin parempi valinta, kun valitset lisäominaisuudet harkiten.C ++, jos nämä ovat kaksi vaihtoehtoa:

    [Alkuperäinen vastaus] – C ++ on standardoitu kieli . Sitä käytetään laajalti monissa ympäristöissä, mukaan lukien sulautetut järjestelmät, ja siksi se on testattu perusteellisemmin kuin hyvin samanlainen C ++ -kieli, joka on ”Arduino”. Tämä on erityisen tärkeää suunnittelukriittisissä / turvallisuuskriittisissä sovelluksissa. Kaatunut koodi tarkoittaa kaatunutta kopteria, ja vaikka se ei satuttakaan ketään, se rikkoo kalliin koneesi.

    • Koska C ++ on vakiona, se on kannettava. Tarvitseeko päivittää prosessori? Kaikki paitsi piikohtainen koodi portoidaan uuteen. Tarvitseeko vaihtaa työkalupaketti, kehitysjärjestelmä, isäntä-käyttöjärjestelmä? C ++ Vaikka Arduino IDE toimii missä tahansa Java-tuessa, se on ainoa työkalu, joka käyttää Arduino C ++ -sovellusta, ja se on myös hyvin rajallinen l. Jos haluat käyttää Eclipseä, AVR-työkaluja, siirry paljain jaloin komentoriville, kehitä Emacsissa tai missä tahansa muussa ympäristössä, jota haluat, standardi C ++ -tukea tuetaan.

    • Arduino IDE tekee asioita selkäsi takana – tarkemmin sanoen, se sisältää .h-tiedostot, kun se ajattelee tarvitsevasi niitä. Vaikka se olisi oikein, haluat todella kirjoittaa tai ainakin nähdä ja ymmärtää kaiken, mitä kääntäjä aikoo nähdä. Ohjelmointikieliä ei tehdä tietokoneille (tietokoneet syövät bittiä aamiaiseksi); ne on tehty ihmisille, erityisesti ihmisille, jotka seuraavat sinua projektissa, joista tärkein voi olla … sinä !, kun 6 kuukauden kuluttua kirjoitit moduulin, sinun on palattava takaisin parantamaan sitä tai todennäköisemmin korjaamaan se. Haluat todella nähdä kaiken, mitä kääntäjä näkee.

    Kommentit

    • Tämä on TODELLA hyvä vastaus . Vaikuttaa selvältä, että pidät C ++: sta ja että pidän siitä myös! … Mutta vakavasti, minä ’ hyppään oikealle C ++: lle heti, kun olen ’ ymmärtänyt, kuinka ” viestintä ” eri antureiden jne. kanssa toimii.
    • Tiedätkö hyviä kirjoja aiheesta? (Sopii minulle, joka olen ohjelmoinut vuosia muilla kielillä ja tarvitsee vain C ++: n ” upotetun osan ”.)
    • Luuletko Accelerated C ++ olevan hyvä kirja tähän?
    • Toivon, että voisin auttaa sinua ’ oikea ’ kirja, mutta tulin C ++ -sarjaan, paljon C: tä takana ja Kernighan & Ritchie ’ s C-ohjelmointikieli on edelleen minun kirjani (huono sanakirja) kaikesta, joka ei ole nimenomaisesti C ++, ja Ellis & Stroustrup ’ s Huomautettu C ++ -käyttöopas mallille C ++. Mutta laitteistoon kirjoittamista varten ’ on hyvä tarkastella joitain laitekirjastoja, joita käyttäjät ovat lähettäneet osoitteeseen Arduino.cc . Aloita I / O-porttien säätämisestä pinMode (), digitalWrite () ja digitalRead () -toiminnoilla, sitten niiden analogisilla i / o-vastineilla ja lopulta …
    • … suunnittelet kirjoittavan suoraan I / O-rekisteröinnit nopeuden ja muistitilan parantamiseksi. Ohjelmat, kuten blinky.cpp ja hello.cpp, ovat hyviä paikkoja aloittaa sotkua laitteiston kanssa. Lisää yksinkertainen yleismittari ja muutama LED, jossa on oikeat virtaa rajoittavat vastukset, jotka on juotettu pysyvästi yhteen jalkaan, ja sinun pitäisi pystyä näkemään ponnisteluistasi todelliset, jos yksinkertaiset tulokset. Sen jälkeen, lue kaikkien sinua kiinnostavien laitteiden tietolomakkeet oppiaksesi, mitä signaaleja voit lukea / täytyy kirjoittaa heille, jotta ne soittavat. Lämpötila-antureita on helppo käyttää, eivätkä kaikki tarvitse ’ jääkaapin kirjainta? Pidä hauskaa!

    Vastaa

    Arduinon kieli on C ++, mutta se on hyvin erilainen kuin useimmat C ++ -lajikkeet.

    Vastaa

    Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *