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: 60)
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

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: 42)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
Sad Hilfe bei 2.4 TFT Display Harry Hirsch 40 1.414 22.04.2018 15:34
Letzter Beitrag: Tommy56
  hilfe bei callback ausgabe per knopfdruck merz 5 173 15.04.2018 14:16
Letzter Beitrag: Tommy56
  Hilfe bei Fehlermeldung TroyPan 3 289 23.03.2018 23:38
Letzter Beitrag: Tommy56
  Hilfe beim skript Devtris 24 1.184 12.03.2018 18:19
Letzter Beitrag: Tommy56
  Hilfe bei einen kleinen Programm FPV 9 826 11.03.2018 20:42
Letzter Beitrag: Tommy56
  Hilfe beim Programmieren Klawino 28 1.383 10.03.2018 13:36
Letzter Beitrag: hotsystems
  Hilfe bei der Programmierung Digitaluhr ,mit Anzeige 32x8 Lora 1 241 10.03.2018 11:44
Letzter Beitrag: hotsystems
  Hold Button - Doppel Klick Hilfe GSA1150 8 575 08.03.2018 16:24
Letzter Beitrag: Tommy56
  Brauch hilfe bei einnem Sketch MrMagoo 10 551 11.02.2018 13:49
Letzter Beitrag: hotsystems
  Hilfe bei diesen Fehler MrMagoo 22 943 06.02.2018 20:03
Letzter Beitrag: hotsystems

Gehe zu:


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