#include <Servo.h>
Servo servo1;
Servo servo2;
int trigPin = 5;
int echoPin = 6;
int servo1Pin = 9;
int servo2Pin = 8;
int led= 10;
long duration, dist, average;
long aver[3]; //array for average
int lowerThreshold = 420;
int upperThreshold = 520;
// Sensor pins
#define sensorPower 7
#define sensorPin A0
// Value for storing water level
int val = 0;
int redLED = 2;
int readSensor() {
digitalWrite(sensorPower, HIGH);
delay(10);
val = analogRead(sensorPin);
digitalWrite(sensorPower, LOW);
return val;
}
void setup() {
Serial.begin(9600);
servo1.attach(servo1Pin);
servo2.attach(servo2Pin);
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
servo1.write(0); //close cap on power on
servo2.write(0);
delay(100);
Serial.begin(9600);
pinMode(sensorPower, OUTPUT);
digitalWrite(sensorPower, LOW);
// Set LED pin as an OUTPUT
pinMode(redLED, OUTPUT);
// Initially turn off the LED
digitalWrite(redLED, LOW);
}
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 loop() {
for (int i=0;i<=2;i++) { //average distance
measure();
aver[i]=dist;
delay(10); //delay between measurements
}
dist=(aver[0]+aver[1]+aver[2])/3;
if ( dist<15 ) {
delay(1);
servo1.write(0);
servo2.write(0);
delay(3000);
servo1.write(150);
servo2.write(150);
delay(1000);
int level = readSensor();
if (level <= 50) {
Serial.println("Water Level: Low");
digitalWrite(redLED, HIGH);
}
else if (level > 50) {
Serial.println("Water Level: High");
digitalWrite(redLED, LOW);
}
delay(1000);
}
}
2 servo motoare SG90 nu sunt destul pentru a apasa pompa unei sticle de sapun lichid
Fişierele se încarcă pe wiki folosind facilitatea Add Images or other files. Namespace-ul în care se încarcă fişierele este de tipul :pm:prj20??:c? sau :pm:prj20??:c?:nume_student (dacă este cazul). Exemplu: Dumitru Alin, 331CC → :pm:prj2009:cc:dumitru_alin.