Auteur Topic: Arduino servo aansturing  (gelezen 3861 keer)

0 leden en 1 gast bekijken dit topic.

Offline Michel Bikkel

  • Super Modelspoorder
  • ******
  • Berichten: 542
  • Thanked: 24 times
  • Geslacht: Man
Arduino servo aansturing
« Gepost op: 7 mei 2022, 18:26:53 »
Hoi, Iemand die mij kan helpen met een aansturing van een Servo?
Ik heb onderstaande sketch gevonden. Deze wil ik aanpassen zodat de servo 1x heen en weer gaat met een druk op een knop.
nu gaat de servo constant heen en weer en dat wil ik niet. ik snap echter niets van de programeer taal...

#include <Servo.h>

Servo myservo;  // create servo object to control a servo
// twelve servo objects can be created on most boards

int pos = 0;    // variable to store the servo position

void setup() {
  myservo.attach(9);  // attaches the servo on pin 9 to the servo object
}

void loop() {
  for (pos = 0; pos <= 180; pos += 1) { // goes from 0 degrees to 180 degrees
    // in steps of 1 degree
    myservo.write(pos);              // tell servo to go to position in variable 'pos'
    delay(15);                       // waits 15ms for the servo to reach the position
  }
  for (pos = 180; pos >= 0; pos -= 1) { // goes from 180 degrees to 0 degrees
    myservo.write(pos);              // tell servo to go to position in variable 'pos'
    delay(15);                       // waits 15ms for the servo to reach the position
  }
}
Groet Mies

Offline iTom

  • Super Modelspoorder
  • ******
  • Berichten: 5.242
  • Thanked: 139 times
  • Geslacht: Man
  • Blijf braaf, gezond en modelbouwen.
Re: Arduino servo aansturing
« Reactie #1 Gepost op: 8 mei 2022, 12:20:44 »
Michel,

kan je niet beter overstappen naar de DCCNext van ArCoMoRa.
Daarmee is het programmeren en configureren veel eenvoudiger en je kan er 16 servo's op aansluiten maar je kan er ook verlichting mee aansturen. 
Verlichting is bijv. langzaam aan en langzaam uit of een bepaalde tijd en dan weer uit.
Ik stuur er zelfs MP3 spelers mee die via speakers onder de baan leuke geluiden weergeven zoals blaffende honden (bijten niet :-)) diesel tanken enz. enz.

Tegenwoordig is de DCCNext kant en klaar te bestellen en als ik er mee overweg kan dan kan jij het ook  ;)

https://www.arcomora.com/dccnext/
ROCO Proline zonder bedding: DR5000 DIGIKEIJS/LocoNet, DCC: iTrain 5 pro:Rosoft s88: h0

Offline Rob

  • Forumbeheerder
  • Super Modelspoorder
  • *****
  • Berichten: 2.566
  • Thanked: 153 times
  • Geslacht: Man
  • Rob zegt: denk aan morgen, doe vandaag.
Re: Arduino servo aansturing
« Reactie #2 Gepost op: 8 mei 2022, 15:08:38 »
Hoi Mies,

Ik heb de sketch iets aangepast. Niet getest, maar het zou moeten werken  ::)
Op pin 8 zit een drukknop (maakcontact) naar de GND
Op pin 9 blijft de servo.

Het "while" statement blijft wachten zolang de pin 8 "hoog" is, d.w.z. de servo doet niets zolang de knop niet wordt ingedrukt.
Daarna gaat de servo een keer heen en weer en wordt er weer gewacht
#include <Servo.h>

Servo myservo;  // create servo object to control a servo
// twelve servo objects can be created on most boards

#define servopin  9   // pin for servo
#define buttonpin 8   // pin for button

int pos = 0;    // variable to store the servo position

void setup() {
  myservo.attach(servopin);       // attaches the servo on pin 9 to the servo object
  pinMode (buttonpin, OUTPUT);    // button pin on input
  digitalWrite (buttonpin, HIGH); // activate pullup resistor on button pin
}

void loop() {
  while (digitalRead (buttonpin) == HIGH ) {
    // do nothing, but wait untill button pin gets low
  }
 
  for (pos = 0; pos <= 180; pos += 1) { // goes from 0 degrees to 180 degrees
    // in steps of 1 degree
    myservo.write(pos);              // tell servo to go to position in variable 'pos'
    delay(15);                       // waits 15ms for the servo to reach the position
  }
  for (pos = 180; pos >= 0; pos -= 1) { // goes from 180 degrees to 0 degrees
    myservo.write(pos);              // tell servo to go to position in variable 'pos'
    delay(15);                       // waits 15ms for the servo to reach the position
  }
}

succes,

Rob
Ergens in (West) Duitsland tussen 1960 en 1970 | gelijkstroom analoog, met geluid | kleine vaste baan en uitbreiding met modulebaan.
Nu vooral bezig met van alles en nog wat...

Offline Michel Bikkel

  • Super Modelspoorder
  • ******
  • Berichten: 542
  • Thanked: 24 times
  • Geslacht: Man
Re: Arduino servo aansturing
« Reactie #3 Gepost op: 8 mei 2022, 17:12:31 »
Dank Rob,

werkt perfect  :)
Groet Mies

Offline Michel Bikkel

  • Super Modelspoorder
  • ******
  • Berichten: 542
  • Thanked: 24 times
  • Geslacht: Man
Re: Arduino servo aansturing
« Reactie #4 Gepost op: 8 mei 2022, 17:36:40 »
Hoi Rob,

is het moeilijk op deze sketch aan te passen met een extra druk knop?
knop 1 servo naar links, knop 2 servo naar rechts?

ik heb al wat zitten proberen maar snap er eigenlijk niets van...

Groet Mies

Offline Rob

  • Forumbeheerder
  • Super Modelspoorder
  • *****
  • Berichten: 2.566
  • Thanked: 153 times
  • Geslacht: Man
  • Rob zegt: denk aan morgen, doe vandaag.
Re: Arduino servo aansturing
« Reactie #5 Gepost op: 8 mei 2022, 17:46:37 »
Hoi Mies.

Mooi dat t werkt.

Met 2 knoppen: bedoel je dan met knop A helemaal naar links, en met knop B helemaal naar rechts? En als het servo al naar links staat, dan doet knop A ook niks (en hetzelfde voor knop B als het servo al naar rechts staat).

Of is één knop ook goed: 1 druk is helemaal naar links, nog een druk weer helemaal naar rechts, enz?

Rob
Ergens in (West) Duitsland tussen 1960 en 1970 | gelijkstroom analoog, met geluid | kleine vaste baan en uitbreiding met modulebaan.
Nu vooral bezig met van alles en nog wat...

Offline Bert

  • Stationchef
  • ***
  • Berichten: 178
  • Thanked: 12 times
  • Geslacht: Man
Re: Arduino servo aansturing
« Reactie #6 Gepost op: 9 mei 2022, 13:11:17 »
Wat stuur je ermee aan Michel?

Rob, weet ik uit ervaring, kan prima helpen met de sketch.

Zelf ben ik, na een tip van iTom met DCC next begonnen. Erg eenvoudig en lage kosten. Met het voordeel dat je de snelheid van de servo ook goed kan instellen en eventueel instelbaar kunt bouncen ( klapperen van een deur)

Offline Michel Bikkel

  • Super Modelspoorder
  • ******
  • Berichten: 542
  • Thanked: 24 times
  • Geslacht: Man
Re: Arduino servo aansturing
« Reactie #7 Gepost op: 9 mei 2022, 16:51:38 »

Of is één knop ook goed: 1 druk is helemaal naar links, nog een druk weer helemaal naar rechts, enz?

Dit zou mooi zijn Rob  :)

Groet Mies

Offline iTom

  • Super Modelspoorder
  • ******
  • Berichten: 5.242
  • Thanked: 139 times
  • Geslacht: Man
  • Blijf braaf, gezond en modelbouwen.
Re: Arduino servo aansturing
« Reactie #8 Gepost op: 9 mei 2022, 18:24:39 »
Michel, toch wel jammer dat je geen reacties plaatst op de reactie van Bert en van mij.
ROCO Proline zonder bedding: DR5000 DIGIKEIJS/LocoNet, DCC: iTrain 5 pro:Rosoft s88: h0

Offline Rob

  • Forumbeheerder
  • Super Modelspoorder
  • *****
  • Berichten: 2.566
  • Thanked: 153 times
  • Geslacht: Man
  • Rob zegt: denk aan morgen, doe vandaag.
Re: Arduino servo aansturing
« Reactie #9 Gepost op: 9 mei 2022, 20:12:22 »
Hoi mies,

Hier dan met drukken op één knop: drukken - heen, drukken - terug, weer drukken - heen, enz.

#include <Servo.h>

Servo myservo;  // create servo object to control a servo
// twelve servo objects can be created on most boards

#define servopin   9   // pin for servo
#define buttonpin  8   // pin for button
#define slowdown  15   // delay (ms) between each degree in servo turn: the higher the number, the slower the servo turns.

int pos = 0;    // variable to store the servo position

void setup() {
  myservo.attach(servopin);       // attaches the servo on pin 9 to the servo object
  pinMode (buttonpin, OUTPUT);    // button pin on input
  digitalWrite (buttonpin, HIGH); // activate pullup resistor on button pin
}

void loop() {
  while (digitalRead (buttonpin) == HIGH ) {
    // do nothing, but wait untill button pin gets low
  }
  for (pos = 0; pos <= 180; pos += 1) { // goes from 0 degrees to 180 degrees
    // in steps of 1 degree
    myservo.write(pos);              // tell servo to go to position in variable 'pos'
    delay(slowdown);                       // waits for the servo to reach the position
  }

  while (digitalRead (buttonpin) == HIGH ) {
    // do nothing, but wait untill button pin gets low
  } 
  for (pos = 180; pos >= 0; pos -= 1) { // goes from 180 degrees to 0 degrees
    myservo.write(pos);              // tell servo to go to position in variable 'pos'
    delay(slowdown);                       // waits for the servo to reach the position
  }
}

Ik heb er ook een definitie in gezet om snelheid waarmee de servo draait in te kunnen stellen. Hoe groter het getal, des te langzamer de servo draait:
#define slowdown  15   // delay (ms) between each degree in servo turn: the higher the number, the slower the servo turns.

groet,
Rob
Ergens in (West) Duitsland tussen 1960 en 1970 | gelijkstroom analoog, met geluid | kleine vaste baan en uitbreiding met modulebaan.
Nu vooral bezig met van alles en nog wat...

Offline GéJé

  • Super Modelspoorder
  • ******
  • Berichten: 1.672
  • Thanked: 52 times
  • Geslacht: Man
  • Gert-Jan
Re: Arduino servo aansturing
« Reactie #10 Gepost op: 9 mei 2022, 21:04:25 »
Michel, toch wel jammer dat je geen reacties plaatst op de reactie van Bert en van mij.

Misschien omdat Michel vroeg om advies over Arduino en niet over de aanschaf van een totaal ander systeem.  ::)

Offline iTom

  • Super Modelspoorder
  • ******
  • Berichten: 5.242
  • Thanked: 139 times
  • Geslacht: Man
  • Blijf braaf, gezond en modelbouwen.
Re: Arduino servo aansturing
« Reactie #11 Gepost op: 9 mei 2022, 21:14:05 »
DCCNext is ook Arduino maar dat weet niet iedereen.
ROCO Proline zonder bedding: DR5000 DIGIKEIJS/LocoNet, DCC: iTrain 5 pro:Rosoft s88: h0

Offline Bert

  • Stationchef
  • ***
  • Berichten: 178
  • Thanked: 12 times
  • Geslacht: Man
Re: Arduino servo aansturing
« Reactie #12 Gepost op: 9 mei 2022, 21:14:25 »
]

Misschien omdat Michel vroeg om advies over Arduino en niet over de aanschaf van een totaal ander systeem.  ::)
Het lijkt me niet verkeerd dat een alternatief gesuggereerd wordt. Ik was er toen erg blij mee. We zijn hier om elkaar te helpen toch…verder was ( ben) ik benieuwd naar de toepassing.
Maar ik lig er niet wakker van hoor en Rob heeft zoals gebruikelijk weer prima geholpen.
The following users thanked this post: iTom

Offline Michel Bikkel

  • Super Modelspoorder
  • ******
  • Berichten: 542
  • Thanked: 24 times
  • Geslacht: Man
Re: Arduino servo aansturing
« Reactie #13 Gepost op: 31 mei 2022, 17:51:17 »
Michel, toch wel jammer dat je geen reacties plaatst op de reactie van Bert en van mij.

Mannen, tijdje niet online geweest vandaar geen reactie. Ik heb de sketch van Rob gebruikt en werkt nu prima.
Ik gebruik de sturing voor een project dat helemaal niets met mn treinbaan te maken heeft.

Ik mag er verder niets over vertellen maar komt later dit jaar op TV.
Groet Mies

Offline iTom

  • Super Modelspoorder
  • ******
  • Berichten: 5.242
  • Thanked: 139 times
  • Geslacht: Man
  • Blijf braaf, gezond en modelbouwen.
Re: Arduino servo aansturing
« Reactie #14 Gepost op: 31 mei 2022, 18:14:01 »
Aha, de G.K.T.C.  :D leuk, ga zeker weer kijken.
ROCO Proline zonder bedding: DR5000 DIGIKEIJS/LocoNet, DCC: iTrain 5 pro:Rosoft s88: h0
The following users thanked this post: Michel Bikkel

Offline Rob

  • Forumbeheerder
  • Super Modelspoorder
  • *****
  • Berichten: 2.566
  • Thanked: 153 times
  • Geslacht: Man
  • Rob zegt: denk aan morgen, doe vandaag.
Re: Arduino servo aansturing
« Reactie #15 Gepost op: 31 mei 2022, 21:21:32 »
Nou Mies,

Je maakt het wel spannend... Ben benieuwd en geduldig...

Rob
Ergens in (West) Duitsland tussen 1960 en 1970 | gelijkstroom analoog, met geluid | kleine vaste baan en uitbreiding met modulebaan.
Nu vooral bezig met van alles en nog wat...