forloop maken

Arduino specifieke Software
Berichten: 1
Geregistreerd: 29 Mei 2018, 20:42

forloop maken

Berichtdoor woutavans » 29 Mei 2018, 20:51

Hallo allemaal,

Voor mijn projectje gebruik ik een ultrasonic afstands sensor en een servo. Dit is de bedoeling: als de afstand groter > dan 6 is moet de servo niets doen. Als de afstand kleiner < dan 6 is moet de servo van 90 naar 180 gaan en dit blijven herhalen totdat de afstand weer groter dan 6 wordt.

Dit is wat ik tot nu toe heb. Het werkt wel alleen wordt de else (90 naar 180) nog niet herhaald. Volgens mij heb ik hier een forloop voor nodig maar ik heb geen idee waar ik zou moeten beginnen.

if (distance > 6){
Servo.write(0);
}

else{
Servo.write(90);
delay(10);
Servo.write(180);
}

Groetjes,

Wout

Advertisement

Gebruikers-avatar
Berichten: 1769
Geregistreerd: 06 Aug 2016, 01:03

Re: forloop maken

Berichtdoor Koepel » 31 Mei 2018, 07:35

Hallo, en welkom op dit forum.

Er ontbreekt iets... Dat is ontspannen achterover leunen en de structuur van de code bedenken.
Je kunt een schets maken op papier, of proberen het voor je te zien.
Je mag het zelfs met woorden beschrijven.

Je schrijft dat als de afstand groter dan 6 is, dat de servo motor dat niets moet doen. In de sketch laat je echter de servo naar 0 graden gaan. Dat is wel iets doen. Daarom is een goede beschrijving belangrijk.

Wanneer je de afstand hebt gemeten, wil je daarna één keer die beweging maken ?
Is het goed als je tijdens die beweging niets anders kunt doen ? (tijdens een delay kun je geen andere code uitvoeren)

Dan krijg je in de loop() misschien dit:
Code: Alles selecteren
void loop()
{
  int afstand = WatIsDeUltraSonicAfstand();
  if( afstand < 6)
  {
    DoeEenmaligDeServoBeweging();
  }
}

void DoeEenmaligDeServoBeweging()
{
  Servo.write( 90);
  delay( 500);
  Servo.write( 180);
  delay( 500);        // geef servo motor de tijd om naar 180 te gaan
}


Je geeft de servo motor 10 ms om van 90 naar 180 graden te gaan. Is dat niet wat snel ?
In de sketch weet je niet wanneer de servo motor bij 180 graden is. Het hangt van de gekozen servo motor af hoe snel die is.
Daarom heb ik er 500 ms van gemaakt. En ik geef de servo ook 500 ms de tijd om naar de 180 graden te gaan.

Wij geven er de voorkeur aan als je de hele sketch laat zien. Daar heeft iemand zelfs een website voor gemaakt: http://snippets-r-us.com/. Je kunt een sketch tussen code tags plaatsen. Dat is [ code ] en [ / code ], maar dan zonder de spaties. Er is daar ook een knop "Code" voor of "Select a Syntax" en dan "C++".

Terug naar Arduino software

Wie is er online?

Gebruikers in dit forum: Bing [Bot] en 1 gast