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