ugyldig sløyfe etterfulgt av andre “ ugyldige ” uttrykk

I håper dette er en enkel forespørsel fra en nykommer til Arduino og programmering. Jeg har forstått at når et program kommer inn i en tomrumsdel, løkker det seg på ubestemt tid. Imidlertid har jeg nylig sett eksempler på skisser der en annen ugyldig $$$$$-seksjon følger lukkingen (av}) av tomrumsløyfen. Når jeg skriver dette, ser jeg på et eksempel på en 7-segment skjerm der «ugyldig Num_Write (int)» følger lukkingen av tomrumsløyfen. Hvis «loop» -delen gjør nettopp det, som jeg har fått til å tro, hvordan får du tilgang til følgende seksjon?

Takk, Rob

Kommentarer

Svar

void loop() seksjonen er en funksjon, den samme som void setup() er en funksjon. Når du starter, programmerer du Arduino en annen funksjon, som du ikke kan se i IDE, ring setup() og ring deretter loop() gjentatte ganger.

Disse andre funksjonene du har sett, dvs. void Num_Write(int n) kan kalles fra enten setup() eller loop() og de vil utføre instruksjonene sine før de går tilbake til funksjonen som ringte dem. Det er også mulig Num_Write() kan ringe til andre funksjoner før den returnerer kontrolleren til funksjonen som ringte

Typen void brukes til å representere ingenting (det er faktisk mer komplisert enn det, men for dette forklaringsnivået vil ingenting gjøre). returner andre typer int, char, bool for eksempel. Så hvis vi hadde en funksjon slik:

int theMeaningOfLife(void) { return 42; } 

Dette er en funksjon som returnerer en int umber) så du vil kalle det slik:

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

Det er en fangst, funksjonen må erklæres FØR den brukes, dette gjør at kompilatoren kan vet hva du refererer til. Den enkleste måten å gjøre dette på er å skrive funksjonen over funksjonen som kaller den. Den andre måten er å bare skrive funksjonens signatur over funksjonen ved å bruke den, dvs.:

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

Den beste måten (men ikke alltid praktisk på en Arduino ) er å ha alle funksjonserklæringer i en topptekstfil (.h) og koden i en .cpp-fil. (Ta en titt i et bibliotek for å se hva jeg mener).

Sammendrag

Det er bare en funksjon som kalles gjentatte ganger, og det er loop -funksjon. Bare fordi en funksjon returnerer ugyldig, betyr det ikke at den kommer til å løkke gjentatte ganger.

Kommentarer

  • Du skrev: “ funksjonen må deklareres FØR den brukes ”. Egentlig kjører Arduino IDE koden din gjennom et forbehandlingstrinn som gjør det for deg, noe som betyr at du ikke trenger å gjøre det selv. Jeg vil fremdeles vurdere god praksis å holde meg til denne regelen, om ikke bare fordi det gjør koden kompilerbar utenfor IDE, f.eks. med en Makefile .
  • @EdgarBonet – Takk, det visste jeg aldri. Jeg tror jeg burde glemme det, ellers vil jeg ' begynne å prøve det på jobben og ende opp med å trekke håret ut og prøve å finne ut hvorfor [det] vant ' t kompilere. 🙂

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *