Deprecated: Assigning the return value of new by reference is deprecated in /www/htdocs/w009f8cd/blog/wp-settings.php on line 520

Deprecated: Assigning the return value of new by reference is deprecated in /www/htdocs/w009f8cd/blog/wp-settings.php on line 535

Deprecated: Assigning the return value of new by reference is deprecated in /www/htdocs/w009f8cd/blog/wp-settings.php on line 542

Deprecated: Assigning the return value of new by reference is deprecated in /www/htdocs/w009f8cd/blog/wp-settings.php on line 578

Deprecated: Function set_magic_quotes_runtime() is deprecated in /www/htdocs/w009f8cd/blog/wp-settings.php on line 18

Strict Standards: Declaration of Walker_Page::start_lvl() should be compatible with Walker::start_lvl(&$output) in /www/htdocs/w009f8cd/blog/wp-includes/classes.php on line 1199

Strict Standards: Declaration of Walker_Page::end_lvl() should be compatible with Walker::end_lvl(&$output) in /www/htdocs/w009f8cd/blog/wp-includes/classes.php on line 1199

Strict Standards: Declaration of Walker_Page::start_el() should be compatible with Walker::start_el(&$output) in /www/htdocs/w009f8cd/blog/wp-includes/classes.php on line 1199

Strict Standards: Declaration of Walker_Page::end_el() should be compatible with Walker::end_el(&$output) in /www/htdocs/w009f8cd/blog/wp-includes/classes.php on line 1199

Strict Standards: Declaration of Walker_PageDropdown::start_el() should be compatible with Walker::start_el(&$output) in /www/htdocs/w009f8cd/blog/wp-includes/classes.php on line 1244

Strict Standards: Declaration of Walker_Category::start_lvl() should be compatible with Walker::start_lvl(&$output) in /www/htdocs/w009f8cd/blog/wp-includes/classes.php on line 1391

Strict Standards: Declaration of Walker_Category::end_lvl() should be compatible with Walker::end_lvl(&$output) in /www/htdocs/w009f8cd/blog/wp-includes/classes.php on line 1391

Strict Standards: Declaration of Walker_Category::start_el() should be compatible with Walker::start_el(&$output) in /www/htdocs/w009f8cd/blog/wp-includes/classes.php on line 1391

Strict Standards: Declaration of Walker_Category::end_el() should be compatible with Walker::end_el(&$output) in /www/htdocs/w009f8cd/blog/wp-includes/classes.php on line 1391

Strict Standards: Declaration of Walker_CategoryDropdown::start_el() should be compatible with Walker::start_el(&$output) in /www/htdocs/w009f8cd/blog/wp-includes/classes.php on line 1442

Strict Standards: Redefining already defined constructor for class wpdb in /www/htdocs/w009f8cd/blog/wp-includes/wp-db.php on line 306

Strict Standards: Redefining already defined constructor for class WP_Object_Cache in /www/htdocs/w009f8cd/blog/wp-includes/cache.php on line 431

Strict Standards: Declaration of Walker_Comment::start_lvl() should be compatible with Walker::start_lvl(&$output) in /www/htdocs/w009f8cd/blog/wp-includes/comment-template.php on line 1266

Strict Standards: Declaration of Walker_Comment::end_lvl() should be compatible with Walker::end_lvl(&$output) in /www/htdocs/w009f8cd/blog/wp-includes/comment-template.php on line 1266

Strict Standards: Declaration of Walker_Comment::start_el() should be compatible with Walker::start_el(&$output) in /www/htdocs/w009f8cd/blog/wp-includes/comment-template.php on line 1266

Strict Standards: Declaration of Walker_Comment::end_el() should be compatible with Walker::end_el(&$output) in /www/htdocs/w009f8cd/blog/wp-includes/comment-template.php on line 1266

Strict Standards: Redefining already defined constructor for class WP_Dependencies in /www/htdocs/w009f8cd/blog/wp-includes/class.wp-dependencies.php on line 31

Strict Standards: Redefining already defined constructor for class WP_Http in /www/htdocs/w009f8cd/blog/wp-includes/http.php on line 61

Warning: Cannot modify header information - headers already sent by (output started at /www/htdocs/w009f8cd/blog/wp-settings.php:520) in /www/htdocs/w009f8cd/blog/wp-includes/feed-rss2-comments.php on line 8
Kommentare zu: Servos ansteuern http://www.physical-computing.de/blog/2008/05/servos-ansteuern/ Elektroschocks gehören einfach mal dazu ... Thu, 17 Oct 2019 10:40:45 +0000 http://wordpress.org/?v=2.7.1 hourly 1 Von: Bastian http://www.physical-computing.de/blog/2008/05/servos-ansteuern/comment-page-1/#comment-336 Bastian Sat, 17 Jan 2009 15:45:55 +0000 http://physical.neotoxic.de/blog/?p=58#comment-336 ps: ich habe jetzt den seriellen Port nicht geöffnet bzw. die Zeile gelöscht, weil der Port im weiteren Verlauf des Scripts eh' keine Verwendung gefunden hat .... ps: ich habe jetzt den seriellen Port nicht geöffnet bzw. die Zeile gelöscht, weil der Port im weiteren Verlauf des Scripts eh’ keine Verwendung gefunden hat ….

]]>
Von: Bastian http://www.physical-computing.de/blog/2008/05/servos-ansteuern/comment-page-1/#comment-335 Bastian Sat, 17 Jan 2009 15:42:36 +0000 http://physical.neotoxic.de/blog/?p=58#comment-335 Hoffe, jetzt wird's besser ... /* Servo Steuerung by Tom Igoe additions by Carlyn Maw translation by Marcus Paeschke Created 28 Jan. 2006 Updated 7 Jun. 2006 Translated 9 May 2008 Die Werte für den kürzesten Puls (minPulse) und den längsten Puls (maxPulse) können je nach Modell des eingesetzten Servos variieren. Im Idealfall sollten die Pulse zwischen einer und zwei Millisekunden lang sein, in der Praxis haben sich aber auch Werte zwischen 500 und 2500 Mikrosekunden bewährt. Probiert selbst aus, welche Werte am besten für euch funktionieren. Dieser Code benutzt die Funktion millis() um die Zeit zwischen den Pulsen zu bestimmen. Die Funktion erzeugt allerdings nach etwa 5 Tagen Laufzeit einen Speicherüberlauf, d.h. die Zahl wird größer als sie in der Variable abgespeichert werden kann. Solltet ihr ein Programm schreiben, was entsprechend lange laufen muss, denkt bitte daran. */ int servoPin = 2; // Steuerpin für den Servo int minPulse = 500; // Minimalposition des Servos int maxPulse = 2500; // Maximalposition des Servos int pulse = 0; // Aktueller Pulswert long lastPulse = 0; // Zeitpunkt des letzten Pulses int refreshTime = 20; // Kurze Erfrischungszeit dazwischen boolean updown = true; // Gehts jetzt Hoch oder Runter void setup() { pinMode(servoPin, OUTPUT); // Servopin ist ein Ausgabepin pulse = minPulse; // Position des Servos startet auf Minimum } void loop() { if(updown) // wenn der Servo hoch drehen soll, setze auch die Pulslänge hoch[denn: die Pulslänge bestimmt ja die Position des Servos! { pulse++; if(pulse >= maxPulse) // wenn der höchste Servostand erreicht ist { updown = false; // dann setz das Flag wieder auf "runterfahren" } } else // wenn der Servo runter drehen soll, setze auch die Pulslänge runter ... { pulse--; if(pulse = refreshTime) { digitalWrite(servoPin, HIGH); // Puls beginnt delayMicroseconds(pulse); // Länge des Pulses bestimmt die neue Servoposition digitalWrite(servoPin, LOW); // Puls endet lastPulse = millis(); // Speichert die aktuelle Zeit } } Hoffe, jetzt wird’s besser …

/*
Servo Steuerung

by Tom Igoe
additions by Carlyn Maw
translation by Marcus Paeschke
Created 28 Jan. 2006
Updated 7 Jun. 2006
Translated 9 May 2008

Die Werte für den kürzesten Puls (minPulse) und den längsten Puls
(maxPulse) können je nach Modell des eingesetzten Servos variieren.
Im Idealfall sollten die Pulse zwischen einer und zwei Millisekunden
lang sein, in der Praxis haben sich aber auch Werte zwischen
500 und 2500 Mikrosekunden bewährt. Probiert selbst aus, welche
Werte am besten für euch funktionieren.

Dieser Code benutzt die Funktion millis() um die Zeit zwischen den
Pulsen zu bestimmen. Die Funktion erzeugt allerdings nach etwa 5 Tagen
Laufzeit einen Speicherüberlauf, d.h. die Zahl wird größer als sie in
der Variable abgespeichert werden kann. Solltet ihr ein Programm
schreiben, was entsprechend lange laufen muss, denkt bitte daran.
*/

int servoPin = 2; // Steuerpin für den Servo
int minPulse = 500; // Minimalposition des Servos
int maxPulse = 2500; // Maximalposition des Servos
int pulse = 0; // Aktueller Pulswert

long lastPulse = 0; // Zeitpunkt des letzten Pulses
int refreshTime = 20; // Kurze Erfrischungszeit dazwischen

boolean updown = true; // Gehts jetzt Hoch oder Runter

void setup() {
pinMode(servoPin, OUTPUT); // Servopin ist ein Ausgabepin
pulse = minPulse; // Position des Servos startet auf Minimum
}

void loop()
{
if(updown) // wenn der Servo hoch drehen soll, setze auch die Pulslänge hoch[denn: die Pulslänge bestimmt ja die Position des Servos!
{
pulse++;
if(pulse >= maxPulse) // wenn der höchste Servostand erreicht ist
{
updown = false; // dann setz das Flag wieder auf “runterfahren”
}
}
else // wenn der Servo runter drehen soll, setze auch die Pulslänge runter …
{
pulse–;
if(pulse = refreshTime)
{
digitalWrite(servoPin, HIGH); // Puls beginnt
delayMicroseconds(pulse); // Länge des Pulses bestimmt die neue Servoposition
digitalWrite(servoPin, LOW); // Puls endet
lastPulse = millis(); // Speichert die aktuelle Zeit
}
}

]]>
Von: Bastian http://www.physical-computing.de/blog/2008/05/servos-ansteuern/comment-page-1/#comment-334 Bastian Sat, 17 Jan 2009 15:41:41 +0000 http://physical.neotoxic.de/blog/?p=58#comment-334 uh-oh. Tut mir leid. Hab gedacht, unter Arduino wäre "tools->copy for forum" das Mittel der Wahl ... :( uh-oh. Tut mir leid. Hab gedacht, unter Arduino wäre “tools->copy for forum” das Mittel der Wahl …

:(

]]>
Von: Bastian http://www.physical-computing.de/blog/2008/05/servos-ansteuern/comment-page-1/#comment-333 Bastian Sat, 17 Jan 2009 15:40:24 +0000 http://physical.neotoxic.de/blog/?p=58#comment-333 Hi, Ich hab mir mal erlaubt, den ursprünglichen Code um weitere Kommentare zu ergänzen und den Code umzuformatieren. Mir erleichtert das das Lesen ... [quote] [color=#777755]/*[/color] [color=#777755]Servo Steuerung[/color] [color=#777755] [/color] [color=#777755] by Tom Igoe[/color] [color=#777755] additions by Carlyn Maw[/color] [color=#777755] translation by Marcus Paeschke[/color] [color=#777755] Created 28 Jan. 2006[/color] [color=#777755] Updated 7 Jun. 2006[/color] [color=#777755] Translated 9 May 2008[/color] [color=#777755] [/color] [color=#777755] Die Werte für den kürzesten Puls (minPulse) und den längsten Puls[/color] [color=#777755] (maxPulse) können je nach Modell des eingesetzten Servos variieren.[/color] [color=#777755] Im Idealfall sollten die Pulse zwischen einer und zwei Millisekunden[/color] [color=#777755] lang sein, in der Praxis haben sich aber auch Werte zwischen[/color] [color=#777755] 500 und 2500 Mikrosekunden bewährt. Probiert selbst aus, welche[/color] [color=#777755] Werte am besten für euch funktionieren.[/color] [color=#777755] [/color] [color=#777755] Dieser Code benutzt die Funktion millis() um die Zeit zwischen den[/color] [color=#777755] Pulsen zu bestimmen. Die Funktion erzeugt allerdings nach etwa 5 Tagen[/color] [color=#777755] Laufzeit einen Speicherüberlauf, d.h. die Zahl wird größer als sie in[/color] [color=#777755] der Variable abgespeichert werden kann. Solltet ihr ein Programm[/color] [color=#777755] schreiben, was entsprechend lange laufen muss, denkt bitte daran.[/color] [color=#777755] */[/color] [color=#996600]int[/color] servoPin = 2; [color=#777755]// Steuerpin für den Servo[/color] [color=#996600]int[/color] minPulse = 500; [color=#777755]// Minimalposition des Servos[/color] [color=#996600]int[/color] maxPulse = 2500; [color=#777755]// Maximalposition des Servos[/color] [color=#996600]int[/color] pulse = 0; [color=#777755]// Aktueller Pulswert[/color] [color=#996600]long[/color] lastPulse = 0; [color=#777755]// Zeitpunkt des letzten Pulses[/color] [color=#996600]int[/color] refreshTime = 20; [color=#777755]// Kurze Erfrischungszeit dazwischen[/color] [color=#996600]boolean[/color] updown = [color=#CC6600]true[/color]; [color=#777755]// Gehts jetzt Hoch oder Runter[/color] [color=#CC6600]void[/color] [color=#993300][b]setup[/b][/color]() { [color=#996600]pinMode[/color](servoPin, [color=#CC0000]OUTPUT[/color]); [color=#777755]// Servopin ist ein Ausgabepin[/color] pulse = minPulse; [color=#777755]// Position des Servos startet auf Minimum[/color] } [color=#CC6600]void[/color] [color=#993300][b]loop[/b][/color]() { [color=#CC6600]if[/color](updown) [color=#777755]// wenn der Servo hoch drehen soll, setze auch die Pulslänge hoch[denn: die Pulslänge bestimmt ja die Position des Servos![/color] { pulse++; [color=#CC6600]if[/color](pulse >= maxPulse) [color=#777755]// wenn der höchste Servostand erreicht ist[/color] { updown = [color=#CC6600]false[/color]; [color=#777755]// dann setz das Flag wieder auf "runterfahren"[/color] } } [color=#CC6600]else[/color] [color=#777755]// wenn der Servo runter drehen soll, setze auch die Pulslänge runter ...[/color] { pulse--; [color=#CC6600]if[/color](pulse = refreshTime) { [color=#996600]digitalWrite[/color](servoPin, [color=#CC0000]HIGH[/color]); [color=#777755]// Puls beginnt[/color] [color=#996600]delayMicroseconds[/color](pulse); [color=#777755]// Länge des Pulses bestimmt die neue Servoposition[/color] [color=#996600]digitalWrite[/color](servoPin, [color=#CC0000]LOW[/color]); [color=#777755]// Puls endet[/color] lastPulse = [color=#996600]millis[/color](); [color=#777755]// Speichert die aktuelle Zeit[/color] } } [/quote] Hi,

Ich hab mir mal erlaubt, den ursprünglichen Code um weitere Kommentare zu ergänzen und den Code umzuformatieren.
Mir erleichtert das das Lesen …

[quote]

[color=#777755]/*[/color]
[color=#777755]Servo Steuerung[/color]
[color=#777755] [/color]
[color=#777755] by Tom Igoe[/color]
[color=#777755] additions by Carlyn Maw[/color]
[color=#777755] translation by Marcus Paeschke[/color]
[color=#777755] Created 28 Jan. 2006[/color]
[color=#777755] Updated 7 Jun. 2006[/color]
[color=#777755] Translated 9 May 2008[/color]
[color=#777755] [/color]
[color=#777755] Die Werte für den kürzesten Puls (minPulse) und den längsten Puls[/color]
[color=#777755] (maxPulse) können je nach Modell des eingesetzten Servos variieren.[/color]
[color=#777755] Im Idealfall sollten die Pulse zwischen einer und zwei Millisekunden[/color]
[color=#777755] lang sein, in der Praxis haben sich aber auch Werte zwischen[/color]
[color=#777755] 500 und 2500 Mikrosekunden bewährt. Probiert selbst aus, welche[/color]
[color=#777755] Werte am besten für euch funktionieren.[/color]
[color=#777755] [/color]
[color=#777755] Dieser Code benutzt die Funktion millis() um die Zeit zwischen den[/color]
[color=#777755] Pulsen zu bestimmen. Die Funktion erzeugt allerdings nach etwa 5 Tagen[/color]
[color=#777755] Laufzeit einen Speicherüberlauf, d.h. die Zahl wird größer als sie in[/color]
[color=#777755] der Variable abgespeichert werden kann. Solltet ihr ein Programm[/color]
[color=#777755] schreiben, was entsprechend lange laufen muss, denkt bitte daran.[/color]
[color=#777755] */[/color]

[color=#996600]int[/color] servoPin = 2; [color=#777755]// Steuerpin für den Servo[/color]
[color=#996600]int[/color] minPulse = 500; [color=#777755]// Minimalposition des Servos[/color]
[color=#996600]int[/color] maxPulse = 2500; [color=#777755]// Maximalposition des Servos[/color]
[color=#996600]int[/color] pulse = 0; [color=#777755]// Aktueller Pulswert[/color]

[color=#996600]long[/color] lastPulse = 0; [color=#777755]// Zeitpunkt des letzten Pulses[/color]
[color=#996600]int[/color] refreshTime = 20; [color=#777755]// Kurze Erfrischungszeit dazwischen[/color]

[color=#996600]boolean[/color] updown = [color=#CC6600]true[/color]; [color=#777755]// Gehts jetzt Hoch oder Runter[/color]

[color=#CC6600]void[/color] [color=#993300][b]setup[/b][/color]() {
[color=#996600]pinMode[/color](servoPin, [color=#CC0000]OUTPUT[/color]); [color=#777755]// Servopin ist ein Ausgabepin[/color]
pulse = minPulse; [color=#777755]// Position des Servos startet auf Minimum[/color]
}

[color=#CC6600]void[/color] [color=#993300][b]loop[/b][/color]()
{
[color=#CC6600]if[/color](updown) [color=#777755]// wenn der Servo hoch drehen soll, setze auch die Pulslänge hoch[denn: die Pulslänge bestimmt ja die Position des Servos![/color]
{
pulse++;
[color=#CC6600]if[/color](pulse >= maxPulse) [color=#777755]// wenn der höchste Servostand erreicht ist[/color]
{
updown = [color=#CC6600]false[/color]; [color=#777755]// dann setz das Flag wieder auf “runterfahren”[/color]
}
}
[color=#CC6600]else[/color] [color=#777755]// wenn der Servo runter drehen soll, setze auch die Pulslänge runter …[/color]
{
pulse–;
[color=#CC6600]if[/color](pulse = refreshTime)
{
[color=#996600]digitalWrite[/color](servoPin, [color=#CC0000]HIGH[/color]); [color=#777755]// Puls beginnt[/color]
[color=#996600]delayMicroseconds[/color](pulse); [color=#777755]// Länge des Pulses bestimmt die neue Servoposition[/color]
[color=#996600]digitalWrite[/color](servoPin, [color=#CC0000]LOW[/color]); [color=#777755]// Puls endet[/color]
lastPulse = [color=#996600]millis[/color](); [color=#777755]// Speichert die aktuelle Zeit[/color]
}
}

[/quote]

]]>
Von: derMarc http://www.physical-computing.de/blog/2008/05/servos-ansteuern/comment-page-1/#comment-330 derMarc Sat, 20 Dec 2008 21:38:59 +0000 http://physical.neotoxic.de/blog/?p=58#comment-330 changed the code a little bit. feels much smoother and much more accurate now... also added the possibility to change the speed of the servo. happy about comments! /* Servo Steuerung by Tom Igoe additions by Carlyn Maw, Marc Tiedemann translation by Marcus Paeschke Created 28 Jan. 2006 Updated 7 Jun. 2006 Translated 9 May 2008 Die Werte für den kürzesten Puls (minPulse) und den längsten Puls (maxPulse) können je nach Modell des eingesetzten Servos variieren. Im Idealfall sollten die Pulse zwischen einer und zwei Millisekunden lang sein, in der Praxis haben sich aber auch Werte zwischen 500 und 2500 Mikrosekunden bewährt. Probiert selbst aus, welche Werte am besten für euch funktionieren. Dieser Code benutzt die Funktion millis() um die Zeit zwischen den Pulsen zu bestimmen. Die Funktion erzeugt allerdings nach etwa 5 Tagen Laufzeit einen Speicherüberlauf, d.h. die Zahl wird größer als sie in der Variable abgespeichert werden kann. Solltet ihr ein Programm schreiben, was entsprechend lange laufen muss, denkt bitte daran. */ int servoPin = 10; // Steuerpin für den Servo int minPulse = 500; // Minimalposition des Servos int maxPulse = 2550; // Maximalposition des Servos int pulse = 0; // Aktueller Pulswert int servoSpeed = 5; // Bewegungsgeschwindigkeit int refreshTime = 10; // Kurze Erfrischungszeit dazwischen boolean updown = true; // Gehts jetzt Hoch oder Runter void setup() { pinMode(servoPin, OUTPUT); // Servopin ist ein Ausgabepin pulse = minPulse; // Position des Servos startet auf Minimum Serial.begin(9600); // Serielle Verbindung zur Kontrolle } void loop() { // Neuer Puls nach der eingestellten Pause if(updown) { pulse = pulse+servoSpeed; if(pulse >= maxPulse) { updown = false; } } else { pulse=pulse-servoSpeed; if(pulse <= minPulse) { updown = true; } } digitalWrite(servoPin, HIGH); // Puls beginnt delayMicroseconds(pulse); // Länge des Pulses bestimmt die neue Servoposition digitalWrite(servoPin, LOW); // Puls endet delay(refreshTime); } changed the code a little bit. feels much smoother and much more accurate now… also added the possibility to change the speed of the servo.

happy about comments!

/*
Servo Steuerung

by Tom Igoe
additions by Carlyn Maw, Marc Tiedemann
translation by Marcus Paeschke
Created 28 Jan. 2006
Updated 7 Jun. 2006
Translated 9 May 2008

Die Werte für den kürzesten Puls (minPulse) und den längsten Puls
(maxPulse) können je nach Modell des eingesetzten Servos variieren.
Im Idealfall sollten die Pulse zwischen einer und zwei Millisekunden
lang sein, in der Praxis haben sich aber auch Werte zwischen
500 und 2500 Mikrosekunden bewährt. Probiert selbst aus, welche
Werte am besten für euch funktionieren.

Dieser Code benutzt die Funktion millis() um die Zeit zwischen den
Pulsen zu bestimmen. Die Funktion erzeugt allerdings nach etwa 5 Tagen
Laufzeit einen Speicherüberlauf, d.h. die Zahl wird größer als sie in
der Variable abgespeichert werden kann. Solltet ihr ein Programm
schreiben, was entsprechend lange laufen muss, denkt bitte daran.
*/

int servoPin = 10; // Steuerpin für den Servo
int minPulse = 500; // Minimalposition des Servos
int maxPulse = 2550; // Maximalposition des Servos
int pulse = 0; // Aktueller Pulswert
int servoSpeed = 5; // Bewegungsgeschwindigkeit

int refreshTime = 10; // Kurze Erfrischungszeit dazwischen

boolean updown = true; // Gehts jetzt Hoch oder Runter

void setup() {
pinMode(servoPin, OUTPUT); // Servopin ist ein Ausgabepin
pulse = minPulse; // Position des Servos startet auf Minimum
Serial.begin(9600); // Serielle Verbindung zur Kontrolle
}

void loop() {

// Neuer Puls nach der eingestellten Pause

if(updown) {
pulse = pulse+servoSpeed;
if(pulse >= maxPulse) {
updown = false;
}
} else {
pulse=pulse-servoSpeed;
if(pulse <= minPulse) {
updown = true;
}
}

digitalWrite(servoPin, HIGH); // Puls beginnt
delayMicroseconds(pulse); // Länge des Pulses bestimmt die neue Servoposition
digitalWrite(servoPin, LOW); // Puls endet

delay(refreshTime);
}

]]>