Servo_02.ino 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. #include <MobaTools.h>
  2. /* Demo zum langsamen Bewegen eines Servos
  3. * Die aktuelle Version der MoBatools erlaubt bis zu 16 Servos nur an beliebigen Pins
  4. * Eine gleichzeitige Verwendung mit der Standard Servo Library des Arduino
  5. * ist nicht möglich, da die gleichen HW-Komponenten verwendet werden.
  6. * Die Aufrufe sind kompatibel zur Standard-Servo Library.
  7. * zusätzliche Aufrufe:
  8. * Servo2.setSpeed( wert ); Vorgabe der Geschwindigkeit. Je größer die Zahl, umso
  9. * größer ist die Geschwindigkeit. Bei 0 (defaultwert)
  10. * verhält das Servo sich wie bei der Standard Bibliothek
  11. * byte = Servo2.moving(); gibt den noch verbleibenden Fahrweg in % vom gesamten
  12. * Verfahrweg an. Bei 0 hat das Servo die Zielposition
  13. * erreicht und steht.
  14. * fehlende Aufrufe:
  15. * writeMicroseconds() auch beim normalen write Aufruf können Microsekunden übergeben
  16. * werden. Die Unterscheidung Winkel (0..180) und Mikrosekunden
  17. * ( 700...2300 )ergibt sich aus dem Zahlenwert.
  18. *
  19. * Demo 02 : mit Abfrage der Servobewegung.
  20. * In diesem Sketch kann das Servo erst umgesteuert werden, wenn es seine Zielposition
  21. * erreicht hat und steht. Im Demo Servo_01 kann das Servo jederzeit umgesteuert werden
  22. */
  23. // Die Taster müssen so angeschlossen sein, dass der Eingang bei gedrücktem
  24. // Taster auf LOW (=0) geht.
  25. const int tasterPin1 = 2; //Taster1 Pin 2
  26. const int tasterPin2 = 3; //Taster2 Pin 3
  27. const int servoPin = 9; // Anschluß für den Servo
  28. // bei Werten, die sich im Programm nie verändern, sollte immer 'const' vorangestellt
  29. // werden
  30. int tasterStatus1, tasterStatus2;
  31. Servo8 meinServo;
  32. void setup() {
  33. pinMode(tasterPin1, INPUT_PULLUP); // so ist kein externer pullup Widerstand am
  34. pinMode(tasterPin2, INPUT_PULLUP); // Taster erforderlich
  35. meinServo.attach(servoPin); //Servo an Pin 9
  36. meinServo.setSpeed( 5 ); // Verfahrgeschwindigkeit einstellen
  37. }
  38. void loop() {
  39. tasterStatus1 = digitalRead(tasterPin1);
  40. tasterStatus2 = digitalRead(tasterPin2);
  41. if (tasterStatus1 == LOW && meinServo.moving() == 0 ) {
  42. meinServo.write(40); //wird langsam drehen
  43. delay(100);
  44. }
  45. if (tasterStatus2 == LOW && meinServo.moving() == 0) {
  46. meinServo.write(120); //wird langsam drehen
  47. delay(100);
  48. }
  49. delay(20);
  50. }