#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.