ESC stuff
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

esp.ino 1.0KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. #include <Servo.h>
  2. #define PIN_POT A0
  3. #define PIN_BTN 2
  4. #define PIN_ESC 5
  5. #define MIN_SPEED 1000
  6. #define MAX_SPEED 1500
  7. #define DELAY 10
  8. Servo esc;
  9. void setup() {
  10. Serial.begin(115200);
  11. pinMode(PIN_BTN, INPUT_PULLUP);
  12. pinMode(PIN_POT, INPUT);
  13. esc.attach(PIN_ESC);
  14. esc.writeMicroseconds(MIN_SPEED);
  15. }
  16. float speedFunc(float t) {
  17. return 0.15 + 0.000000005 * t * t * t;
  18. }
  19. void loop() {
  20. int pressed = 0;
  21. int t = 0;
  22. int reachedMax = 0;
  23. while (digitalRead(PIN_BTN) == LOW) {
  24. pressed = 1;
  25. int pot = analogRead(PIN_POT);
  26. int speed = map(pot, 0, 1023, 0, MAX_SPEED - MIN_SPEED);
  27. int actualSpeed;
  28. if (!reachedMax) {
  29. float multiplier = min(speedFunc(t), 1);
  30. if (multiplier > 1) {
  31. multiplier = 1;
  32. reachedMax = 1;
  33. }
  34. actualSpeed = speed * multiplier + MIN_SPEED;
  35. } else {
  36. actualSpeed = speed + MIN_SPEED;
  37. }
  38. Serial.println(actualSpeed);
  39. esc.writeMicroseconds(actualSpeed);
  40. delay(DELAY);
  41. t += DELAY;
  42. }
  43. if (pressed)
  44. esc.writeMicroseconds(0);
  45. }