0

I need to run my servo motor within a specific pressure range, given by a pressure sensor. I don't understand how to code this. I have coded for servo motor movement but I need to activate that movement in a specific range. Please, help me.

This is my servo code:

#include <Servo.h> 

Servo myservo;  // create servo object to control a servo 
                // twelve servo objects can be created on most boards
int pos = 0;    // variable to store the servo position 

void setup() {
  myservo.attach(9);
  // attaches the servo on pin 9 to the servo object
}

void loop() {
  for(pos = 0; pos <= 30; pos += 1) {
    // goes from 0 degrees to 180 degrees
    // in steps of 1 degree
    myservo.write(pos);
    // tell servo to go to position in variable 'pos'
    delay(5); // waits 15ms for the servo to reach the position
  }
  for(pos = 30; pos>=0; pos-=1) {
    // goes from 180 degrees to 0 degrees
    myservo.write(pos);
    // tell servo to go to position in variable 'pos'
    delay(5);
    // waits 15ms for the servo to reach the position
  }
  delay(1500);
}

I need to activate this servo within a 10-70 pressure range.

1

You don't tell what pressure sensor are you using, but suppose that a call to readPressure() will give as pressure as an int

#include <Servo.h>

Servo myservo;  // create servo object to control a servo
// twelve servo objects can be created on most boards

int pos = 0;    // variable to store the servo position

void setup()
{
    myservo.attach(9);  // attaches the servo on pin 9 to the servo object
}

void loop()
{
    int pressure = readPressure();

    if(pressure >= 10 && pressure <= 70) {
        //  Pressure is in range. Move the servo.
        for(pos = 0; pos <= 30; pos += 1) { // goes from 0 degrees to 180 degrees
            // in steps of 1 degree
            myservo.write(pos);              // tell servo to go to position in variable 'pos'
            delay(5);                       // waits 15ms for the servo to reach the position
        }

        for(pos = 30; pos>=0; pos-=1) {   // goes from 180 degrees to 0 degrees
            myservo.write(pos);              // tell servo to go to position in variable 'pos'
            delay(5);                       // waits 15ms for the servo to reach the position
        }
    }

    //  Wait for another 1.5 sec before next loop().
    delay(1500);
}

Of course, you have to complete the code with the actual sensor calls.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.