Browse Source

nice motor controller ftw

master
mortie 6 years ago
commit
9293fa22f0
1 changed files with 56 additions and 0 deletions
  1. 56
    0
      esp/esp.ino

+ 56
- 0
esp/esp.ino View File

@@ -0,0 +1,56 @@
#include <Servo.h>

#define PIN_POT A0
#define PIN_BTN 2
#define PIN_ESC 5
#define MIN_SPEED 1000
#define MAX_SPEED 1500
#define DELAY 10

Servo esc;

void setup() {
Serial.begin(115200);
pinMode(PIN_BTN, INPUT_PULLUP);
pinMode(PIN_POT, INPUT);
esc.attach(PIN_ESC);
esc.writeMicroseconds(MIN_SPEED);
}

float speedFunc(float t) {
return 0.15 + 0.000000005 * t * t * t;
}

void loop() {
int pressed = 0;
int t = 0;
int reachedMax = 0;
while (digitalRead(PIN_BTN) == LOW) {
pressed = 1;
int pot = analogRead(PIN_POT);
int speed = map(pot, 0, 1023, 0, MAX_SPEED - MIN_SPEED);

int actualSpeed;
if (!reachedMax) {
float multiplier = min(speedFunc(t), 1);
if (multiplier > 1) {
multiplier = 1;
reachedMax = 1;
}
actualSpeed = speed * multiplier + MIN_SPEED;
} else {
actualSpeed = speed + MIN_SPEED;
}

Serial.println(actualSpeed);
esc.writeMicroseconds(actualSpeed);
delay(DELAY);
t += DELAY;
}

if (pressed)
esc.writeMicroseconds(0);
}

Loading…
Cancel
Save