ugyldig sløjfe efterfulgt af andre “ ugyldige ” udtryk

I håber dette er en simpel anmodning fra en nykommer til Arduino og programmering. Jeg har forstået, at når et program først går ind i en tomrumsdel, løber det på ubestemt tid. Imidlertid har jeg for nylig set eksempler på skitser, hvor en anden ugyldig $$$$$ sektion følger lukningen (ved}) af hulrummet. Når jeg skriver dette, ser jeg på et eksempel på et 7-segment display, hvor “ugyldigt Num_Write (int)” følger lukningen af tomrumsløbet. Hvis “loop” sektionen netop gør det, som jeg har fået til at tro, hvordan får man adgang til følgende afsnit?

Tak, Rob

Kommentarer

Svar

void loop() sektionen er en funktion, den samme som void setup() er en funktion. Når du starter, programmerer du Arduino en anden funktion, som du ikke kan se i IDE, ring til setup() og kalder derefter loop() gentagne gange.

Disse andre funktioner, du har set, dvs. void Num_Write(int n) kan kaldes fra enten setup() eller loop(), og de udfører deres instruktioner, før de vender tilbage til den funktion, der kaldte dem. Det er også muligt, at Num_Write() muligvis kalder på andre funktioner, før den returnerer controller til den funktion, der kaldte det.

Typen void bruges til at repræsentere intet (det er faktisk mere komplekst end det, men for dette niveau af forklaring vil intet gøre). Andre funktioner kan returner andre typer int, char, bool. Så hvis vi havde en funktion sådan:

int theMeaningOfLife(void) { return 42; } 

Dette er en funktion, der returnerer en int (en umber), så du vil kalde det sådan:

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

Der er en fangst, funktionen skal erklæres FØR den bruges, dette gør det muligt for compileren at ved hvad du henviser til. Den enkleste måde at gøre dette på er at skrive funktionen over den funktion, der kalder den. Den anden måde er bare at skrive funktionens signatur over funktionen ved hjælp af den, dvs.:

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

Den bedste måde (men ikke altid praktisk på en Arduino ) er at have alle funktionserklæringer i en header-fil (.h) og koden i en .cpp-fil. (Se et bibliotek for at se, hvad jeg mener).

Oversigt

Der er kun en funktion, der kaldes gentagne gange, og det er loop -funktion. Bare fordi en funktion returnerer ugyldig, betyder det ikke, at den kommer til at løkke gentagne gange.

Kommentarer

  • Du skrev: “ funktionen skal erklæres FØR den bruges ”. Faktisk kører Arduino IDE din kode gennem et forbehandlingstrin, der gør det for dig, hvilket betyder at du ikke skal gøre det selv. Jeg vil stadig overveje god praksis for at holde mig til denne regel, hvis kun fordi det gør koden kompilerbar uden for IDE, f.eks. med en Makefile .
  • @EdgarBonet – Tak, det vidste jeg aldrig. Jeg tror dog, at jeg skulle glemme det, ellers ' Jeg begynder at prøve det på arbejde og ender med at trække mit hår ud og prøve at finde ud af, hvorfor [det] vandt ' t kompilere. 🙂

Skriv et svar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *