Modelbaanbesturing > Elektronische en digitale techniek

Arduino servo aansturing

(1/4) > >>

Michel Bikkel:
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
  }
}

iTom:
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/

Rob:
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

--- Code: ---#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
  }
}

--- Einde van code ---

succes,

Rob

Michel Bikkel:
Dank Rob,

werkt perfect  :)

Michel Bikkel:
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...

Navigatie

[0] Berichtenindex

[#] Volgende pagina

Naar de volledige versie