Servo besturing arduino

Hallo allemaal,

Ik ben sinds twee jaar aan het proberen om een servo te besturen met een arduino.
Dit lukt gedeeltelijk.
Het doel is dat een servo een poppetje van de modelspoorbaan bestuurd.
Bijvoorbeeld een poppetje met een bezem, hark, hamer, o.i.d.
De servo moet dan gestart worden met een druktoets, waarna de servo een kort programma moet doorlopen. De snelheid en draaihoek moet een beetje variëren. Dus het poppetje doet de hamer langzaam omhoog en snel omlaag. Een keer de arm heel hoog de andere keer iets lager.
Ook het "uitschakelen" van de servo als hij in rust is lukt mij niet.

Wat ik tot nu toe heb is dat de servo start zodra er stroom op komt en aan een stuk doorgaat.
Ik zou hem graag hier willen posten maar de software staat op mijn andere PC.
Is er iemand die mij hier kan en wil helpen?
Na twee jaar ben ik er wel klaar mee.
LED's laten branden in een patroon is geen probleem, maar servo's vooralsnog wel.

Ter info, het zijn chinese arduino's en servo's.
Geen idee of dit iets uitmaakt.

Ik hoop dat iemand een simpel programma kan maken.
Wellicht zie ik dan wat ik fout doe.

2 jaar om een servo heen en weer te laten gaan? Wow :-)

Voor Arduino zijn servo libraries beschikbaar voor zover ik weet (zelf niets mee gedaan nog). Een Arduino boardje kan PWM signalen genereren waarmee je een servo aanstuurt. Die library doet eigenlijk alles voor je. Gewoon een functie aanroepen met de hoek of zo.
Wat is precies de moeilijkheid waar je zo lang mee worstelt?

Even googlen: https://www.arduino.cc/en/reference/servo had je al gezien? De functie roep je met de hoek aan. Simpeler wordt het niet :-)

[Bericht gewijzigd door flipflop op 18 maart 2017 09:27:56 (16%)]

"We cannot solve our problems with the same thinking we used when we created them" - Albert Einstein

Nouja, een deel van het probleem zal daarin zitten datje bij een servo eigenlijk alleen de positie kan opgeven. Om dus een "langzaam omhoog" te doen, moet je en serie posities opgeven waardoor de juiste beweging ontstaat. En dat wordt gecompileerd door de eigenschappen van de servo: die heeft een deadtime (dode zone) en ook wat speling.

Begin eerst eens simpel:

code:


void loop (void ) 
{
  int pos;

  for (pos = 0; pos<255;pos++) {
     servo_setpos (pos); 
     delay (20);
  }

  for (pos = 255; pos>0;pos--) {
     servo_setpos (pos); 
     delay (20);
  }
}

Gewoon de boel heen en weer laten gaan.

De delay 20 is omdat de servo toch geen nieuwe positie kan krijgen binnen 20ms. En ik heb niet opgezocht hoe je een servo een positie opgeeft. Dat zul je zelf moeten doen en invullen.

Dan is de volgende opdracht: Zorg dat ie sneller gaat. Maar aan de "delay (20)" mag je niet zitten, ik heb hierboven uitgelegd waarom dat geen zin heeft.

four NANDS do make a NOR . Kijk ook eens in onze shop: http://www.bitwizard.nl/shop/