void-silmukka, jota seuraavat muut “ void ” -lausekkeet

I Toivon, että tämä on yksinkertainen pyyntö uudelta Arduinolta ja ohjelmoinnilta. Olen ymmärtänyt, että kun ohjelma tulee tyhjän silmukan osioon, se pyörii loputtomiin. Olen kuitenkin äskettäin nähnyt esimerkkejä luonnoksista, joissa toinen tyhjä $$$$$ -osio seuraa tyhjän silmukan sulkeutumista (by}). Kirjoittaessani tarkastelen yhtä esimerkkiä 7-segmenttinäytöstä, jossa ”void Num_Write (int)” seuraa tyhjän silmukan sulkemista. Jos ”silmukka” -osio tekee juuri niin, kuten olen saanut uskomaan, miten seuraavaan osioon pääsee?

Kiitos, Rob

Kommentit

Vastaa

-osio on funktio, sama kuin void setup() on funktio. Kun käynnistät Arduinon, ohjelmoit toisen toiminnon, jota et voi nähdä IDE: ssä, soita setup() ja kutsuu sitten loop() toistuvasti. / p>

Näitä muita funktioita, joita olet nähnyt, eli void Num_Write(int n), voidaan kutsua joko setup() tai loop() ja he suorittavat ohjeet ennen kuin palaavat funktioon, joka kutsui heidät. On myös mahdollista, että Num_Write() voi kutsua muita toimintoja ennen kuin se palauttaa ohjaimen kutsutulle toiminnolle. sitä.

Tyyppiä void käytetään edustamaan mitään (se on itse asiassa monimutkaisempi, mutta tälle selitystasolle mikään ei tee). Muut toiminnot voivat palauta esimerkiksi muut tyypit int, char, bool. Joten jos meillä olisi funktio näin:

int theMeaningOfLife(void) { return 42; } 

Tämä on funktio, joka palauttaa int ( umber), joten kutsuisit sitä näin:

void setup() { int number = theMeaningOfLife(); } 

On yksi saalis, funktio on ilmoitettava ENNEN sen käyttöä, jolloin kääntäjä voi tietää mitä tarkoitat. Yksinkertaisin tapa tehdä tämä on kirjoittaa funktio sen kutsuvan funktion yläpuolelle. Toinen tapa on kirjoittaa funktion allekirjoitus vain sitä käyttävän funktion yläpuolelle:

int theMeaningOfLife(void); void setup() { int number = theMeaningOfLife(); } 

Paras tapa (mutta ei aina käytännöllinen Arduinolla) ) on oltava kaikki funktiodeklarukset otsikkotiedostossa (.h) ja koodi .cpp-tiedostossa. (Katso kirjastosta, mitä tarkoitan.) 1a4c416f57 ”>

Yhteenveto

On vain yksi toiminto, jota kutsutaan toistuvasti ja joka on loop function. Pelkästään sen vuoksi, että funktio palauttaa tyhjän, ei tarkoita sen menevän toistuvasti silmukkaan.

Kommentit

  • Kirjoitit: ” toiminto on ilmoitettava ENNEN sen käyttöä ”. Itse asiassa Arduino IDE suorittaa koodisi esikäsittelyvaiheessa, joka tekee sen puolestasi, joten sinun ei tarvitse tehdä itse. Pidän edelleen hyvänä käytäntönä kiinni tästä säännöstä, jo pelkästään siksi, että se tekee koodista käännettävän IDE: n ulkopuolella, esim. Makefile -palvelun kanssa.
  • @EdgarBonet – Kiitos, en koskaan tiennyt sitä. Luulen, että minun pitäisi kuitenkin unohtaa se, muuten ' aloitan sen kokeilemisen työssä ja päätin vetää hiukseni yrittäen selvittää, miksi [se] voitti ' t kääntää. 🙂

Vastaa

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