/* * MAPS MOVEMEMENT SPEED TO POT VALUE */ int servoPin = A7; // Control pin for servo motor int potPin = A6; // select the input pin for the potentiometer int pulseWidth = 0; // Amount to pulse the servo long lastPulse = 0; // the time in millisecs of the last pulse int refreshTime = 20; // the time in millisecs needed in between pulses int val; // variable used to store data from potentiometer int minPulse = 500; // minimum pulse width int initTime = millis(); void setup() { pinMode(servoPin, OUTPUT); // Set servo pin as an output pin pulseWidth = minPulse; // Set the motor position to the minimum Serial.begin(9600); // connect to the serial port Serial.println("servo_serial_better ready"); } float analog = 0; int threshold = 400; boolean switcher = false; int timeSpent = 0; void moveForward(){ pulseWidth = 0*2 + minPulse; // convert angle to microseconds } void moveBackward(){ pulseWidth = 600*2 + minPulse; // convert angle to microseconds } void loop() { analog = analogRead(potPin) / 1024.0; val = analog * 600; Serial.println(millis() - initTime); timeSpent = millis() - initTime; if(timeSpent > threshold + val){ initTime = millis(); switcher = !switcher; } if(switcher) moveForward(); else moveBackward(); updateServo(); } // called every loop(). void updateServo() { // pulse the servo again if the refresh time (20 ms) has passed: if (millis() - lastPulse >= refreshTime) { digitalWrite(servoPin, HIGH); // Turn the motor on delayMicroseconds(pulseWidth); // Length of the pulse sets the motor position digitalWrite(servoPin, LOW); // Turn the motor off lastPulse = millis(); // save the time of the last pulse } }