Du darfst die for-Schleife nur solange durchlaufen bis pos==180.
In deinem Programm beginnst du durch das void loop() wieder von neuem mit pos=0
Also vor dem for(.....) noch ein if(pos<180){
Werbung
Du darfst die for-Schleife nur solange durchlaufen bis pos==180.
In deinem Programm beginnst du durch das void loop() wieder von neuem mit pos=0
Also vor dem for(.....) noch ein if(pos<180){
Das wiederholt sich immer noch,ich glaub ich setzte die Klammern falsch.
Kann ich nicht einfach eine Abbruchbedingung einfügen (http://www.arduino-tutorial.de/2010/06/schleifen/)?Code:#include <Servo.h> Servo myservo; // create servo object to control a servo // a maximum of eight servo objects can be created int pos = 0; // variable to store the servo position void setup() { myservo.attach(9); // attaches the servo on pin 9 to the servo object } void loop() { if(pos<180){for(pos = 0; pos < 180; pos += 1) // goes from 0 degrees to 180 degrees { // in steps of 1 degree myservo.write(pos); // tell servo to go to position in variable 'pos' delay(15); // waits 15ms for the servo to reach the position }} for(pos = 180; pos>=1; pos-=1) // goes from 180 degrees to 0 degrees { myservo.write(pos); // tell servo to go to position in variable 'pos' delay(15); // waits 15ms for the servo to reach the position } }
So wie du es schreibst willst du das Servo langsam hin und herdrehen lassen.Das if dann weglassen.Code:for(pos = 0; pos < 180; pos += 1) // goes from 0 degrees to 180 degrees in steps of 1 degree { myservo.write(pos); // tell servo to go to position in variable 'pos' delay(15); // waits 15ms for the servo to reach the position } for(pos = 180; pos>=1; pos-=1) // goes from 180 degrees to 0 degrees { myservo.write(pos); // tell servo to go to position in variable 'pos' delay(15); // waits 15ms for the servo to reach the position }
Geändert von Hubert.G (08.11.2013 um 08:14 Uhr)
Das versteh ich nicht du hast den gleichen Code gepostet wie in dem Beispiel aber schreibst dann ich soll das if weglassen. Was meinst du damit?
Der Code ist gleich - aber nur das Teilstück, das da steht.
Ohne if - also ohne die rot markierten Teile *ggg*.Code:if(pos<180){for(pos = 0; pos < 180; pos += 1) // goes from 0 degrees to 180 degrees { // in steps of 1 degree myservo.write(pos); // tell servo to go to position in variable 'pos' delay(15); // waits 15ms for the servo to reach the position }} for(pos = 180; pos>=1; pos-=1) // goes from 180 degrees to 0 degrees { myservo.write(pos); // tell servo to go to position in variable 'pos' delay(15); // waits 15ms for the servo to reach the position }
Ciao sagt der JoeamBerg
Also wenn du das meinst:
Ich hab das schonmal ausprobiert,das funktioniert nicht. Warum funktioniert das nicht wenn ich statt loop setup eingebe? Ich hab das hier gelesen: http://www.arduino-tutorial.de/2010/...grammstruktur/Code:#include <Servo.h> Servo myservo; // create servo object to control a servo // a maximum of eight servo objects can be created int pos = 0; // variable to store the servo position void setup() { myservo.attach(9); // attaches the servo on pin 9 to the servo object } void loop() { for(pos = 0; pos < 180; pos += 1) { // in steps of 1 degree myservo.write(pos); // tell servo to go to position in variable 'pos' delay(15); // waits 15ms for the servo to reach the position } }
Hi,
setup() und loop() müssen immer dastehen, weglassen kann man keines von beiden. Wenn du nur ne einmalige 180° Bewegung willst, pack mal die gesamte for-schleife ins setup().
Die loop() einfach leer lassen.
Ist zwar programmiertechnisch nicht gerade sauber gelöst, erfüllt aber seinen Zweck.
Gruß, Stefan. Rechtschreibfehler gefunden? Kannste behalten!
Lesezeichen