[OPGELOST] Mijn while loop gedraagd zich als een if then else.

(deleted)

Dit klopt zowieso niet:

while loops will loop "continuously", and "infinitely".

Dit gebeurt alleen als de conditie waar is. Zelfs voor de standaard void loop() gaat dit niet op. die wordt elke keer opnieuw aangeroepen vanuit main.cpp

Verder zou ik ff de hele sketch hier zetten om te zien wat je nu allemaal doet.

Hoi JevanHa.

Ik vind je vraag erg lastig te lezen, maar na 'm een aantal malen gelezen te hebben, weet ik wel waar jij je in vergist.
Dat ga ik zometeen uitleggen, en je gelijk laten zien hoe je je vragen beter leesbaar kunt (eigenlijk moet) maken.
Namelijk, zet code tussen [code] [/code] tags.
Daarmee word een stukje code in aan apart kader gezet en is het niet langer een stuk van een lange brei tekst.

Jouw idee dat je een if..then..else hebt gecreëerd, is een kwestie van interpretatie.
Hoewel de IDE niet aan interpreteren doet (in plaats daarvan doet ie aan compileren), doet die het wel correct en is jouw interpretatie fout.
Als je dit doet:

void GPS_loop() {
      while (gps.available(gps_port) ) {
        Run_Once(gps.read());
      }
      Serial.print("\nStatus gps_port = "); Serial.print(gps.available(gps_port));
      Serial.print(" X="); Serial.print(x);
      x ++;
}

Dan doe je niet 1 enkele handeling, maar meerdere.
1 van die handelingen, is een voorwaarde stellen; de while.
De volgende handeling wordt uitgevoerd wanneer er aan die eerdere voorwaarde werd voldaan.
Dat stukje staat tussen de {curly braces}, waarvan de eerste { direct komt na het stellen van de voorwaarde.
Daarna volgt er een stukje dat niet aan een voorwaarde is gebonden.
Dat is het stukje dat iets met de seriële verbinding doet, en x verhoogt.

Je lijkt een aantal zaken door elkaar gehaald te hebben.
Want wat jij een loop noemt, is wat bekend staat als een functie.
Die functie moet je ergens vandaan aanroepen, en dan gaat ie doen wat jij erin hebt gezet.
Jij vertaalt (interpreteert) dat schijnbaar anders, of in ieder geval verwacht je er iets anders van.

Als je de functie hebt aangeroepen, dan word dat wat tussen de daarbij behorende { } staat uitgevoerd.
Jij stelt aan 1 van de daar uit te voeren zaken een voorwaarde, namelijk dat zolang (while) er iets beschikbaar is, een andere functie moet worden aangeroepen.
En daarna wil je dan nog dat er andere dingen (3 regels) worden gedaan, die dus altijd worden uitgevoerd onafhankelijk van een of andere voorwaarde.

Ik hoop dat ik het je voldoende duidelijk heb uitgelegd, en dat je hiermee het probleem dat je ziet kunt oplossen.

[edit]
Als je tijdens setup of in ieder geval voor void loop () iets doet, dan is dat eenmalig.
Je kijkt dus 1 keer of er iets ter beschikking is.
Tijdens loop kijk je de hele tijd of er al iets beschikbaar is.
Dat is het verschil.
Als je eerst wil wachten tot je iets binnen krijgt, dan moet je je voorwaarde !omkeren.
[/edit]

je sluit de while loop al gelijk dus als er gps available is doe je een read, maar onder de } dat gebeurt altijd, en is dus geen else maar gebeurt ook als de while waar is.

Zoals Nico al zei, post de volledige code. En geef ook aan waar we de bibliotheken die je gebruikt kunnen vinden.

(deleted)

NMEA_Timezone_CET_2.ino (6.54 KB)

Gewoon een nieuw antwoord maken en daar je code in plaatsen.

Als je while niet doorlopen wordt betekent dat dat de allereerste keer de conditie false is.

(deleted)

Geen idee waar je het over hebt met meerdere blokken

Gewoon :wink:

[code]je code hier[/code]

(deleted)

(deleted)

Je moet een keer je post bookmarken.

Ga naar je draadje (topic), klik je naam.
In de nieuwe pagina die wat informatie over je bevat op 'show posts' klikken. De pagina die je dan krijgt bookmarken.

(deleted)

(deleted)

'Bookmarken' is mijn 'vertaling' van toevoegen aan je favorieten. Ik woon de laatste 17 jaar in een land waar engels de voertaal is on bedrijven en dus is mijn nederlands een beetje verroest :wink:

(deleted)

(deleted)

Bookmarken is ook in Nederland gangbaar.

Druk in je browser op ctrl-d, en er opent een dialoog wat en hoe je je bookmark wil maken (bij de browsers die ik ken in ieder geval).
Als je Engelse termen vervelend wind, dan kun je ook het Nederlandse 'favorieten' opzoeken in het menu van je browser.
Veel browsers gebruiken een knop met als icoontje een ster voor deze functie.
Wie weet komt daar sterretje´s naam ook vandaan... ?

De site is traag, zeer instabiel en je moet telkens opnieuw inloggen, omdat de beheerders (dat zijn anderen dan de moderatoren) gewoon zonder meer incapabele !@$&# (<- zelfs dit gaat al niet goed meer) zijn die zitten te experimenteren met een grote live site in plaats eerst een schaduw site te bouwen om te kunnen testen.
Die beheerders rotzooien maar wat aan, maar gebruiken de site (of in ieder geval het forum) zelf niet, en zien daarom de vele klachten die er zijn ook niet.
Pas als je gaat klagen op een github pagina voor de ontwikkeling van deze site (waar normale gebruikers van deze site dus absoluut niets te zoeken hebben), zou het eventueel met een beetje mazzel en niet teveel pech kunnen zijn dat er iemand is die het misschien op zou kunnen pikken en eens kon overwegen of er wellicht eventueel misschien iets aan gedaan moet worden.

MAS3:
De site is traag, zeer instabiel en je moet telkens opnieuw inloggen, omdat de beheerders (dat zijn anderen dan de moderatoren) gewoon zonder meer incapabele !@$&# (<- zelfs dit gaat al niet goed meer) zijn die zitten te experimenteren met een grote live site in plaats eerst een schaduw site te bouwen om te kunnen testen.
Die beheerders rotzooien maar wat aan, maar gebruiken de site (of in ieder geval het forum) zelf niet, en zien daarom de vele klachten die er zijn ook niet.
Pas als je gaat klagen op een github pagina voor de ontwikkeling van deze site (waar normale gebruikers van deze site dus absoluut niets te zoeken hebben), zou het eventueel met een beetje mazzel en niet teveel pech kunnen zijn dat er iemand is die het misschien op zou kunnen pikken en eens kon overwegen of er wellicht eventueel misschien iets aan gedaan moet worden.

karma +1