INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.

Antwort schreiben 
 
Themabewertung:
  • 0 Bewertungen - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Hilfe bei servoansteuerung
25.01.2016, 15:36
Beitrag #1
Hilfe bei servoansteuerung
Hallo zsammen, ich binneu hier im Forum und auch neu bei arduino.
Ich möchte für meinen Lokschuppen folgendes Programm basteln: Es sollen maximal 5 Servos auf Schalterdruck ihre Position einnehmen (also Schalter = low..Pos 1 Schalter = high....Pos2). Soweit so gut. Die Schwierigkeit, die ich bis jetzt nicht lösen konnte, ist, dass der Servo jeweils in seine Position schleichen soll (ca. 3..5 sec). Alles was ich bis jetzt gefunden habe, ist: der Servo fährt in die eine Position und dann langsam wieder zurück (oder umgekehrt), aber kein Verweilen am Ende.
Ich füge mal ein Beispiel an. Vielleicht kann mir ja jemand auf die Sprünge helfen.
Gruß aus Hamburg


Angehängte Datei(en)
.ino  servosteuerung.ino (Größe: 578 Bytes / Downloads: 17)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
25.01.2016, 17:33
Beitrag #2
RE: Hilfe bei servoansteuerung
(25.01.2016 15:36)bramfelderuser schrieb:  Hallo zsammen, ich binneu hier im Forum und auch neu bei arduino.
Ich möchte für meinen Lokschuppen folgendes Programm basteln: Es sollen maximal 5 Servos auf Schalterdruck ihre Position einnehmen (also Schalter = low..Pos 1 Schalter = high....Pos2). Soweit so gut. Die Schwierigkeit, die ich bis jetzt nicht lösen konnte, ist, dass der Servo jeweils in seine Position schleichen soll (ca. 3..5 sec). Alles was ich bis jetzt gefunden habe, ist: der Servo fährt in die eine Position und dann langsam wieder zurück (oder umgekehrt), aber kein Verweilen am Ende.
Ich füge mal ein Beispiel an. Vielleicht kann mir ja jemand auf die Sprünge helfen.
Gruß aus Hamburg

Hallo bramfelderuser,
Herzlich willkommen.

Habe das Programm etwas angepasst. Reicht das so um auf die Sprünge zu kommen?
Code:
#include <Servo.h>
int pos = 0;
bool dir = false;
int sw1 = 4;
int sw2 = 5;
Servo myservo;

void setup()
{
  myservo.attach(9); // attaches the servo on pin 9 to the servo object
  pinMode(sw1,INPUT_PULLUP);
  pinMode(sw2,INPUT_PULLUP);
  myservo.write(pos);
}

void loop()
{
  
  if (!dir && !digitalRead(sw1) ) {
    dir = true;
    for(pos = 0; pos < 89; pos++) {
      myservo.write(pos);
      delay(50);
    }
  }
  
  if (dir && !digitalRead(sw2) ) {
    dir = false;
    for(pos = 89; pos >= 0; pos--) {
      myservo.write(pos);
      delay(50);
    }
  }
  
}

Gruß
Arne

ExclamationMit zunehmender Anzahl qualifizierter Informationen bei einer Problemstellung, erhöht sich zwangsläufig die Gefahr auf eine zielführende Antwort.Exclamation
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
25.01.2016, 17:38 (Dieser Beitrag wurde zuletzt bearbeitet: 25.01.2016 17:44 von arduinofan.)
Beitrag #3
RE: Hilfe bei servoansteuerung
Nimm diese mit dem MsTimer2.h, musst den kompletten Ordner in die libraries packen von der Arduino IDE.
Der Timer ist präziser.

Gruss


Code:
#include <Servo.h>
#include <MsTimer2.h>

Servo myservo;

#define SERVO1_RIGHT_MAX   116
#define SERVO1_HRIGHT_MAX  104
#define SERVO1_MIDDLE      87
#define SERVO1_LEFT_MAX    62
#define SERVO1_HLEFT_MAX   71

unsigned char angle = 90;

void setup()
{
    myservo.attach(2);              //servo attach to pin2
    myservo.write(90);              //set the angle of servo
    MsTimer2::set(10, SERVO_Write); // 10ms period
    MsTimer2::start();              //the timer timing starts  
}

void loop()
{
    delay(1000);
    angle = SERVO1_HRIGHT_MAX;
    delay(1000);
    angle = SERVO1_RIGHT_MAX;
    delay(1000);
    angle = SERVO1_HRIGHT_MAX;
    delay(1000);
    angle = SERVO1_MIDDLE;
    delay(1000);
    angle = SERVO1_HLEFT_MAX;
    delay(1000);
    angle = SERVO1_LEFT_MAX;
    delay(1000);  
    angle = SERVO1_HLEFT_MAX;
    delay(1000);
    angle = SERVO1_MIDDLE;
    delay(1000);
}

void SERVO_Write(void)
{
    myservo.write(angle);
}


Angehängte Datei(en)
.zip  MsTimer2.zip (Größe: 73,45 KB / Downloads: 20)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  Hilfe: IR Remote Steuerung, MSGEQ7 + RGB-LED Streifen dastob 1 116 14.10.2016 21:40
Letzter Beitrag: hotsystems
Sad Ich brauche Hilfe Prosac 4 230 09.10.2016 18:39
Letzter Beitrag: Prosac
  at24c256 Hilfe Gandalf 6 247 29.08.2016 18:59
Letzter Beitrag: MKc
Smile Progammier Neuling Codeschloss bittet um Hilfe Donalonso 2 284 27.08.2016 18:23
Letzter Beitrag: Binatone
  Hilfe gesucht. Webserver Statsiche und Dynamische HTMl Seite b3ta 11 447 22.08.2016 08:07
Letzter Beitrag: b3ta
  Hilfe: Mega2560 - ENC 28J60 - MYSQL Gandalf 1 178 28.07.2016 16:30
Letzter Beitrag: Gandalf
  Selbstfahrender Roboter Programm änderung hilfe ? arekklone 11 535 06.07.2016 14:59
Letzter Beitrag: Binatone
  Hilfe beim Arduino Shield reimundko 6 452 05.06.2016 11:28
Letzter Beitrag: rpt007
  Brauche etwas Hilfe bei der Umsetzung einer Idee raspido 3 526 23.04.2016 10:26
Letzter Beitrag: rkuehle
  Hilfe bei RTC und SD baron007 21 1.571 13.03.2016 17:36
Letzter Beitrag: hotsystems

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste