Ramis84

Babysitter Autopilot Arduino Source

Apr 19th, 2018
116
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.13 KB | None | 0 0
  1. #include <Math.h>
  2. #include <Servo.h>
  3.  
  4. int servoPin = 3; // Servo PWM
  5. int ledPin = 13; // Led indicator of pulse
  6. int speedPotPin = A0; // Adjusts speed (frequency/period)
  7. int powerPotPin = A1; // Adjusts power (amplitude)
  8.  
  9. unsigned long lastTime;
  10. double lastServoTime = 0;
  11. Servo myservo;
  12.  
  13. void setup() {
  14. pinMode(ledPin, OUTPUT);
  15. myservo.attach(servoPin);
  16. lastTime = millis();
  17. }
  18.  
  19. void loop() {
  20. unsigned long currentTime = millis();
  21. unsigned long timePassed = currentTime - lastTime;
  22. int speedPotValue = analogRead(speedPotPin);
  23. int powerPotValue = analogRead(powerPotPin);
  24.  
  25. int servoSpeed = map(speedPotValue, 0, 1023, 10, 400);
  26. double powerScale = (double)powerPotValue / 1023.0;
  27. double servoTime = fmod(lastServoTime + (double)timePassed / 10000.0 * (double)servoSpeed, 2 * M_PI); // Servo time between 0 and 2*pi
  28. double servoSin = sin(servoTime);
  29. double servoPosition = (servoSin + 1.0) * 90.0 * powerScale; // Between 0 - 180
  30.  
  31. myservo.write((int)servoPosition);
  32. digitalWrite(ledPin, servoSin > 0 ? HIGH : LOW);
  33.  
  34. lastTime = currentTime;
  35. lastServoTime = servoTime;
  36. delay(10);
  37. }
Advertisement
Add Comment
Please, Sign In to add comment