0

I have a flex sensor connected with an arduino lily pad and an 47k ohms resistor.

My problem is that I am unable to get the consistent values from flex sensors: sometimes, i get very strange readings, even though the flex sensor is not in bending state.

I tried to change the values of straight_resistance and bend_resistance, but it doesn't seem to fix the issue.

Here is my code, looking forward for help.

const int FLEX_PIN = A0; // Pin connected to voltage divider output

// Measure the voltage at 5V and the actual resistance of your
// 47k resistor, and enter them below:
const float VCC = 4.98; // Measured voltage of Ardunio 5V line (r1/r1+r2)5
const float R_DIV = 47500.0; // Measured resistance of 3.3k resistor

// Upload the code, then try to adjust these values to more
// accurately calculate bend degree.
const float STRAIGHT_RESISTANCE = 24248750.00; // resistance when     straight 
const float BEND_RESISTANCE = 48544996.00; // resistance at 90 deg

void setup() 
{
  Serial.begin(9600);
  pinMode(FLEX_PIN, INPUT);
}

void loop() 
{
  // Read the ADC, and calculate voltage and resistance from it
  int flexADC = analogRead(FLEX_PIN);
  float flexV = flexADC * VCC / 1023.0;
  float flexR = R_DIV * (VCC / flexV - 1.0);
  Serial.println("Resistance: " + String(flexR) + " ohms");

  // Use the calculated resistance to estimate the sensor's
  // bend angle:
  float angle = map(flexR, STRAIGHT_RESISTANCE, BEND_RESISTANCE,
               0, 90.0);
  Serial.println("Bend: " + String(angle) + " degrees");
  Serial.println();

  delay(750);
}
Brian
  • 3,850
  • 3
  • 21
  • 37
sTsT
  • 31
  • 2
  • did you check whether your flex sensor is not broken? You could try using an ohmmeter to check them out. – zmo Dec 07 '16 at 17:30

1 Answers1

2

The following values from your code don't seem right. These are values in the MOhms, not kOhms.

const float STRAIGHT_RESISTANCE = 24248750.00; // resistance when     straight 
const float BEND_RESISTANCE = 48544996.00; // resistance at 90 deg

Another problem is the map() function only works with integers! The floating point values you are passing in are converted to integers before the map() function uses them.

tddguru
  • 392
  • 1
  • 4