Go Down

Topic: Zwei Servos ansteuern (Read 1 time) previous topic - next topic

Ithen

Hallo,

ich habe folgendes Problem.
Ich möchte zwei Servos ansprechen können.
Nachdem ich mich durch sämtliche Referenzen gewühlt habe, melde ich mich hier mit meinem Anliegen, da ich nicht weitergekommen bin.
Wenn ich die Befehlszeilen zur Ansteuerung des zweiten Servos auskommentiere, funktioniert der erste Servo wie er soll.

Mein bisheriger Code verursacht diverse Fehler:
Code: [Select]
#include <Servo.h>

Servo servo1;
Servo servo2;                

int servo_pos1 = 0;  
int servo_pos2 = 0;  

int incomingByte;    

void setup() {
 
  Serial.begin(9600);

   servo1.attach(10);
   servo2.attach(9);
   servo1.write(0);    
   servo2.write(0);
}

void loop() {
 
  if (Serial.available() > 0) {
    incomingByte = Serial.read();
       if (incomingByte == 'a') {                  
   servo_pos1 = 179;
   servo_pos2 = 179;
   servo1.write(servo_pos1);              
   servo2.write(servo_pos2);      
   delay(20);                      
    }
   
    if (incomingByte == 'd') {                      
   servo_pos1 = 0;
   servo_pos2 = 0;
   servo1.write(servo_pos1);              
   servo2.write(servo_pos2);                  
   delay(20);                        
    }
  }
}
]

Die Fehlermeldung:

Code: [Select]
Error inside Serial.serialEvent()
java.io.IOException: Bad file descriptor in nativeavailable
     at gnu.io.RXTXPort.nativeavailable(Native Method)
     at gnu.io.RXTXPort$SerialInputStream.available(RXTXPort.java:1532)
     at processing.app.Serial.serialEvent(Serial.java:215)
     at gnu.io.RXTXPort.sendEvent(RXTXPort.java:732)
     at gnu.io.RXTXPort.eventLoop(Native Method)
     at gnu.io.RXTXPort$MonitorThread.run(RXTXPort.java:1575)


Ich weiß leider nicht, was ich machen kann, um mein Problem zu lösen.
Hoffentlich kann mir jemand helfen.

Grüße Ithen

dh1ao

Hallo Ithen

ich habe Dein Programm mal ausprobiert und ich bekomme diese Meldung nicht. Ich habe leider keine Servos hier, aber daran wir es wohl nicht liegen.

Welche IDE benutzt Du? 017? Windoof, Mac oder Linux?

LG
Peter

Ithen

Hi,
ja ich benutze 0017 auf Windows 7.
Also wo ich gerade Windows 7 schreibe, wäre das ja auch ne mögliche Fehlerquelle, obwohl meine anderen Sketches einwandtfrei funktionierten.
Achso, das Compilieren funktioniert auch ohne Probleme, genauso wie das Uploaden, naja sobald er dann allerdings die Servos anspricht, kommt die Fehlermeldung.
Bin jetzt soweit vorgedrungen, dass sobald servo2.attach(9); nicht mehr auskommentiert ist, der Fehler auftritt. Auch wenn ich alles andere für den 2. Servo rausgenommen hab.

Danke auch für deine Antwort  :)

LG Ithen

Ithen

So,
ich hab alles unter Win XP ausprobiert und habe das gleiche Verhalten.
Was mir noch aufgefallen ist, dass die Verbindung zwischen PC und dem Arduino während der Fehler auftritt getrennt wird.

mem

If everything works ok with one or the other servo connected and you only have a problem when both are connected then you should try to power the servos from an external power source, for example using four AA batteries.

There are pictures in this thread showing how to connect a battery pack :
http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1250070061

Ithen

Thanks a lot,
now its working.
best regards, Ithen

Go Up