Pages: [1]   Go Down
Author Topic: Servo Steuern  (Read 1016 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 4
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hallo zusammen,

ich habe ein StarterKit von Watterotts. Dabei war unter anderem ein Servo und ein Arduino UNO.

Ich bin jetzt dabei ein bisschen mit den einzelnen Komponenten rumzutesten.
LEDs , Buttons und Potis kann ich jetzt verwendet.
Den Servo eigentlich auch.
Jetzt versuche ich, den Servo, per Tastendruck in eine richtung zu "fahren"....
Ich weiß nicht genau, wie ich es lösen kann...

While(button)

{
servo.write(1);
}

So würde der Servo nur einma durchlaufen...

Wie kann ich den Servo aber solange laufen lassen, bis ich den Taster los lasse..

Gruß
Logged

Forum Moderator
BZ (I)
Online Online
Brattain Member
*****
Karma: 234
Posts: 20196
+39 349 2158303
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Du mußt den Wert erhöhen-vermindern, den Du an den Servo übergibst. Der Wert entspricht dem Drehwinkel des Servos.

also sowas in der Richtung:

Code:
While(button)
{
if(winkel <180) winkel++;
servo.write(winkel);
}

Grüße Uwe
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 4
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hallo,

ich bekomme es irgendwie nicht hin ...

Ich hab folgendes:
#include <Servo.h>
 
Servo myservo;  // create servo object to control a servo
                // a maximum of eight servo objects can be created

 

const int buttonPin = 3;
const int ledPinrt =  2;
int winkel = 0;
int buttonState = 0;

void setup()
{
  myservo.attach(9);  // attaches the servo on pin 9 to the servo object
  pinMode(ledPinrt, OUTPUT);
  pinMode(buttonPin, INPUT);
 
}


void loop()
{
buttonState = digitalRead(buttonPin);


while(buttonstate)

{
if(winkel < 180)

{
winkel++;

servo.write(winkel);
}


}
}

Aber irgendwie rührt sich nichts...
Logged

Heidelberg
Offline Offline
Full Member
***
Karma: 1
Posts: 207
Arduino rocks
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Ja was nun ?

buttonstate oder buttonState ? smiley-wink Variablen sind Case Sensitive
Logged

 

Offline Offline
Newbie
*
Karma: 0
Posts: 4
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hey,

ich habe den oberen Code aus meinem File abkopiert, den unteren Code im Thread geschrieben.. Daher der Unterschied. Ich habe in dem Moment nicht darauf geachtet.
Dennoch tut sich nichts smiley
Logged

Forum Moderator
BZ (I)
Online Online
Brattain Member
*****
Karma: 234
Posts: 20196
+39 349 2158303
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Was df6ih sagen wollte ist, daß die Variable "buttonState" eine andere Variable ist als "buttonstate"
Versuch mal einige serial.print() einzufügen und Dir den Zustand der Variablen auf dem Terminal auszugeben. So merkst Du woran es fehlt.
Füge auch ein delay() in die While Schleife ein, da ansonsen die Schleife in 0,1 Sekunden auf 180 gezählt hat.
Grüße Uwe
Logged

Meran/BZ/IT
Offline Offline
Full Member
***
Karma: 0
Posts: 184
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hallo
Wenn Dein Servo bereits den Wert 180 erreicht hat, tut sich nichts mehr, da Du ja nur die Abfrage für <180 definiert hast.
Gruß Reinhard
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 4
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Okay,

aber ein Servo kann sich schon immer weiter drehen?

Also zum Beispiel wie ein Antrieb eines Autos oder so?
Logged

NRW
Offline Offline
Sr. Member
****
Karma: 1
Posts: 372
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Nur wenn du es umbaust!
Du müßtest das Poti ausbauen und mit Wiederständen überbrücken
google mal nach Servo hack
Logged

Munich/Germany
Offline Offline
God Member
*****
Karma: 9
Posts: 642
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Okay,

aber ein Servo kann sich schon immer weiter drehen?

Also zum Beispiel wie ein Antrieb eines Autos oder so?

Servos sind so konzipiert, dass sie in einem bestimmten Winkelbereich eine angegebene Position (möglichst) genau anfahren können. Der Winkelbereich ist in der Regel auf 180 bzw. 270 Grad beschränkt. Einige wenige Servos können auch 9 bis 10 volle Umdrehungen anfahren (Spezialservos die meist als Seilwinden für Segelschiffe verwendet werden), das wars aber dann.
Wie MueThoS schon geschrieben hat, kannst Du den Servo auf endlosbetrieb umbauen. Damit verlierst Du aber die Positioniermöglichkeit.
Logged

_______
Manfred

Pages: [1]   Go Up
Jump to: