Simple counting problems

I'm constructing a device which measures an analogue input.

when the analogue input is below a threshold, an output goes high once, until the analogue input goes above a threshold.

int sensorPin = A0; // select the input pin for the detector
unsigned int count = 0;
byte latch = 0;  //initial variable
unsigned int sensorValue = 0;  // variable to store the value coming from the detector


void setup()
{
  
  pinMode(13, OUTPUT);
  //Start Serial port
  Serial.begin(9600);
count=0;  
}
void loop()
{
  // read the value from the soil detector:
  sensorValue = analogRead(sensorPin);     
  if(count==0&&sensorValue<500) 
  digitalWrite(13, HIGH);
  delay(1000); // 1 second delay 
  ++count;// this increments the count by 1
  Serial.println(sensorValue);
  Serial.println(count);
  digitalWrite(13, LOW);

if(sensorValue>600)
count=0;
}

The problems I have..

the count variable displays a "1" when held high.... and when running, why isn't it 0 as per initialisation.

When taking A0 low the count keeps incrementing, ignoring the "count==0", why not just +1,

When taking A0 HIGH the count displays a "1" not 0 ?

thanks for any help

David

if(count==0&&sensorValue<500) 
  digitalWrite(13, HIGH);

That's the extent of your conditional code, everything else is executed unconditionally.
I'm not sure if that's what you intended.

AWOL:

if(count==0&&sensorValue<500) 

digitalWrite(13, HIGH);



That's the extent of your conditional code, everything else is executed unconditionally.
I'm not sure if that's what you intended.

No thats not what I want..

If the condition is met.

I want the pin to go high , ++count,then go low after a time..

Is this a bracket issue?

or lack of else?

is it only the line directly below the condition that is linked, and how do i add more...

Sorry for the dumb questions, but this is driving me mad, that i'm missing the obvious.

David

Hackdub:
If the condition is met.

I want the pin to go high , ++count,then go low after a time..

Is this a bracket issue?

Yes

is it only the line directly below the condition that is linked, and how do i add more...

if (condition)
statement;

where statement is either one line like
digitalWrite( 13, HIGH);

or multiple like
{
digitalWrite(13, HIGH);
count++;
... etc
}

http://arduino.cc/en/Reference/If

Cheers,
John

Thanks John.. Ive tried that.

now its not incrementing... :frowning:

int sensorPin = A0; // select the input pin for the detector
int count = 0;
//byte latch = 0;  //initial variable
unsigned int sensorValue = 0;  // variable to store the value coming from the detector


void setup()
{
  
  pinMode(13, OUTPUT);
  //Start Serial port
  Serial.begin(9600);
}
void loop()
{
  Serial.println(sensorValue);
  Serial.println(count);
  // read the value from the soil detector:
  sensorValue = analogRead(sensorPin); 
  delay(500);  
  if(count=0&&sensorValue<500)
    {digitalWrite(13, HIGH);
      delay(5000); // 5 second delay 
      count++;// this increments the count by 1
      delay(500);
    digitalWrite(13, LOW);}
  

if(sensorValue>600)
{count=0;
delay(2000);}
}

now its not incrementing...

Maybe it is, but you're just not waiting long enough to see the result.

On second thoughts, you're right, it will never increment if(count=0

Nearly done..

its counting correctly, but no LED output .!

int sensorPin = A0; // select the input pin for the detector
int count = 0;
byte latch = 0;  //initial variable
unsigned int sensorValue = 0;  // variable to store the value coming from the detector
const int LED = 4;

void setup()
{
  
  pinMode(LED, OUTPUT);
  //Start Serial port
  Serial.begin(9600);
}
void loop()
{
  Serial.println(sensorValue);
  Serial.println(count);
  // read the value from thedetector:
  sensorValue = analogRead(sensorPin); 
  delay(500);  
  if(count=0&&sensorValue<500)
    {digitalWrite(LED, HIGH);
      delay(5000); // 5 second delay 
     
      delay(500);
    digitalWrite(LED, LOW);}
  count++;
  
  // this increments the count by 1
  

if(sensorValue>600)
{count=0;
delay(2000);
//digitalWrite(LED, LOW);
}
}
 if(count=0

its counting correctly

unconditionally

BINGO! tx..

for some--- we need to learn the hard way :wink:

Istheresomethingwrongwithyourspacekey?

  if(count=0&&sensorValue<500)

would be heck of a lot easier to parse as

  if(count = 0 && sensorValue < 500)

Therefore, it would be a lot simpler to spot the mistake.