Haidy alaaammar yassienHazem Bana
Published

The Terminator

A low-cost disinfectant robot that is easy to operate, help control the increase of coronavirus cases and prevent harm to others.

IntermediateProtip1,562
The Terminator

Things used in this project

Hardware components

Arduino Nano R3
Arduino Nano R3
×1
Breadboard (generic)
Breadboard (generic)
×1
Relay Module (Generic)
×1
Dual H-Bridge motor drivers L298
SparkFun Dual H-Bridge motor drivers L298
×1
Micro Metal Gearmotor to LEGO® Axle Adaptor (pack of 4)
Pimoroni Micro Metal Gearmotor to LEGO® Axle Adaptor (pack of 4)
×2
LED (generic)
LED (generic)
×2
Circular Connector Cable Seal, Heat Shrinkable Sealing Boot
Circular Connector Cable Seal, Heat Shrinkable Sealing Boot
×1
Proximity Sensor
Proximity Sensor
×3

Hand tools and fabrication machines

3D Printer (generic)
3D Printer (generic)
Multitool, Screwdriver
Multitool, Screwdriver
Drill / Driver, Cordless
Drill / Driver, Cordless

Story

Read more

Custom parts and enclosures

cad_2_Swc5jWemuF.jpeg

cad_3_RSl7hcR3lb.jpeg

CAD

Schematics

circuit assembly

explanation is in the story

Code

Arduino code

Arduino
all explanation is in the story
//Distance Analog Sensors (Sharp)
const int SD1 = 2; //left  sensor
const int SD2 = 1; //right  sensor
const int SD3 = 4; //front side sensor
const int SD4 = 3; //front side sensor

// fluid sensor
const int tank_level = 5; //fluid sensor

// Define motor pins
#define in1 6
#define in2 7
#define in3 4
#define in4 5


const int pump =  3;      // Pump relay pin
int green_led = 12;   // geen led indicator
int red_led = 9;     // red led indicator



void setup() {

  // define motor pins as OUTPUT
  pinMode(in1, OUTPUT);
  pinMode(in2, OUTPUT);
  pinMode(in3, OUTPUT);
  pinMode(in4, OUTPUT);

  // define led indicator as output
  pinMode(green_led, OUTPUT);
  pinMode(red_led, OUTPUT);

  // define sharp ir sensor as input
  pinMode(SD1, INPUT);
  pinMode(SD2, INPUT);
  pinMode(SD3, INPUT);
  pinMode(SD4, INPUT);

  // define pump as an output
  pinMode(pump, OUTPUT);

  // start serial comunication to print sensor values
  Serial.begin(9600);


}

// turn the robot left
void left() {
  digitalWrite ( in1 , HIGH);
  digitalWrite ( in2 , LOW);
  digitalWrite ( in3 , HIGH);
  digitalWrite ( in4 , LOW);
  digitalWrite ( red_led , HIGH);
  digitalWrite ( green_led , LOW);

}
// go back
void back() {
  digitalWrite ( in1 , HIGH);
  digitalWrite ( in2 , LOW);
  digitalWrite ( in3 , HIGH);
  digitalWrite ( in4 , LOW);
  digitalWrite ( red_led , LOW);
  digitalWrite ( green_led , LOW);
}

// go forward
void forward() {
  digitalWrite ( in1 , LOW);
  digitalWrite ( in2 , HIGH);
  digitalWrite ( in3 , HIGH);
  digitalWrite ( in4 , LOW);
  digitalWrite ( green_led , HIGH);
  digitalWrite ( red_led , LOW);

}
// turn right
void right() {
  digitalWrite ( in1 , LOW);
  digitalWrite ( in2 , HIGH);
  digitalWrite ( in3 , LOW);
  digitalWrite ( in4 , HIGH);
  digitalWrite ( red_led , HIGH);
  digitalWrite ( green_led , LOW);
}
// stop the robot
void STOP() {
  digitalWrite ( in1 , LOW);
  digitalWrite ( in2 , LOW);
  digitalWrite ( in3 , LOW);
  digitalWrite ( in4 , LOW);
}


void loop() {
  // start to read data  from ir sensor
  float volts_front_1 = analogRead(SD3) * 0.0048828125; // value from sensor * (5/1024)
  int dist_front_1 = 13 * pow(volts_front_1, -1); // worked out from datasheet graph
  //**********************
  float volts_front_2 = analogRead(SD4) * 0.0048828125; // value from sensor * (5/1024)
  int dist_front_2 = 13 * pow(volts_front_2, -1); // worked out from datasheet graph
  //**********************
  float volts_right = analogRead(SD2) * 0.0048828125; // value from sensor * (5/1024)
  int dist_right = 13 * pow(volts_right , -1); // worked out from datasheet graph
  //**********************
  float volts_left = analogRead(SD1) * 0.0048828125; // value from sensor * (5/1024)
  int dist_left = 13 * pow(volts_left , -1); // worked out from datasheet graph



  Serial.println(dist_front_2);
  //Serial.println(sdSHARP(SD2));
  if (dist_front_1 && dist_front_2 > 8) {  // go forward
    forward();
    // turn the pump on
    digitalWrite(pump, HIGH);

    Serial.println ("forward");
  }

  if ( dist_front_2 < 5) {
    right();
    // turn the pump on
    digitalWrite(pump, HIGH);

    Serial.println ("rigth ");
  }
  if ( dist_front_1 < 5) {
    left();
    // turn the pump on
    digitalWrite(pump, HIGH);

    Serial.println ("left");
  }

  else {

  }
  //delay(100);

}

Credits

Haidy alaa
1 project • 0 followers
Contact
ammar yassien
1 project • 0 followers
Contact
Hazem Bana
1 project • 0 followers
Contact

Comments

Please log in or sign up to comment.