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


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  Brauch hilfe bei einnem Sketch MrMagoo 10 268 11.02.2018 13:49
Letzter Beitrag: hotsystems
  Hilfe bei diesen Fehler MrMagoo 22 500 06.02.2018 20:03
Letzter Beitrag: hotsystems
Question Hilfe bei Programmierung Niklas 15 510 02.02.2018 12:55
Letzter Beitrag: Niklas
  Neulig sucht Hilfe bei Programmierung der Spannungsprotokollierung Matej 42 1.911 01.02.2018 18:11
Letzter Beitrag: Matej
  Hilfe!!! bei 7-Segment Anzeige Markus2018 9 493 31.01.2018 21:14
Letzter Beitrag: Tommy56
  Prüfung eines Drucksensors mit Hilfe des Arduino r4c3 17 2.503 10.11.2017 22:24
Letzter Beitrag: r4c3
  Suche Hilfe für den Fehler in der Datei Holzwurm56 5 521 01.11.2017 14:26
Letzter Beitrag: Holzwurm56
  Hilfe bei Einschaltverzögerung gesucht Ingo 9 891 28.10.2017 19:04
Letzter Beitrag: Tommy56
Photo Hilfe bei meinem Arduino Projekt Niklas 10 850 23.09.2017 21:05
Letzter Beitrag: Niklas
  Ublox Neo 6M und Nextion ! Bitte um Hilfe. b3ta 19 1.780 13.07.2017 14:52
Letzter Beitrag: Tommy56

Gehe zu:


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