Go Down

Topic: While loop (Read 346 times) previous topic - next topic

Student_R0654504

Hallo


Ik ben student Bachelor elektromechanica, en momenteel ben ik bezig met mijn stageproject.
Ik heb een vraagje in verband met Arduino.
het Arduino programma herhaald telkens zijn programma in loops, is het ook mogelijk om te zeggen dat hij deze loop 1x herhaald.

Ik weet dat het werkt met while(1){} in je loop te plaatsen. Maar dit werkt niet naar behoren, de loop wordt letterlijk 1x herhaalt en dan nooit meer. En voor mijn programma zou hij zijn loop 1x moeten herhalen als hij voldoet aan zijn voorwaarde.

Dus
"START" --> 1x loop servomotor doorlopen --> "STOP"
duw ik terug op start weer 1 x loop servomotor doorlopen.

in de bijlage kan u programma's vinden met en zonder de while()}

Alvast bedankt!!

GijKieken

Plaats alles in setup dan wordt het maar 1 keer uitgevoerd.

MAS3

Hallo Student_R0654504, welkom.

Het is heel belangrijk dat je een goede analyse maakt van je probleem.
Dat is nu niet gebeurd.
Daarom kom je nu zelf met een probleem waar je een oplossing voor vraagt, terwijl dat niet het probleem is waar je mee te maken hebt.
Dat staat bekend als een XY probleem, google daar maar eens naar.

Jouw probleem is helemaal niet dat je de inhoud van loop() maar 1 keer wil doorlopen.
Je wil je servo een bepaalde beweging laten maken onder bepaalde voorwaarden.
Dus moet je die voorwaarden verwerken in loop(), en de servobeweging alleen laten uitvoeren wanneer aan de juiste voorwaarden word voldaan.

Heel mooi dat je die servobeweging in een eigen functie() hebt gezet.
Die functie word telkens aangeroepen als gezien word dat de knop op pin 4 is ingedrukt.
Maar dat is niet alles wat je wil weten.
En omdat je niet alles controleert, gaat de uitvoering van jouw sketch anders als jij had gehoopt.

Onder aan dit antwoord staat in mijn handtekening de tip om eens naar de "blink without delay" voorbeeldsketch te kijken, die je bij je IDE hebt gekregen.
Ik heb er ook een kort stukje over geschreven dat vastgepind staat bovenaan dit Nederlandstalige gedeelte van het forum.
Lees dat maar eens door en volg de tips daarin.
Ik herhaal hier nog maar eens dat die sketch je veel meer moet leren dan je in de eerste instantie zou verwachten.
Maar dan moet je wel de lesstof begrijpen die er in zit.

Leer om in je sktech te onthouden wat je aan het doen bent, en wat je al hebt gedaan.
Dat lost jouw probleem op.

De tekst in mijn handtekening staat er met goede reden (dus ook de andere tips).
Have a look at "blink without delay".
Did you connect the grounds ?
Je kunt hier ook in het Nederlands terecht: http://arduino.cc/forum/index.php/board,77.0.html

shooter

dat hele while kan eruit.
in de compiler zit dat er al in.
verder moeten er eventueel wel haakjes en zo omheen.
while(waarde==1);// en dat moet eigenlijk true zijn
je moet in de loop of met een interupt op pin2 wel in de gaten houden dat je eerst de knop hebt moeten loslaten
want als je nu de knop vasthoudt gaat de cyclus gewoon door.
je bent trouwens goed bezig met functies en zo.
lees ook het verhaal van mas3.
paul deelen
shooter@home.nl
making controls with codesys PLC and arduino

sterretje

Een beetje als mosterd na de maaltijd ;)

Je programma controleert of een pin hoog is; dat is niet wat je wilt. Je wilt controleren wanneer de pin verandert van laag naar hoog. De IDE komt met een state change detectie voorbeeld; kiijk daar eens naar.
If you understand an example, use it.
If you don't understand an example, don't use it.

Electronics engineer by trade, software engineer by profession. Trying to get back into electronics after 15 years absence.

Go Up