KATSE 1. Mootori kasutamine
SKEEM:

NÄIDIS KOOD:
Esimine:
int switchPin = 2; // lüliti 1
int motor1Pin1 = 3; // viik 2 (L293D)
int motor1Pin2 = 4; // viik 7 (L293D)
int enablePin = 9; // viik 1(L293D)
void setup() {
// sisendid
pinMode(switchPin, INPUT);
//väljundid
pinMode(motor1Pin1, OUTPUT);
pinMode(motor1Pin2, OUTPUT);
pinMode(enablePin, OUTPUT);
// aktiveeri mootor1
digitalWrite(enablePin, HIGH);
}
void loop() {
// 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
}
}
Teine:
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
}
}
Katse 2. Kauguse mõõtmise anduri kasutamine
SKEEM:

NÄIDIS KOOD:
Esimene:
#define ECHO_PIN 8
#define TRIG_PIN 7
void setup() {
pinMode(ECHO_PIN, INPUT);
pinMode(TRIG_PIN, OUTPUT);
Serial.begin(960);
}
void loop() {
digitalWrite(TRIG_PIN,HIGH);
digitalWrite(TRIG_PIN,LOW);
int distance=pulseIn(ECHO_PIN, HIGH)/50;
Serial.println(distance);
}
Teine:
#define ECHO_PIN 8
#define TRIG_PIN 7
void setup() {
pinMode(ECHO_PIN, INPUT);
pinMode(TRIG_PIN, OUTPUT);
Serial.begin(960);
}
void loop() {
Serial.println(measure());
}
int measure()
{
digitalWrite(TRIG_PIN,HIGH);
digitalWrite(TRIG_PIN,LOW);
int distance=pulseIn(ECHO_PIN, HIGH,15000)/50;
return constrain(distance,1,300);
}
KASUTATUD KOMPONENDID:

Katse 3.Lihtne parkimissüsteem
SKEEM:

NÄIDIS KOOD:
#define ECHO_PIN 7
#define TRIG_PIN 8
int motorPin1=3;
int distance=1;
int LedPin=13;
int duration;
const int buzzerPin = 9;
void setup() {
pinMode(ECHO_PIN, INPUT);
pinMode(TRIG_PIN, OUTPUT);
pinMode(motorPin1,OUTPUT);
pinMode(LedPin,OUTPUT);
pinMode(buzzerPin, OUTPUT);
Serial.begin(9600);
}
void loop() {
digitalWrite(TRIG_PIN,LOW);
delay(200);
digitalWrite(TRIG_PIN,HIGH);
delay(200);
digitalWrite(TRIG_PIN,LOW);
duration = pulseIn(ECHO_PIN, HIGH);
distance=duration/58;
Serial.println(distance);
if (distance>50)
{
analogWrite(motorPin1,100);
digitalWrite(LedPin,0);
noTone(buzzerPin);
delay(1000);}
else
{
analogWrite(motorPin1,0);
digitalWrite(LedPin,250);
tone(buzzerPin, 1000);
}
}
PRÜGIKAST
SKEEM

KASUTATUD KOMPONENDID
- Arduino plaat
- Arendus plaat
- 4 patareid
- kaugusandur
- 1 punane led
- 1 roheline LED
- 3 takistit
- 1 piezo
- 1 servo motoor
- Mootori draiver L293D
- 27 juhtmed
Kood:
#define ECHO_PIN 8
#define TRIG_PIN 7
#include <LiquidCrystal.h>
const int RED_PIN = 11;
const int GREEN_PIN = 10;
int motor1Pin1 = 3;
int motor1Pin2 = 4;
int enablePin = 9;
int duration;
const int buzzerPin = 12;
void setup() {
pinMode(RED_PIN, OUTPUT);
pinMode(GREEN_PIN, OUTPUT);
pinMode(buzzerPin, OUTPUT);
pinMode(ECHO_PIN, INPUT);
pinMode(TRIG_PIN, OUTPUT);
pinMode(motor1Pin1, OUTPUT);
pinMode(motor1Pin2, OUTPUT);
pinMode(enablePin, OUTPUT);
digitalWrite(enablePin, HIGH);
Serial.begin(9600);
}
void green(){
digitalWrite(RED_PIN, LOW);
digitalWrite(GREEN_PIN, HIGH);
}
void red(){
digitalWrite(GREEN_PIN, LOW);
digitalWrite(RED_PIN, HIGH);
}
void signall() {
tone(buzzerPin, 1000);
delay(500);
noTone(buzzerPin);
delay(500);
}
unsigned long motorStartTime = 0;
bool motorRunning = false;
void loop() {
int distance = measureDistance();
Serial.print("Vahemaa: ");
Serial.println(distance);
Serial.print("Motor running: ");
Serial.println(motorRunning);
if (motorRunning) {
unsigned long elapsedTime = millis() - motorStartTime;
Serial.print("Elapsed time: ");
Serial.println(elapsedTime);
if (elapsedTime >= 5000) {
// Stop the motor
digitalWrite(motor1Pin1, LOW);
digitalWrite(motor1Pin2, LOW);
motorRunning = false;
Serial.println("Motor stopped");
}
} else {
if (distance < 20) {
digitalWrite(motor1Pin1, HIGH);
digitalWrite(motor1Pin2, LOW);
red();
delay(5000);
digitalWrite(motor1Pin1, LOW);
digitalWrite(motor1Pin2, LOW);
} else if (distance < 70) {
// Start the motor
digitalWrite(motor1Pin1, LOW);
digitalWrite(motor1Pin2, HIGH);
green();
signall();
motorStartTime = millis();
motorRunning = true;
Serial.println("Motor started");
} else {
red();
}
}
delay(500);
}
int measureDistance() {
digitalWrite(TRIG_PIN, LOW);
delayMicroseconds(2);
digitalWrite(TRIG_PIN, HIGH);
delayMicroseconds(10);
digitalWrite(TRIG_PIN, LOW);
long duration = pulseIn(ECHO_PIN, HIGH);
int distance = duration / 58;
return constrain(distance, 2, 400);
}
UUED FUNKTSIOONID:
- int distance=pulseIn(ECHO_PIN, HIGH)/50; – mõõdab impulsi kestust antud tihvtil. Sel juhul mõõdab see impulsi kestust tihvtil, mis on ühendatud ultraheli kajasignaaliga
- int measure() – tagastab väärtuse. See võib olla näiteks mõõdetud kaugus ultraheli kaugusmõõturi abil
- constrain() – piirab väärtust nimetatud piirides
- pinMode(ECHO_PIN, INPUT); – määrab pin-režiimi numbriga ECHO_PIN sisendrežiimi (INPUT). Ultraheli kaugusmõõturi kasutamise kontekstis, mis kasutab sageli kahte tihvti – ühte ultrahelisignaali saatmiseks (tavaliselt nimetatakse “päästikuks”) ja teist peegeldunud signaali vastuvõtmiseks (tavaliselt nimetatakse “kajaks”), seab see kood vastuvõtjaga ühendatud tihvti (peegeldunud signaali vastuvõtmine) sisendrežiimi, et mikrokontroller saaks lugeda sellelt tihvtilt tulevaid andmeid.
- pinMode(switchPin, INPUT); – määrab pin-režiimi numbriga
- pinMode(motor1Pin1, OUTPUT); – määrab pin-režiimi nimega motor1Pin1
- digitalWrite(enablePin, HIGH); – kasutab funktsiooni digitalWrite (), Et määrata väljundnõela olek enable Pфin väärtuseks HIGH (kõrge pingetase)
- int motorSpeed = analogRead(potPin); – loeme analoogväärtuse tihvtilt, mis on ühendatud potentsiomeetriga (potentiometer), ja määrame selle väärtuse muutujale motorSpeed
- analogWrite(enablePin, motorSpeed); – kasutab funktsiooni analogWrite () impulsi laiuse modulatsiooni (PWM) juhtimiseks enablePin-numbriga väljundnõelal. PWM-i kasutatakse selle tihvtiga ühendatud seadme kiiruse või heleduse juhtimiseks.
Kus võib kasutada?
Seda prügikasti saab kasutada kõikjal, välja arvatud väljas, kuna elektroonika pole kaitstud. Kui kaitsete seda, saate seda kasutada õues. Prügikastile lähenedes tõstab see kaane üles, et saaksid prügi välja visata, ja lahkudes sulgub. Sellel pole keerulist mehhanismi, kuid see nõudis veidi mõtlemist, kuidas kõike hõlpsaks kasutamiseks paigutada.
Link: