Ülesanne 7.1 Rahakarp või Prügikast. Töö paarides.

Uuritud funktsioonid:

lcd.begin() Initsialiseerib LCD-ekraani (16×2).


lcd.setCursor() Määrab, kuhu tekst ekraanil kuvatakse (veerud ja read).

lcd.print() Kuvab teksti LCD-ekraanile.


servo.attach() Seob servomootori kindla digitaalse pinniga.


pulseIn() Mõõdab impulsi kestust (ultrahelianduri tagastusignaal).


pinMode() Määrab pordi sisendi- või väljundirežiimi.


digitalWrite() Seab digitaalse pordi kõrgeks või madalaks (HIGH/LOW).


delay() Paus millisekundites.


Töö kirjeldus:

Projektis valmis nutikas prügikast, mis tuvastab inimese käe või liikumise ultrahelianduri abil ning avab kaane automaatselt servomootori abil. Ekraan kuvab sõnumit selle kohta, kas prügikast on avatud või suletud. Süsteem on loodud praktiliseks kasutuseks — näiteks kööki või vannituppa, kus ei pea kaant käega avama.


Kasutatud komponendid:
 • Arduino UNO
 • Ultraheliandur (3-pin HC-SR04/HC-SR04P)
 • Servomootor SG90
 • LCD-ekraan 16×2 (ilma I2C moodulita)
 • Potentsiomeeter LCD kontrasti jaoks
 • Breadboard ja ühendusjuhtmed
 • LED-RGB


Skeem:


Programm:

#include <LiquidCrystal.h>
#include <Servo.h>

// LCD: RS, E, D4, D5, D6, D7
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

Servo servo;

const int sigPin = 10;
const int redPin = 13;
const int greenPin = 8;
const int bluePin = 9;

void setup() {
  lcd.begin(16, 2);
  Serial.begin(9600);

  servo.attach(7);
  servo.write(0);

  // Настройка пинов RGB светодиода
  pinMode(redPin, OUTPUT);
  pinMode(greenPin, OUTPUT);
  pinMode(bluePin, OUTPUT);

  lcd.setCursor(0, 0);
  lcd.print("Nastja loh! :)");
  lcd.setCursor(0, 1);
  lcd.print("Valmis kasutamiseks");
  delay(4000);
  lcd.clear();
  lcd.setCursor(1, 0);
  lcd.print("Prugikast  ^_^");
  delay(2000);
}

void loop() {
  long duration, distance;

  // Отправка сигнала
  pinMode(sigPin, OUTPUT);
  digitalWrite(sigPin, LOW);
  delayMicroseconds(2);
  digitalWrite(sigPin, HIGH);
  delayMicroseconds(10);
  digitalWrite(sigPin, LOW);

  // Получение сигнала
  pinMode(sigPin, INPUT);
  duration = pulseIn(sigPin, HIGH);

  distance = duration * 0.0343 / 2;

  Serial.println(distance);

  if (distance < 50 && distance > 0) {
    servo.write(90);
    lcd.clear();
    lcd.setCursor(0, 0);
    lcd.print("Kast avatud :)");

    digitalWrite(greenPin, HIGH);  // Зелёный свет
    digitalWrite(redPin, LOW);
    digitalWrite(bluePin, LOW);
  } else {
    servo.write(0);
    lcd.clear();
    lcd.setCursor(0, 0);
    lcd.print("Kast suletud :(");

    digitalWrite(redPin, HIGH);   // Красный свет
    digitalWrite(greenPin, LOW);
    digitalWrite(bluePin, LOW);
  }

  delay(500);
}

Video:



Kasutusvõimalused tavaelus:
 • Köögi prügikast, mida saab kasutada ilma kaant puudutamata.
 • Avalikes tualettides hügieenilisemaks prügikäitluseks.
 • Kasutatav ka nutika rahakarbi versioonina (nt annetuste kogumiseks).
 • Võimalik lisada RGB LED, mis annab tagasisidet meeleolu kohta.


Comments

Lisa kommentaar

Sinu e-postiaadressi ei avaldata. Nõutavad väljad on tähistatud *-ga