SHARE
TWEET

Servo Move

a guest Aug 23rd, 2019 84 in 1 day
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include <Servo.h>
  2. Servo servo1;                         // create servo object to control a servo
  3. int SigIn = 2;                        // PIN für Input Channel
  4. int InVal;                            // Zum auswerten von  Signal Eingängen
  5. #define up 180;                       // Servo position oben
  6. #define down 0;                       // Servo Position unten
  7. int pos_act = 1;                      // Aktuelle Servo Position
  8. int pos_target = 0;                   // Ziel Servo Position
  9. bool soft;                            // Sanftlauf
  10. unsigned long time_now;               // Aktuelle Zeit
  11. unsigned long time_next;              // Naechster Zeitpunkt für Sanftlauf
  12. #define WaitTime 60;                  // Wartezeit Sanftlauf
  13.  
  14. #define SERVO_PIN 3
  15.  
  16. void setup() {
  17.   //Channel Eingänge
  18.   pinMode(SigIn, INPUT);              // Pinmode als Input
  19.   servo1.attach(SERVO_PIN);           // attaches the servo on pin defined by SERVO_PIN to the servo object
  20.   Serial.begin(115200);               // Bautrate Serieller Monitor nur für Debug
  21.   time_now = millis();
  22.   time_next = time_now + WaitTime;
  23. }
  24.  
  25. void loop() {
  26.   InVal = pulseIn(SigIn, HIGH);        // Der übergeben Wert ist "HIGH". Es wird gewartet bis PIN auf HIGH gezogen ist. Startet Timer bis wieder LOW ist. Pulse länge in us wird retour gegeben. Möglich ist auch ein Timer mitzugeben 10 microseconds to 3 minutes, pulseIn(pin, value, timeout)
  27.  
  28.   if (InVal <= 1000) {                 // Wenn signal kleiner 1000 dann Servoposition "up"
  29.     pos_target = down;
  30.     soft = true;
  31.   }
  32.   if (InVal >= 1500) {                 // Wenn signal größer 1500 dann Servoposition "down"
  33.     pos_target = up;
  34.     soft = true;
  35.   }
  36.   if (InVal >= 2100) {                 // Wenn signal größer 2100 dann Servoposition "up"
  37.     pos_target = up;
  38.     soft = false;
  39.   }
  40.  
  41.   if (pos_target != pos_act) {         // Bewegung notwendig
  42.     if (soft) {
  43.       time_now = millis();
  44.       if (time_now > time_next) {      // Wartezeit abgelaufen
  45.         time_next = time_now + WaitTime;
  46.         if (pos_target > pos_act) {
  47.           pos_act++;
  48.         } else {
  49.           pos_act--;
  50.         }
  51.         servo1.write(pos_act);
  52.       }
  53.     } else {
  54.       pos_act = pos_target;            // Schnell fahren
  55.       servo1.write(pos_act);
  56.     }
  57.     Serial.print('pos_target: ');      //Ausgabe in Serial Monitor nur für Debug
  58.     Serial.println(pos_target);
  59.     Serial.print('pos_act: ');
  60.     Serial.println(pos_act);
  61.   }
  62.  
  63.   Serial.print('InVal: ');             //Ausgabe in Serial Monitor nur für Debug
  64.   Serial.println(InVal);
  65. }
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top