Ülesanne 7.1 Prügikast.

7.1 Katse Mootori kasutamine

int switchPin = 2; // lüliti 1 

int switchPin2 = 1; // lüliti 2 

int potPin = A0; // potentsiomeeter 

int motor1Pin1 = 3; // viik 2 (L293D) 

int motor1Pin2 = 4; // viik 7 (L293D) 

int enablePin = 9; // viik 1(L293D) 

 void setup() { 

 // sisendid 

 pinMode(switchPin, INPUT); 

 pinMode(switchPin2, INPUT); 

 //väljundid 

 pinMode(motor1Pin1, OUTPUT); 

 pinMode(motor1Pin2, OUTPUT); 

 pinMode(enablePin, OUTPUT); 

} 

 void loop() { 

 //mootori kiirus 

 int motorSpeed = analogRead(potPin); 

 //aktiveeri mootor 

 if (digitalRead(switchPin2) == HIGH)

{ 

 analogWrite(enablePin, motorSpeed); 

 } 

else 

{ analogWrite(enablePin, 0); } 

 // kui lüliti on HIGH, siis liiguta mootorit ühes suunas: 

 if (digitalRead(switchPin) == HIGH)

{

 digitalWrite(motor1Pin1, LOW); // viik 2 (L293D) LOW 

 digitalWrite(motor1Pin2, HIGH); // viik 7 (L293D) HIGH 

 } 

 // kui lüliti on LOW, siis liiguta mootorit teises suunas: 

 else 

{ 

 digitalWrite(motor1Pin1, HIGH); // viik 2 (L293D) HIGH 

 digitalWrite(motor1Pin2, LOW); // viik 7 (L293D) LOW 

 } 

}
https://www.tinkercad.com/things/5b1ZwoMj7Jb-grand-inari

7.2 Katse Kauguse mõõtmise anduri kasutamine

#define PING_PIN 7  // Используется один пин

void setup() {
  Serial.begin(9600);
}

void loop() {
  long duration, cm;

  pinMode(PING_PIN, OUTPUT);
  digitalWrite(PING_PIN, LOW);
  delayMicroseconds(2);
  digitalWrite(PING_PIN, HIGH);
  delayMicroseconds(5);
  digitalWrite(PING_PIN, LOW);

  pinMode(PING_PIN, INPUT);
  duration = pulseIn(PING_PIN, HIGH);

  cm = duration / 29 / 2;

  Serial.println(cm);
  delay(100);
} 
https://www.tinkercad.com/things/7zOhQetSLVb-sizzling-fyyran-snicket

7.3 Katse Lihtne parkimissüsteem

#define PING_PIN 7         // Один сигнальный пин
int motorPin1 = 3;
int distance = 1;
int LedPin = 13;
const int buzzerPin = 9;

void setup() {
  pinMode(PING_PIN, OUTPUT);  // Для сигнала
  pinMode(motorPin1, OUTPUT);
  pinMode(LedPin, OUTPUT);
  pinMode(buzzerPin, OUTPUT);
  Serial.begin(9600);
}

void loop() {
  long duration;

  // Отправляем ультразвуковой импульс
  pinMode(PING_PIN, OUTPUT);
  digitalWrite(PING_PIN, LOW);
  delayMicroseconds(2);
  digitalWrite(PING_PIN, HIGH);
  delayMicroseconds(5);
  digitalWrite(PING_PIN, LOW);

  // Принимаем отражённый сигнал
  pinMode(PING_PIN, INPUT);
  duration = pulseIn(PING_PIN, HIGH);

  distance = duration / 58;
  Serial.println(distance);

  if (distance > 50) {
    analogWrite(motorPin1, 100);
    digitalWrite(LedPin, LOW);
    noTone(buzzerPin);
    delay(1000);
  } else {
    analogWrite(motorPin1, 0);
    digitalWrite(LedPin, HIGH);
    tone(buzzerPin, 1000);
  }
} 
https://www.tinkercad.com/things/3C2KMsILbU5-spectacular-leelo-snaget

Ü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:

link tinkercadi: https://www.tinkercad.com/things/dXvXplL52Q0-musor


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.