Arduino stop process if no move anymore how to fix

81 Views Asked by At

Hello i have problem :

state sensor = sensor steps "IF" anyone "steps now = impulse " = all code run"perfect good work im happy" but if sensor LOW a did not detect any motion while loading the code = broke stop all , even if it is at the end close or halfway, it will stop when there is no traffic "" (stage_sensor == HIGH)"", i dont have idea how to fix this//

Please help or sugestion

EDIT : There may be syntax errors (is not consistent), but just wanted to present a problem, the system only works under "if" and this is problem, i dont know how to fix

#include <AccelStepper.h> //accelstepper library

// #define light
// #define move_sensor
// #define water_pump
// #define fan_blowing
// #define fan_extractor
// #define blue
// #define red
// #define green

const byte limitSwitch_1 = 26;
const byte limitSwitch_2 = 25;
bool switchFlipped = false;
bool previousFlip = true;
int switchCounter;
int newSpeed;
int state_sensor = 0;  // <--- stage sensor //
int light = 2;
int blue = 3;
int red = 4;
int green = 5;
int fan_blowing = 6;
int water_pump = 8;
int move_sensor = 9;
int fan_extractor = 10;

AccelStepper stepper(1, 22, 23);

void setup()
{
    pinMode(water_pump, OUTPUT);
    pinMode(light, OUTPUT);
    pinMode(fan_blowing, OUTPUT);
    pinMode(fan_extractor, OUTPUT);  
    pinMode(blue, OUTPUT);
    pinMode(red, OUTPUT);
    pinMode(green, OUTPUT);
    pinMode(move_sensor, INPUT);
    pinMode(limitSwitch_1, INPUT_PULLUP);  //pin 1 engine (IF touch)
    pinMode(limitSwitch_2, INPUT_PULLUP);  //pin 2 engine (IF touch)

    Serial.begin(9600);

    stepper.setMaxSpeed(1000);
    stepper.setAcceleration(100); 
    stepper.setSpeed(1000);

    delay(500);
}

void loop()
{
    digitalWrite(light, HIGH); 
    digitalWrite(blue, HIGH);

    state_sensor = digitalRead(move_sensor);
    if (state_sensor == HIGH)   // <--- stage sensor IF anyone move = all code run but if sensor LOW did not detect movement all code broke stop all //
    {
        digitalWrite(blue,     LOW);
        digitalWrite(red,     HIGH);
  
        stepper.runSpeed();
        engine();
    }
}

void engine() 
{
    if(digitalRead(limitSwitch_1) == LOW)
    {
        switchCounter++;
        delay(1000);

        newSpeed = -1 * (1000 + (switchCounter * 200));
        stepper.setSpeed(newSpeed);
    }

    if(digitalRead(limitSwitch_2) == LOW)
    {
        switchCounter++;
        delay(1000);

        newSpeed = -1 * (1000 + (switchCounter * 200));
        stepper.stop();
        fans();
    }
}

void fans()
{
    digitalWrite(red, HIGH);
    {
        digitalWrite(fan_blowing, HIGH);
        digitalWrite(fan_extractor, HIGH);

        delay(1000);
        digitalWrite(water_pump, HIGH);
    }

    delay(1000);

    digitalWrite(red, LOW);
    digitalWrite(water_pump, LOW);
    digitalWrite(green, HIGH);

    delay(1000);

    digitalWrite(fan_blowing, LOW);
    digitalWrite(fan_extractor, LOW);
    digitalWrite(green, LOW);
    digitalWrite(blue, HIGH); //this blue RGB light "ON" but if sensor_steps "ON" = active cycle , blue light led off

    delay(1000);
}
0

There are 0 best solutions below