Arduino fire extinguisher car

Hi,
I have some problem with code or with connections, always when I start my car using button, water pump is on and it isn't going off, please help. I know I didn't finished code yet, but this is first thing that I want to fix. There is code and diagram:

#include <Servo.h>
Servo servo;

int pos = 0; 

int sensorRight = A0; 
int sensorForward = A2; 
int sensorLeft = A4;                                              
int sensorValueRight = 0; 
int sensorValueForward = 0; 
int sensorValueLeft = 0;

int leftMotorForward = 4; 
int leftMotorBackward = 5; 

int rightMotorForward = 6; 
int rightMotorBackward = 7; 

int pump = 8; 

bool fire = false; 

void setup() 
{
  pinMode(sensorRight, INPUT);
  pinMode(sensorForward, INPUT);
  pinMode(sensorLeft, INPUT);
  
  pinMode(leftMotorForward, OUTPUT);
  pinMode(leftMotorBackward, OUTPUT);

  pinMode(rightMotorForward, OUTPUT);
  pinMode(rightMotorBackward, OUTPUT);

  pinMode(pump, OUTPUT);
  digitalWrite(pump, LOW);

  servo.attach(10);
  servo.write(90); 

  Serial.begin(9600);                                                                       
}


void fireExtinguisher()
{
  digitalWrite(leftMotorForward,LOW);
  digitalWrite(leftMotorBackward,LOW);
  digitalWrite(rightMotorForward,LOW);
  digitalWrite(rightMotorBackward,LOW);

  digitalWrite(pump, HIGH);

  for (pos = 50; pos <= 150; pos += 1) { 
    servo.write(pos); 
    delay(10);  
  }
  for (pos = 150; pos >= 50; pos -= 1) { 
    servo.write(pos); 
    delay(10);
  }

  digitalWrite(pump,LOW);
  servo.write(90);
}

void loop() 
{
  sensorValueRight = analogRead(sensorRight);    
  Serial.print("Right sensor: ");         
  Serial.println(sensorValueRight);

  sensorValueForward = analogRead(sensorForward);   
  Serial.print("Forward sensor: ");             
  Serial.println(sensorValueForward);

  sensorValueLeft = analogRead(sensorLeft);  
  Serial.print("Left sensor: ");              
  Serial.println(sensorValueLeft); 

  if(sensorValueRight > 740)
  {
    digitalWrite(leftMotorForward,HIGH);
    digitalWrite(leftMotorBackward,LOW);
    digitalWrite(rightMotorForward,LOW);
    digitalWrite(rightMotorBackward,LOW);

    delay(500);

    fireExtinguisher();
  }else if(sensorValueForward > 740)
  {
    digitalWrite(leftMotorForward,HIGH);
    digitalWrite(leftMotorBackward,LOW);
    digitalWrite(rightMotorForward,HIGH);
    digitalWrite(rightMotorBackward,LOW);

    delay(500);

    fireExtinguisher();
  }else if(sensorValueLeft > 740)
  {
    digitalWrite(leftMotorForward,LOW);
    digitalWrite(leftMotorBackward,LOW);
    digitalWrite(rightMotorForward,HIGH);
    digitalWrite(rightMotorBackward,LOW);

    delay(500);

    fireExtinguisher();
  }else
  {
    digitalWrite(leftMotorForward,LOW);
    digitalWrite(leftMotorBackward,LOW);
    digitalWrite(rightMotorForward,LOW);
    digitalWrite(rightMotorBackward,LOW);

    delay(500);
  }
}

Someone can only help if they know how you have wired up all the components in your project. You gave the code, thanks, but where is the schematic or block diagram? How does your program turn on the pump?

My drawing is just scheme. Without any code for pump, It's still working, so I think there is problem with connection


I added some wagos (orange circles) too in my real project, easier to connect, so it looks like this

Your diagram shows pin 9 controls the pump relay, but your code says pin 8 controls the relay.

1 Like
#include <Servo.h>
Servo servo;

const byte sensorRight = A0; 
const byte sensorForward = A2; 
const byte sensorLeft = A4;                                              
const byte leftMotorForward = 4; 
const byte leftMotorBackward = 5; 

const byte rightMotorForward = 6; 
const byte rightMotorBackward = 7; 

const byte pump = 8; 

int pos = 0; 
int sensorValueRight = 0; 
int sensorValueForward = 0; 
int sensorValueLeft = 0;
bool fire = false; 

#define Pump_On   digitalWrite(pump,LOW)
#define PumpOff   digitalWrite(pump,HIGH)

void setup() 
{
  PumpOff;
  pinMode(leftMotorForward, OUTPUT);
  pinMode(leftMotorBackward, OUTPUT);

  pinMode(rightMotorForward, OUTPUT);
  pinMode(rightMotorBackward, OUTPUT);

  pinMode(pump, OUTPUT);

  servo.attach(10);
  servo.write(90); 

  Serial.begin(9600);                                                                       
}


void fireExtinguisher()
{
  digitalWrite(leftMotorForward,LOW);
  digitalWrite(leftMotorBackward,LOW);
  digitalWrite(rightMotorForward,LOW);
  digitalWrite(rightMotorBackward,LOW);

  Pump_On;

  for (pos = 50; pos <= 150; pos += 1) { 
    servo.write(pos); 
    delay(10);  
  }
  for (pos = 150; pos >= 50; pos -= 1) { 
    servo.write(pos); 
    delay(10);
  }

  PumpOff;
  servo.write(90);
}

void loop() 
{
  sensorValueRight = analogRead(sensorRight);    
  Serial.print("Right sensor: ");         
  Serial.println(sensorValueRight);

  sensorValueForward = analogRead(sensorForward);   
  Serial.print("Forward sensor: ");             
  Serial.println(sensorValueForward);

  sensorValueLeft = analogRead(sensorLeft);  
  Serial.print("Left sensor: ");              
  Serial.println(sensorValueLeft); 

  if(sensorValueRight > 740)
  {
    digitalWrite(leftMotorForward,HIGH);
    digitalWrite(leftMotorBackward,LOW);
    digitalWrite(rightMotorForward,LOW);
    digitalWrite(rightMotorBackward,LOW);

    delay(500);

    fireExtinguisher();
  }else if(sensorValueForward > 740)
  {
    digitalWrite(leftMotorForward,HIGH);
    digitalWrite(leftMotorBackward,LOW);
    digitalWrite(rightMotorForward,HIGH);
    digitalWrite(rightMotorBackward,LOW);

    delay(500);

    fireExtinguisher();
  }else if(sensorValueLeft > 740)
  {
    digitalWrite(leftMotorForward,LOW);
    digitalWrite(leftMotorBackward,LOW);
    digitalWrite(rightMotorForward,HIGH);
    digitalWrite(rightMotorBackward,LOW);

    delay(500);

    fireExtinguisher();
  }else
  {
    digitalWrite(leftMotorForward,LOW);
    digitalWrite(leftMotorBackward,LOW);
    digitalWrite(rightMotorForward,LOW);
    digitalWrite(rightMotorBackward,LOW);

    delay(500);
  }
}

yes, my bad, on project it was pin 8, I forgot to change drawing

Thank you, pump is off now by default

How many topics on this subject are you going to open?

I made topics on things that I need and there are different categories, when I got answer on what I need, I mark it as "Solution" and I keep working on my project untill I find other problem

As long as the topics actually involve a completely different problem it's OK

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.