Show Posts
Pages: [1]
1  International / Deutsch / Re: Servo rattert nach einschalten der Stromversorgung on: February 09, 2013, 10:37:20 am
Hatte ähnliches problem und habe es gelöst in dem ich im setup teil die servo auf 0 "fahren" lasse.
Weiß zwar nicht ob das die eleganteste Lösung ist, aber seit dem ist ruhe beim anschließen der stromquelle und zum start soll sie bei mir eh auf 0 sein.
2  International / Deutsch / Re: Servo defekt oder fehler im Code on: January 29, 2013, 05:07:54 pm
nach vielen Tagen rum probieren hab ich nun den Fehler gefunden, und zwar liegt es doch an den Servos.
mit dem "Test-Programm" unten hab ich raus gefunden das meine Servos nur im Winkel von 20 bis 164 funktionieren, wieso weiß ich nicht !
Sollte jemand vllt. ähnliche Probleme haben , füge ich unten eine Test sketch an mit dem man per PC jeden einzelnen Winkel bzw micro sec. am Servo testen kann.

Jetzt hab ich aber ein neues Problem, und zwar fahren die servo am Anfang bis eine Taste gedrückt wird wild umher. Kann ich das lösen in dem ich einen write befehl in "setup" schreibe ?
Oder gibt es eine andere Möglichkeit ?


Code:
// zoomkat 10-22-11 serial servo test
// type servo position 0 to 180 in serial monitor
// or for writeMicroseconds, use a value like 1500
// for IDE 0022 and later
// Powering a servo from the arduino usually *DOES NOT WORK*.

String readString;
#include <Servo.h>
Servo myservo;  // create servo object to control a servo

void setup() {
  Serial.begin(9600);
  myservo.writeMicroseconds(1500); //set initial servo position if desired
  myservo.attach(7);  //the pin for the servo control
  Serial.println("servo-test-22-dual-input"); // so I can keep track of what is loaded
}

void loop() {
  while (Serial.available()) {
    char c = Serial.read();  //gets one byte from serial buffer
    readString += c; //makes the string readString
    delay(2);  //slow looping to allow buffer to fill with next character
  }

  if (readString.length() >0) {
    Serial.println(readString);  //so you can see the captured string
    int n = readString.toInt();  //convert readString into a number

    // auto select appropriate value, copied from someone elses code.
    if(n >= 500)
    {
      Serial.print("writing Microseconds: ");
      Serial.println(n);
      myservo.writeMicroseconds(n);
    }
    else
    {  
      Serial.print("writing Angle: ");
      Serial.println(n);
      myservo.write(n);
    }

    readString=""; //empty for next input
  }
}
3  International / Deutsch / Re: Servo defekt oder fehler im Code on: January 16, 2013, 06:41:09 pm
Das Problem bei deinem Code ist  das „myservo.write()“ nur einmal pro Tastendruck ausgeführt wird.
Die for-Schleife aus dem Sweep-Beispiel könntest du verwenden und in dein Programm integrieren. Dann kannst du das „delay(600)“ auch wecklassen.

Ist das generell ein Problem ? Ich dachte ich muss die Sache nicht unnötig verkomplizieren bzw mit der "for schleife" bekomm ich es irgendwie nicht hin  smiley
4  International / Deutsch / Re: Servo defekt oder fehler im Code on: January 16, 2013, 05:44:49 pm
Erstmal vielen Dank an die vielen und schnellen antworten ! smiley-mr-green

Quote
Welches Arduino-Board verwendest Du?
Ich verwende eine Duemilanove - Clone - Iteaduino V2.2

Quote
Hast Du das Beispielprogramm das mit der Bibliothek mitgeliefert wird probiert?
Ja hab ich probiert und da funktioniert es. Ich habe nur das gefühl das er nicht von 0° auf 180° fährt sondern ca nur bis 120°. Im Beispiel Sweep wird mit einem for statement gearbeitet, kann ich das vllt. einfach ersetzen nach dem ersten "if" ?

Code:
Wie hast du den Servo denn angeschlossen?
Der Iteaduino hat 13 "Servo interface break outs" da hab ich schon verschieden probiert 3,9 und 13
5  International / Deutsch / Servo defekt oder fehler im Code on: January 16, 2013, 02:02:05 pm
Hallo erstmal,

ich bin im Bereich Arduino noch relativ neu. Aber bisher hab ich alles hinbekommen was ich versucht habe, nun hänge ich aber seit mehreren Tagen an einer Servo Steuerung und weiß nicht mehr weiter bzw. vermute das die Servo defekt ist.
Vllt. kann ja mal jemand über den Code schauen und eventuelle Denkfehler meinerseits aufdecken smiley
Der wechsel zwischen open und close im Serial Monitor klappt, nur die Servo macht keinen mucks!

Schonmal vielen Dank !
Gruß
Brainbug

Code:
/*
  Servo
*/
// Servo Library hinzufügen
#include <Servo.h>

//Erzeugen von Servo
Servo myservo;
// digital pin 3 als Input
int pushButton3 = 3;
int pos = 0;

// These constants angle won't change:
const int open = 180;
const int close = 0;

// the setup routine runs once when you press reset:
void setup() {
  // initialize serial communication at 9600 bits per second:
  Serial.begin(9600);
  // Initialisierung der Servo Pins
  myservo.attach(9);

 
  // Initialisierung Pin 3 als Input:
  pinMode(pushButton3, INPUT);
  digitalWrite(pushButton3, HIGH); // Pull Up Widerstand aktivieren
 
}

void loop() {
 
   if (digitalRead(pushButton3) == HIGH){
    if (pos == close){
    Serial.println("Button gedrueckt und es wird geöffnet");
    myservo.write(open);
    delay(600);
    pos = open;
    }else{
    Serial.println("Button gedrueckt und es wird geschlossen");
    myservo.write(close);
    delay(600);
    pos = close;
    }
   }
  delay(500);
}
Pages: [1]