basaal vraagje. Voor en na VOID setup() VOID loop()

Dat het programma slechts 1x door de setup loopt en daarna rondjes blijft gaan door de loop, is me duidelijk.
Ik vraag me af waarom dat zo is.
Een loopje is zo gemaakt en binnen zowel de setup als de loop kun je gewoon If of while loops kwijt.
Waarom is in de structuur dan ooit de keuze gemaakt om hier 2 aparte hoofdstukken van te maken?

(dit kwam zo bij me op omdat ik wel "Servo myservo" vóór de setup moest plaatsen, maar "myservo attach(10)" in de setup. Want hij "deed het niet".)

En dan de vraag die ik ook in de titel stelde: Waarom worden er ook belangrijke zaken nog vóór de setup gezet?
Het zijn wel specifiek voor het programma belangrijke zaken in gezet. Dus ik neem aan dat het programma minimaal daar doorheen gaat.
Wat maakt dan de fase vóór de setup zo anders dan ná die setup?

En dan vraag ik me zijdelings af waarom er haakje open en haakje sluiten achter de VOID staan.
Klaarblijkelijk kan daar ook een waarde in worden geplaatst. In welke situaties komt het voor dat men daar een waarde in zet? En met welk doel?

MvG
Hij, die alles wil weten en dus overal vragen over plaatst:
FTMZ :wink:

Een loopje is zo gemaakt en binnen zowel de setup als de loop kun je gewoon If of while loops kwijt.
Waarom is in de structuur dan ooit de keuze gemaakt om hier 2 aparte hoofdstukken van te maken?

Dat is een beslissing die arduino genomen heeft om het zo te doen. Ik vermoed dat de reden is omdat ze zich richten tot artiesten en dat daar de termen "klaarmaken en spelen" makkelijker te begrijpen zouden zijn dan main (en zelf een loop moeten maken en ook nog init aanroepen)
Er is inderdaad een main en die ziet er als volgt uit.

int main(void)
{
    init();

    initVariant();

#if defined(USBCON)
    USBDevice.attach();
#endif
    
    setup();
    
    for (;;) {
        loop();
        if (serialEventRun) serialEventRun();
    }
        
    return 0;
}

Dus ja gewoon een setup en loop

En dan de vraag die ik ook in de titel stelde: Waarom worden er ook belangrijke zaken nog vóór de setup gezet?

Alle initialisatie van globale variabelen wordt in C/C+= gedaan voor de main en dus ook voorsetup.
Dat is dus gewoon eigen aan de taal.
Verder roept arduino ook nog een init aan waar ze het arduino framework initialiseren.

En dan vraag ik me zijdelings af waarom er haakje open en haakje sluiten achter de VOID staan.

setup is gewoon een functie die geen parameters neemt. lees wat meer over functies/methoden en het wordt wel wat duidelijker

Jantje

Sommigen dingen zijn zo gegroeid. Als eenmaal de keuze gemaakt is voor de twee functies setup() en loop(), dan komen de meeste globale variabelen en objecten boven setup().

Als een object boven de setup() wordt gemaakt, dan kan er uitgebreide initialisatie-code worden uitgevoerd. Dat gebeurt dus nog voordat setup() wordt uitgevoerd.

Zoals bijvoorbeeld het maken van een Global variabele?

Een globale variabele krijgt vaak een waarde toegewezen. Dat gebeurt als eerste.

int globaleVariabele = 3;

Bij het maken van een object kan er code worden uitgevoerd. Die code kan groter zijn dan de hele sketch.

#include <Servo.h>

Servo myservo;

void setup() 
{
  ...

De “Servo” is de class. De “myservo” is het object. De regel [color=navy]Servo myservo;[/color] creeert het object ‘myservo’.

Bij het maken van ‘myservo’ wordt deze code uitgevoerd:

Servo::Servo()
{
  if( ServoCount < MAX_SERVOS) {
    this->servoIndex = ServoCount++;                    // assign a servo index to this instance
	servos[this->servoIndex].ticks = usToTicks(DEFAULT_PULSE_WIDTH);   // store default values  - 12 Aug 2009
  }
  else
    this->servoIndex = INVALID_SERVO ;  // too many servos
}

Daar zou van alles kunnen staan, bijvoorbeeld een ledje knipperen.

Pas daarna wordt setup() uitgevoerd.

Zie: Servo/Servo.cpp at master · arduino-libraries/Servo · GitHub voor de broncode van de Servo class.

ook setup en loop zijn functies en dus kun je er ook variabelen inzetten. vandaar de haakjes, je kunt er ook wat uitkrijgen vandaar dat er void voor staat, dat kun je vervangen door een variabele. dat zijn de beginselen van de taal C. en arduino is een soort standaard geworden maar is een onderdeel van C.

Bedankt jongens...
Ik had nog een hele reactie maar bij het versturen moest ik weer inloggen en was ik alles kwijt... >:( >:( >:(

Hoi.

Rechtsboven (even helemaal naar boven scrollen) vind je je username.
Wanneer je daar op klikt, kom je in je profielpagina terecht.
Dan zie je links je avatar, en daaronder 3 links, waarvan de middelste heet Show Drafts.
Wanneer je daar op klikt, zie je tussentijds bewaarde versies van jouw bijdragen.
Dat word tijdens het typen 1 maal per minuut of zo opgeslagen.
Vaak kun je zo nog iets redden van je noeste arbeid.

DAnk je, MAS3 :slight_smile: