Go Down

Topic: Need help with logic (Read 950 times) previous topic - next topic

sainikshipth

Hey, I am working a water sensor, but I cant seem to make it stop after one loop no matter what i do.
here is the code


#include <SPI.h>
#include <Servo.h>

Servo ser;
void setup() {
  // put your setup code here, to run once:
  pinMode(A0, INPUT);
  pinMode(6, OUTPUT);
  ser.attach(A4);
  Serial.begin(9600);
}
void ser1(int, int);
void serp(int);
void serm(int);
int pos = 0;
int strt = 0;
void loop() {
  int count = 0;
  // put your main code here, to run repeatedly:
  int a = analogRead(A0);
  // print out the value you read:
  Serial.println(a);
  if (a != 0)
  {
    count = 1;
    Serial.println("serp");
    serp(count);
   
  }
  else if (a == 0)
  {
    count = 1;
    Serial.println("serm");
    serm(count);
  }

  delay(300000);


}


void ser1(int pos, int count)
{
  Serial.println("ser1");
  if (pos == 1)
  {
    Serial.println("servo++");
    do
    {
      ser.write(pos);
      delay(50);
      pos++;
    } while (pos <= 45);
    count = 0;
  }
  else
  {
    Serial.println("servo--");
    do
    {
      ser.write(pos);
      delay(50);
      pos--;
    } while (pos <= 45);
    count = 0;
  }
 return;
}

void serp(int count)
{
  if (count != 0)
  {
    int pos = 0;
    digitalWrite(9, HIGH);
    ser1(pos, count);
    delay(500);
  }
  else
  {
    delay(1000);
  }
   return;
}

void serm(int count)
{

  if (count != 0)
  {
    int pos = 45;
    digitalWrite(9, LOW);
    ser1(pos, count);
    delay(500);
  }
  else
  {
    delay(1000);
  }
  return;
}





The motor stats off just fine and keeps rotating in that direction. I've tried everything( from my knowledge)

I've also tried including serial.print(); its always struck at "servo--", and won't budge.

I want the arduino to check for the sensor inputs every 5 minutes and iterate only once .
and repeat the same.



How do I do that? and it'd be great if someone could correct my logic/code.

P.S- I've never tried anything like this and I'm out of ideas

AWOL

Code: [Select]
do
    {
      ser.write(pos);
      delay(50);
      pos--;
    } while (pos <= 45);
maybe you're just not waiting long enough
"Pete, it's a fool (who) looks for logic in the chambers of the human heart." Ulysses Everett McGill.
Do not send technical questions via personal messaging - they will be ignored.
I speak for myself, not Arduino.

sainikshipth

So ill try changing to time to 500, ill get back

AWOL

So ill try changing to time to 500, ill get back
Need help with logic.
"Pete, it's a fool (who) looks for logic in the chambers of the human heart." Ulysses Everett McGill.
Do not send technical questions via personal messaging - they will be ignored.
I speak for myself, not Arduino.

sainikshipth

Need help with logic.
So my logic isn't right? Could you be more specific where i went wrong? It'd be a great help.

sainikshipth


Go Up