Mootor ja kaugusemõõtmise andur

Rahakarp

Töö kirjeldus

Koodi kirjutamine, virtuaalse skeemi loomine koodi testimiseks ja valmis tulemus päris skeemil.

Kasutatud komponeendid

  • Adruino Uno R3 – 1
  • Breadboard Small – 1
  • Servo mootor — 1
  • LED — 1 (RGB)
  • Taikisti — 4 (220 Om)
  • Juhe — 23
  • LCD ekraan — 1
  • Potentsiomeeter — 1
  • HC-SR04 — 1

Töö protsess

Mündi sisestamisel avaneb mündipõrsa kaas, ekraanile ilmub teade „Aitäh mündi eest“ ja kaas sulgub seejärel. Tavaliselt kuvatakse ekraanil müntide arv. Pika kasutuspausi korral kuvatakse teade tegevusetusest. LED-tuli põleb siniselt tavarežiimis, roheliselt mündi sisestamisel ja punaselt pika tegevusetuse korral.

Ühendamise skeem (www.tinkercad.com)

https://www.tinkercad.com/things/l9Ggjg9NpwU-incredible-curcan?sharecode=O98KWd5KssZz_PMGU1FSZasTN1AMiBj20NhC_w8I5P4

Programm/kood kommentaridega

#include <Servo.h>
#include <LiquidCrystal.h>
 
#define TRIG_PIN 10
#define ECHO_PIN 9
 
const int RED_LED = 6;
const int GREEN_LED = 7; 
const int BLUE_LED = 8;
Servo servo;
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
 
 
int coinCount = 0;
unsigned long lastCoinTime = 0;
unsigned long waitThreshold = 15000; 
 
void setup() {
  Serial.begin(9600);
   
 
  pinMode(TRIG_PIN, OUTPUT);
  pinMode(ECHO_PIN, INPUT);
   
  pinMode(RED_LED, OUTPUT);
  pinMode(GREEN_LED, OUTPUT);
  pinMode(BLUE_LED, OUTPUT);
   
  servo.attach(13);
  servo.write(0); 
   
  lcd.begin(16, 2);
  lcd.print("Tere tulemast!");
  delay(2000);
  lcd.clear();
  updateLCD();
}
 
long readDistance() {
  digitalWrite(TRIG_PIN, LOW);
  delayMicroseconds(2);
  digitalWrite(TRIG_PIN, HIGH);
  delayMicroseconds(10);
  digitalWrite(TRIG_PIN, LOW);
   
  long duration = pulseIn(ECHO_PIN, HIGH);
  return duration * 0.034 / 2; 
}
 
void openLid() {
  servo.write(90); 
  delay(5000);
  servo.write(0);  
}
 
void setColor(bool r, bool g, bool b) {
  digitalWrite(RED_LED, !r);
  digitalWrite(GREEN_LED, !g);
  digitalWrite(BLUE_LED, !b);
}
 
void updateLCD() {
  lcd.clear();
  lcd.setCursor(0, 0);
  lcd.print("Mundid: ");
  lcd.print(coinCount);
}
 
void loop() {
  long distance = readDistance();
 
   
  if (distance > 3 && distance < 15) {
    openLid();
    coinCount++;
    lastCoinTime = millis();
     
 
    setColor(false, true, false); 
    lcd.clear();
    lcd.setCursor(0, 0);
    lcd.print("Aitah! :)");
    lcd.setCursor(0, 1);
    lcd.print("Mundid: ");
    lcd.print(coinCount);
    delay(3000);
    updateLCD();
  }
 
   
  if (millis() - lastCoinTime > waitThreshold) {
    setColor(true, false, false); 
    lcd.clear();
    lcd.setCursor(0, 0);
    lcd.print("Ootan kaua... :(");
    lcd.setCursor(0, 1);
    lcd.print("Mundid: ");
    lcd.print(coinCount);
    delay(3000);
    updateLCD();
    lastCoinTime = millis(); 
  } else {
    setColor(false, false, true); 
  }
 
  delay(300);
}

Video

https://drive.google.com/file/d/1vAPQMYaU0MqEryjNnIKj_B5PQt6BnEk6/view?usp=sharing

Kasutamisvõimalused tavaelus.

  • Parkimissüsteem
  • Kohaloleku kontroll

Lehed: 1 2 3