Techatronic
Published

Smart Farming Robot

A very use ful farming robot

AdvancedFull instructions provided20 hours190
Smart Farming Robot

Things used in this project

Story

Read more

Code

smart farming robot code

C/C++
#include <SoftwareSerial.h>
#include <Servo.h>

SoftwareSerial mySerial(2, 3); // RX, TX
#define SERVO1_PIN 4 // Create Servo object to control a servo
#define SERVO2_PIN 5
// Motor control pins
#define ENA 10
#define ENB 11
#define IN1 6
#define IN2 7
#define IN3 8
#define IN4 9
Servo servo1;
Servo servo2;

int angle1 = 90; // Initial angle for Servo 1
int angle2 = 90; //

void setup()
 {

    servo1.attach(SERVO1_PIN);
    servo2.attach(SERVO2_PIN);

  

    servo1.write(angle1);
    servo2.write(angle2);
    Serial.begin(9600);
    mySerial.begin(9600);
    
    pinMode(ENA, OUTPUT);
    pinMode(ENB, OUTPUT);
    pinMode(IN1, OUTPUT);
    pinMode(IN2, OUTPUT);
    pinMode(IN3, OUTPUT);
    pinMode(IN4, OUTPUT);
     pinMode(A0, OUTPUT);
    pinMode(A1, OUTPUT);
    stopMotors(); // Ensure motors are stopped initially
    digitalWrite(A0, LOW);
    digitalWrite(A1, LOW);
    delay(200);
      pinMode(A4, INPUT);
      pinMode(A5, OUTPUT);
}

void loop() {
    digitalWrite(A5, LOW);
 float m = analogRead(A4);
   float n = (m * 5) / 200;
   Serial.println(n);
   if(n<=5)

   {

digitalWrite(A5, HIGH);
delay(200);
digitalWrite(A5, LOW);
delay(200);

   }
digitalWrite(A0, LOW);
    digitalWrite(A1, LOW);
    if (mySerial.available()) {
        char command = mySerial.read();
        Serial.println(command);
        handleCommand(command);
    }
}

void handleCommand(char command) {
    switch (command) {
        case 'F': moveForward(200); break;
        case 'B': moveBackward(200); break;
        case 'R': turnRight(200); break;
        case 'L': turnLeft(200); break;
        case 'W': moveServos(); break;
        case 'V': upmoveServos(); break;
        default: stopMotors(); break;
    }
}

void moveForward(int speed) {
    analogWrite(ENA, speed);
    analogWrite(ENB, speed);
    digitalWrite(IN1, HIGH);
    digitalWrite(IN2, LOW);
    digitalWrite(IN3, HIGH);
    digitalWrite(IN4, LOW);
    digitalWrite(A0, HIGH);
    digitalWrite(A1, HIGH);
    delay(100);
}

void moveBackward(int speed) {
    analogWrite(ENA, speed);
    analogWrite(ENB, speed);
    digitalWrite(IN1, LOW);
    digitalWrite(IN2, HIGH);
    digitalWrite(IN3, LOW);
    digitalWrite(IN4, HIGH);
    digitalWrite(A0, HIGH);
    digitalWrite(A1, HIGH);
    delay(100);
}

void turnRight(int speed) {
    analogWrite(ENA, speed);
    analogWrite(ENB, speed);
    digitalWrite(IN1, HIGH);
    digitalWrite(IN2, LOW);
    digitalWrite(IN3, LOW);
    digitalWrite(IN4, HIGH);
     digitalWrite(A0, HIGH);
    digitalWrite(A1, HIGH);

}

void turnLeft(int speed) {
    analogWrite(ENA, speed);
    analogWrite(ENB, speed);
    digitalWrite(IN1, LOW);
    digitalWrite(IN2, HIGH);
    digitalWrite(IN3, HIGH);
    digitalWrite(IN4, LOW);
    digitalWrite(A0, HIGH);
    digitalWrite(A1, HIGH);
}

void stopMotors() {
    analogWrite(ENA, 0);
    analogWrite(ENB, 0);
    digitalWrite(IN1, LOW);
    digitalWrite(IN2, LOW);
    digitalWrite(IN3, LOW);
    digitalWrite(IN4, LOW);
    digitalWrite(A0, LOW);
    digitalWrite(A1, LOW);
}

void moveServos() {
    angle1 = min(angle1 + 10, 180);
    angle2 = max(angle2 - 10, 0);
        servo1.write(angle1);
        servo2.write(angle2);
        delay(200);         
                
    }


    void upmoveServos() {
     angle1 = max(angle1 - 10, 0);
                angle2 = min(angle2 + 10, 180);
                servo1.write(angle1);
        servo2.write(angle2);
        delay(200);         
    }

Credits

Techatronic
73 projects • 132 followers
Electronic engineer
Contact

Comments

Please log in or sign up to comment.