Ülesanne 7.1 Rahakarp või Prügikast. Töö paarides.
Töö kirjeldus:
Juhib servomootorit, et avada ja sulgeda värav, kasutades kahte ultrahelisensori. Esimene sensor avab värava, kui keegi läheneb, ja teine sensor loendab prügikonteinerite arvu. Värav suletakse 5 sekundi pärast automaatselt.
Kasutatud komponendid:
• Arduino UNO
• Ultraheliandur (3-pin HC-SR04/HC-SR04P)
• Servomootor
• Breadboard ja ühendusjuhtmed
• LED-RGB
Skeem:

Programm:
#include <Servo.h>
#define TRIG_PIN 11
#define ECHO_PIN 12
#define TRIG_PIN2 10
#define ECHO_PIN2 9
#define SERVO_PIN 13
Servo myServo;
int counter = 0;
bool gateOpen = false;
unsigned long gateOpenTime = 0;
void setup() {
Serial.begin(9600);
pinMode(TRIG_PIN, OUTPUT);
pinMode(ECHO_PIN, INPUT);
pinMode(TRIG_PIN2, OUTPUT);
pinMode(ECHO_PIN2, INPUT);
myServo.attach(SERVO_PIN);
myServo.write(0);
}
void loop() {
unsigned long currentMillis = millis();
int distance1 = getDistance(TRIG_PIN, ECHO_PIN);
if (!gateOpen && distance1 > 0 && distance1 < 15) {
myServo.write(0);
gateOpen = true;
gateOpenTime = currentMillis;
Serial.println("Gate opened");
}
if (gateOpen && (currentMillis - gateOpenTime >= 5000)) {
myServo.write(80);
gateOpen = false;
Serial.println("Gate closed");
}
int distance2 = getDistance(TRIG_PIN2, ECHO_PIN2);
if (distance2 > 0 && distance2 < 10) {
counter++;
Serial.print("Trash count: ");
Serial.println(counter);
delay(1500);
}
delay(200);
}
int getDistance(int trigPin, int echoPin) {
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
long duration = pulseIn(echoPin, HIGH, 30000);
if (duration == 0) return -1;
int distance = duration * 0.034 / 2;
return distance;
}
Video:
Kasutusvõimalused tavaelus:
• Köögi prügikast, mida saab kasutada ilma kaant puudutamata.
• Avalikes tualettides hügieenilisemaks prügikäitluseks.
JNE
Lisa kommentaar