🧩 7.1 Mootori kasutamine H-sillaga (L293D)

🎯 Eesmärk

  • Õppida kontrollima mootori pöörlemissuunda ja kiirust
  • Kasutada H-silda (L293D) kahe suuna kontrolliks
  • Lisada lülitid ja muuttakisti (potentsiomeeter) kasutajasisenditeks

🔌 Vajalikud komponendid

  • Arduino Uno
  • L293D või SN754410 (mootoridraiver)
  • DC mootor
  • 9V patarei + hoidja
  • 2x lülitit
  • 2x 10 kΩ takistit
  • 1x potentsiomeeter
  • Jumper-juhtmed, leivaplaat

⚙️ L293D tööpõhimõte (H-sild)

  • Võimaldab juhtida pöörlemissuunda: vahetab mootori klemmide polaarsust
  • 16 jalga, sh:
    • 1 (Enable1) – lubab mootor1 töö
    • 2, 7 – juhtsignaalid mootor1 jaoks (INPUT1, INPUT2)
    • 3, 6 – ühendatud mootoriga (OUTPUT1, OUTPUT2)
    • 4, 5, 12, 13 – maandus
    • 8 (Vs) – mootori toide (kuni 36V)
    • 16 (Vss) – kiibi toide (5V)

🧭 Ühendused Arduino ja L293D vahel

L293D jalgFunktsioonArduino pin
1Enable1D9
2Input1D3
7Input2D4
3,6Outputmootorile
8Vs+9V patarei
16Vss+5V Arduino
4,5,12,13GNDGND

Lisaks:

  • Lüliti 1 → D2 (pöörlemissuund)
  • Lüliti 2 → D1 (mootori sisse/välja)
  • Potentsiomeeter → A0 (kiirus)

📌 Kokkuvõte

  • L293D võimaldab kahesuunalist mootorikontrolli
  • Kasutades lüliteid ja potentsiomeetrit, saab luua interaktiivse juhtsüsteemi
  • Sobib hästi robotiprojektide ja sõidukite juhtimiseks

Ülesanne 7.1 Rahakarp

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

const int trigPin = 12, echoPin = 11;
const int servoPin = 13;
const int redPin = 6, greenPin = 4, bluePin = 5;
LiquidCrystal lcd(8, 9, 0, 1, 2, 3);
Servo lid;

unsigned long lastInsert = 0;
int coinCount = 0;

void setup() {
  pinMode(trigPin, OUTPUT);
  pinMode(echoPin, INPUT);
  pinMode(redPin, OUTPUT);
  pinMode(greenPin, OUTPUT);
  pinMode(bluePin, OUTPUT);

  lid.attach(servoPin);
  closeLid();           // alguses kaan suletud → LED punane

  lcd.begin(16, 2);
  lcd.print("Tere tulemast!");
  delay(1000);
  lcd.clear();
  lastInsert = millis();
}

void loop() {
  int dist = measureDistance();
  if (dist < 20) {
    openLid();
    waitForRemoval();
    closeLid();

    coinCount++;
    lastInsert = millis();

    lcd.clear();
    lcd.setCursor(0, 0);
    lcd.print("Aitah muundi eest!");
    lcd.setCursor(0, 1);
    lcd.print("Mundid: ");
    lcd.print(coinCount);
    delay(1500);
    lcd.clear();
  }

  // uuendame ka ülejäänud ekraani infot
  lcd.setCursor(0, 0);
  lcd.print("Mundid: ");
  lcd.print(coinCount);
  lcd.setCursor(0, 1);
  unsigned long dt = (millis() - lastInsert) / 1000;
  if (dt > 120) {
    lcd.print("Ootan kaua... :(");
  } else {
    lcd.print("Viimati: ");
    lcd.print(dt);
    lcd.print("s");
  }
}

// Ultraheli kauguse mõõt
int measureDistance() {
  digitalWrite(trigPin, LOW);
  delayMicroseconds(2);
  digitalWrite(trigPin, HIGH);
  delayMicroseconds(10);
  digitalWrite(trigPin, LOW);
  long d = pulseIn(echoPin, HIGH);
  return d / 58;
}

// Avab kaane: sinine → roheline
void openLid() {
  setColor(0, 0, 255);   // sinine (liigub)
  lid.write(90);
  delay(500);            // oota, kuni servo jõuab
  setColor(0, 255, 0);   // roheline (avatu)
}

// Sulgeb kaane: sinine → punane
void closeLid() {
  setColor(0, 0, 255);   // sinine (liigub)
  lid.write(0);
  delay(500);
  setColor(255, 0, 0);   // punane (suletu)
}

void waitForRemoval() {
  while (measureDistance() < 25) {
    delay(50);
  }
}

// LED-i värvi seadmine
void setColor(int r, int g, int b) {
  analogWrite(redPin, r);
  analogWrite(greenPin, g);
  analogWrite(bluePin, b);
}

🧾 KOKKUVÕTE PROJEKTIST

🎯 Projekti nimi: “Rahakarp” (Ülesanne 7.1)

  • Seade tuvastab mündi lähenemise ultrahelianduri (HC-SR04) abil.
  • Kui münt on lähedal:
    • Servo avab kaane.
    • RGB LED näitab olekut (sinine → roheline).
    • LCD-ekraan kuvab tänusõnumi ja müntide arvu.
    • Kui münt eemaldatakse, kaan sulgub automaatselt.
  • Kui kaua pole midagi lisatud, kuvatakse ooteteade.

🛠 Kasutatud komponendid:

  • Arduino UNO
  • HC-SR04 ultraheli kaugusandur
  • Servo mootor (kaane liigutamiseks)
  • RGB LED (oleku näitamiseks)
  • LCD-ekraan 16×2 (kasutajaliides)
  • Takistid ja breadboard

🔍 Funktsioonide seletus

setup()

  • Määratakse pinMode’id, algväärtused.
  • Servo sulgeb kaane.
  • LCD kuvab tervituse: „Tere tulemast!“

🔁 loop()

  • Mõõdab pidevalt kaugust.
  • Kui objekt on lähemal kui 20 cm:
    • Avab kaane, ootab, kuni münt eemaldatakse, sulgeb kaane.
    • Suurendab müntide loendurit.
    • Kuvab tänusõnumi: „Aitäh mündi eest!“
  • Kuvab pidevalt:
    • Müntide arv.
    • Aeg viimasest sisestusest.

📏 measureDistance()

  • Trigger ja echo-pulss kauguse mõõtmiseks.
  • Tagastab kauguse sentimeetrites.

🔓 openLid() ja closeLid()

  • Servo liigub vastavalt:
    • Sinine valgus = liikumine.
    • Roheline = avatud.
    • Punane = suletud.

waitForRemoval()

  • Ootab, kuni münt eemaldatakse (kaugus > 25 cm).

🎨 setColor(r, g, b)

  • Muudab RGB LEDi värvi vastavalt olukorrale.

🧠 Järeldus

See projekt on automaatne rahakarp:

  • Tuvastab mündi olemasolu.
  • Avab/sulgub automaatselt.
  • Kuvab kasutajale infot ja loendab mündid.

Seega sobib see täielikult Ülesanne 7.1: Rahakarp alla.