newbie: I'm not sure what i need or how to approach my problem


hi

sorry i'm of noob @ coding i'm not sure how name issue here's i'm after:

i have pressure sensor taking readings , if pressure > 10 led turns on else led off.
however don't want led turn on straight away pressure drops below threshold. want led turn on if pressure has been below threshold more 5 seconds. 

so basically:

if pressure > threshold more 5 seconds led on else led off.

i've tried sorts delays, i've tried loops (although i'm not sure how work) hours of searching if don't know task difficult.

can give me answer , idea of how integrate code.

here's code:

int sensorpin = a0;
int sensorbase = 0;
int sensorbaseaverage = 0;
int ledpingreen = 12;       // pin led attached to
int ledpinwhite = 9;
int ledpinred = 7;
int count = 0;

void setup(){
    serial.begin(9600);
    sensorbaseaverage = 0;
    for(int j=0; j<20; j++){ // startup sequence create bassline result
      sensorbase = analogread(sensorpin);// * (5.0 / 1023.0);
      sensorbaseaverage = sensorbaseaverage+sensorbase;
      delay(100);   
    }
    sensorbaseaverage = (sensorbaseaverage / 20) * (5.0 / 1024.0);
}

void loop(){
  float pressure = readpressure(a0);
  float millibars = pressure/100;
   
  if(pressure < 0){
     serial.println(pressure);
     //serial.print(" pascals ");
     //serial.println(pressure);
     delay(100);
  }
 
 
if( -10 < pressure ) {
digitalwrite(ledpingreen, high);
  }
else {digitalwrite(ledpingreen,low);
  }
 
 
 
 
 
if((-10.1 > pressure) && (pressure > -25)){
  digitalwrite(ledpinwhite, high);
  }
else {digitalwrite(ledpinwhite, low);
  }


for (if count <= 2000){
    digitalwrite(ledpinwhite,low);
    int count = int count + 1;
    delay(1);
  }
  else {
    digitalwrite(ledpinwhite,high);
    delay(1);
  }

 
 
 
  if( pressure > -25.1) {
digitalwrite(ledpinred, low);
  }
else {digitalwrite(ledpinred,high);
  }



}

float readpressure(int pin){
  int pressurevalue = analogread(sensorpin);
  float pressure= (((pressurevalue / 1023.0)-0.92)/0.007652);
  return pressure;

}
 
 




many thanks!

(and please try nice people brutal newcomers on these forums)

please use [ code ] tags next time.

this line:
code: [select]
sensorbaseaverage = (sensorbaseaverage / 20) * (5.0 / 1024.0);
will store values 0, 1, 2, 3, or 4. no other values possible because sensorbaseaverage integer. want?


Arduino Forum > Using Arduino > Programming Questions > newbie: I'm not sure what i need or how to approach my problem


arduino

Comments