nutikasti, või prügikasti või hoiukarp imitatsioon ultrasonic distance sensooriga, mis määrab kauguse objektist, kui kaugus on alla 10 cm, avaneb kast, paneme asi sisse, kaas on lahti kuni eemaldame käe ultrahelisensorist.
#include <LiquidCrystal.h>
#include <Servo.h>
#define echo 3
#define trig 4
float duration; // aeg, mis pulsil kulub tagasipöördumiseks
float distance; // impulsi läbitud ühesuunaline vahemaa
LiquidCrystal lcd(13, 12, 11, 10, 9, 8);//lcd(RS,EN,D4,D5,D6,D7)
Servo lidServo;
void setup() {
pinMode(trig, OUTPUT);
pinMode(echo, INPUT);
Serial.begin(9600);
lcd.begin(16, 2);
lidServo.attach(5);
}
void loop() {
time_Measurement();
distance = duration * (0.0343) / 2;
//arvutab läbitud ühesuunalise vahemaathe //pulse
display_distance();
//kui kaugus objektini vähem kui 10 cm servo pöörab ja
//avab prügikasti kaane
if (distance < 10){
openLid();
} else {
closeLid();
}
}
void time_Measurement()
{ //funktsioon, et mõõta aega, mis kulub impulsi tagasipöördumiseks
digitalWrite(trig, LOW);
delayMicroseconds(2);
digitalWrite(trig, HIGH);
delayMicroseconds(10);
digitalWrite(trig, LOW);
duration = pulseIn(echo, HIGH);
}
void display_distance()
{
//funktsioon vahemaa kuvamiseks LCD/serial Monitoril
lcd.clear();
lcd.setCursor(0, 0);
Serial.print("Distance in Cm: ");
Serial.print(distance);
Serial.println();
lcd.print("Distance in Cm: ");
lcd.setCursor(5, 1);
lcd.print(distance);
delay(1000);
}
void openLid() {
// Rotate the servo to open the lid
lidServo.write(90); // Adjust the angle as needed to fully open the lid
}
void closeLid() {
// Rotate the servo to close the lid
lidServo.write(0); // Adjust the angle as needed to fully close the lid
}
1.Tinkercard
2. Katset klaasis
eelmisest õppetunnist