Untitled
unknown
plain_text
5 months ago
3.8 kB
2
Indexable
#include <Servo.h> int Motor1 = 255; // Speed for Motor A int Motor2 = 255; // Speed for Motor B int moistureSensorPin = A0; // Pin for the soil moisture sensor int solarSensorPin = A1; // Pin for the solar sensor int triggerPin = 4; // Pin for ultrasonic trigger int echoPin = 5; // Pin for ultrasonic echo int moistureThreshold = 450; // Set an appropriate threshold int moisture_data = 0; // Variable to hold moisture readings int solar_data = 0; // Variable to hold solar readings int sensorDistance = 0; // Variable to hold distance readings Servo servo_2; long readUltrasonicDistance() { pinMode(triggerPin, OUTPUT); // Clear the trigger digitalWrite(triggerPin, LOW); delayMicroseconds(2); digitalWrite(triggerPin, HIGH); delayMicroseconds(10); digitalWrite(triggerPin, LOW); pinMode(echoPin, INPUT); return pulseIn(echoPin, HIGH); } void setup() { Serial.begin(9600); // Initialize serial communication at 9600 bps servo_2.attach(2, 500, 2500); // Attach servo to pin 2 pinMode(3, OUTPUT); // Motor B pinMode(6, OUTPUT); // Direction for Motor B pinMode(7, OUTPUT); // Direction for Motor B (reverse) pinMode(11, OUTPUT); // Motor A pinMode(10, OUTPUT); // Direction for Motor A (reverse) pinMode(8, OUTPUT); // Direction for Motor A } void loop() { // Read ultrasonic sensor sensorDistance = 0.01723 * readUltrasonicDistance(); Serial.print("Distance: "); Serial.println(sensorDistance); // Stop motors if an object is detected within 80 cm if (sensorDistance <= 80) { Serial.println("Object detected. Stopping motors."); digitalWrite(6, LOW); // Stop Motor B digitalWrite(7, LOW); // Stop Motor B analogWrite(3, 0); // Turn off Motor B digitalWrite(8, LOW); // Stop Motor A digitalWrite(10, LOW); // Stop Motor A analogWrite(11, 0); // Turn off Motor A servo_2.write(90); // Optionally, you can move the servo to 90 degrees delay(1000); // Wait for 1 second return; // Exit loop to avoid running motors } else { servo_2.write(0); // Set servo to 0 degrees if no object detected } // Read Soil Moisture moisture_data = analogRead(moistureSensorPin); Serial.print("Moisture Level: "); Serial.println(moisture_data); // Print the moisture level for debugging // Check moisture level and print status if (moisture_data < moistureThreshold) { Serial.println("Soil is dry. Consider watering."); } else { Serial.println("Soil moisture is adequate."); } // Read Solar Level solar_data = analogRead(solarSensorPin); Serial.print("Solar Level: "); Serial.println(solar_data); // Print the solar level for debugging // Check solar level and print status if (solar_data < 300) { Serial.println("Battery low. Returning to charging dock"); } else { Serial.println("Battery adequate"); } // Activate Motors digitalWrite(6, HIGH); // Motor B forward digitalWrite(7, LOW); // Motor B reverse off analogWrite(3, Motor2); // Set speed for Motor B digitalWrite(8, HIGH); // Motor A forward digitalWrite(10, LOW); // Motor A reverse off analogWrite(11, Motor1); // Set speed for Motor A delay(2000); // Run motors for 2 seconds // Stop Motors digitalWrite(6, LOW); // Stop Motor B digitalWrite(7, LOW); // Stop Motor B analogWrite(3, 0); // Turn off Motor B digitalWrite(8, LOW); // Stop Motor A digitalWrite(10, LOW); // Stop Motor A analogWrite(11, 0); // Turn off Motor A delay(1000); // Wait a second before the next cycle }
Editor is loading...
Leave a Comment