ROB. MOOTOR ja KAUGUSEMÕÕTMISE ANDUR.

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

  1. Arduino plaat
  2. Arendus plaat
  3. 4 patareid
  4. kaugusandur
  5. 1 punane led
  6. 1 roheline LED
  7. 3 takistit
  8. 1 piezo
  9. 1 servo motoor
  10. Mootori draiver L293D
  11. 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: