Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <Servo.h> //servo library
- Servo servo;
- //******************************************
- int maxDistanceForFullBin = 7; // distance from sensor for full bin in (CM)
- int redLedPin = 4;
- //******************************************
- int trigPin = 5;
- int echoPin = 6;
- int trigPin1 = 7;
- int echoPin1 = 8;
- int servoPin = 9;
- int led1 = 10;
- long duration, dist, average;
- long duration1, dist1, average1;
- long aver[3]; //array for average
- //******************************************
- long aver1[3]; //array for average1
- int flag = 0;
- //******************************************
- void setup() {
- Serial.begin(9600);
- servo.attach(servoPin);
- pinMode(trigPin, OUTPUT);
- pinMode(echoPin, INPUT);
- pinMode(trigPin1, OUTPUT);
- pinMode(echoPin1, INPUT);
- pinMode(LED1, OUTPUT);
- //******************************************
- pinMode(redLedPin, OUTPUT);
- digitalWrite(redLedPin, LOW);
- //******************************************
- //servo.detach();
- }
- void loop() {
- //******************************************
- readSensorsAndCalculateAverageDistance();
- //******************************************
- if (dist < 50 && flag == 0) {
- digitalWrite(redLedPin, LOW);
- //Change distance as per your need
- //servo.attach(servoPin);
- //delay(1);
- // servo.write(1);
- //delay(800);
- servo.write(0);
- delay(3000);
- servo.write(90);
- delay(900);
- //servo.detach();
- //delay(3000);
- }
- //******************************************
- if (dist1 <= maxDistanceForFullBin) {
- //turn flag to 1 so bin does not open
- flag = 1;
- //turn red led ON
- digitalWrite(redLedPin, HIGH);
- }
- else if (dist1 > maxDistanceForFullBin) {
- //turn flag to 0 so bin can open
- flag = 0;
- //turn red led OFF
- digitalWrite(redLedPin, LOW);
- }
- //******************************************
- }//end of LOOP
- //******************************************
- void readSensorsAndCalculateAverageDistance() {
- for (int i = 0; i <= 2; i++) { //average distance
- measure();
- measure1();
- aver[i] = dist;
- aver1[i] = dist1;
- delay(10); //delay between measurements
- }
- dist = (aver[0] + aver[1] + aver[2]) / 3;
- dist1 = (aver1[0] + aver1[1] + aver1[2]) / 3;
- Serial.print(dist);
- Serial.print(dist1);
- }
- //******************************************
- void measure() {
- digitalWrite(10, HIGH);
- digitalWrite(trigPin, LOW);
- delayMicroseconds(5);
- digitalWrite(trigPin, HIGH);
- delayMicroseconds(15);
- digitalWrite(trigPin, LOW);
- pinMode(echoPin, INPUT);
- duration = pulseIn(echoPin, HIGH);
- dist = (duration / 2) / 29.1; //obtain distance
- }
- void measure1() {
- digitalWrite(10, HIGH);
- digitalWrite(trigPin1, LOW);
- delayMicroseconds(5);
- digitalWrite(trigPin1, HIGH);
- delayMicroseconds(15);
- digitalWrite(trigPin1, LOW);
- pinMode(echoPin1, INPUT);
- duration1 = pulseIn(echoPin1, HIGH);
- dist1 = (duratio1 / 2) / 29.1; //obtain distance
- }
Advertisement
Add Comment
Please, Sign In to add comment