Praktika 7 Mootor ja kaugusemõõtmise andur

Katse 7.1 “Mootori kasutamine”

Komponendid:

L293D – 1
Mootor – 1
Arendusplaat – 1
Emaplaat – 1
Nupp – 1
Taikisti – 1 (220 Om)
Juhe – 18
Patarei – 1

Skeem:

Kood:

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 

 } 

} 

Katse 7.2 “Kauguse mõõtmise anduri kasutamine”

Komponendid:

HC-SR04 – 1
Juhe – 4

Skeem:

Kood:

#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);

}
 ------------------------------------------------------------------------------------------------------------

#define ECHO_PIN 8

#define TRIG_PIN 7

void setup() {

  pinMode(ECHO_PIN, INPUT);

  pinMode(TRIG_PIN, OUTPUT);

  Serial.begin(9600);

}

void loop() {

  digitalWrite(TRIG_PIN,HIGH);

  digitalWrite(TRIG_PIN,LOW);

  int distance=pulseIn(ECHO_PIN, HIGH)/50;

  Serial.println(distance);

}

7.3 Katse “Lihtne parkimissüsteem”

Komponendid:

Mootor – 1
LED – 1
Emaplaat – 1
Buzzer – 1
Juhe – 10
Taikisti – 2 (220 Om)

Skeem:

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);
  }
}

Katse 7.4 “Mootiri käivitamine L298N draiveriga”

Komponendid:

L298N – 1
Emaplaat – 1
Patarei – 1
Mootor – 1
Juhe – 12

Skeem:

Kood:

int IN3 = 5; // Input3 подключен к выводу 5
int IN4 = 4;

void setup()
{
pinMode (IN4, OUTPUT);
pinMode (IN3, OUTPUT);
}
void loop()
{
// На пару выводов "IN" поданы разноименные сигналы, мотор вращается
digitalWrite (IN4, HIGH);
digitalWrite (IN3, LOW);
delay(4000);
// На пару выводов "IN" поданы одноименные сигналы, мотор не вращается
digitalWrite (IN4, LOW);
delay(500);
// На пару выводов "IN" поданы разноименные (и уже противоположные относительно первого случая) сигналы, мотор вращается
// относительно первого случая) сигналы, мотор вращается в другую сторону
digitalWrite (IN3, HIGH);
delay(4000);
// Снова на выводах "IN" появились одноименные сигналы, мотор не вращается
digitalWrite (IN3, LOW);
delay(5000);
}
-------------------------------------------------------------------------------------------------------------
int IN3 = 5; // Input3 подключен к выводу 5 
int IN4 = 4;
int ENB = 3;
void setup()
{
 pinMode (ENB, OUTPUT); 
 pinMode (IN3, OUTPUT);
 pinMode (IN4, OUTPUT);
}
void loop()
{
  // На пару выводов "IN" поданы разноименные сигналы, мотор готов к вращению
  digitalWrite (IN3, HIGH);
  digitalWrite (IN4, LOW);
  // подаем на вывод ENB управляющий ШИМ сигнал 
  analogWrite(ENB,55);
  delay(2000);
  analogWrite(ENB,105);
  delay(2000);
  analogWrite(ENB,255);
  delay(2000);
  // Останавливаем мотор, подав на вывод ENB сигнал низкого уровня. 
  // Состояние выводов "IN" роли не играет.
  analogWrite(ENB,0);
  delay(5000);
}
-------------------------------------------------------------------------------------------------------------

int IN1 = 5; // Input1 подключен к выводу 5 
int IN2 = 4;
int IN3 = 3;
int IN4 = 2;
int ENA = 9;
int ENB = 3;
int i;
void setup()
{
  pinMode (EN1, OUTPUT);
  pinMode (IN1, OUTPUT);
  pinMode (IN2, OUTPUT);
  pinMode (EN2, OUTPUT);
  pinMode (IN4, OUTPUT);
  pinMode (IN3, OUTPUT);
}
void loop()
{
  digitalWrite (IN2, HIGH);
  digitalWrite (IN1, LOW); 
  digitalWrite (IN4, HIGH);
  digitalWrite (IN3, LOW); 
  for (i = 50; i <= 180; ++i)
  {
      analogWrite(EN1, i);
      analogWrite(EN2, i);
      delay(30);
  }
  analogWrite (EN1, 0);
  analogWrite (EN2, 0);
  delay(500);
  digitalWrite (IN1, HIGH);
  digitalWrite (IN2, LOW); 
  digitalWrite (IN3, HIGH);
  digitalWrite (IN4, LOW);
  for (i = 50; i <= 180; ++i)
  {
      analogWrite(EN1, i);
      analogWrite(EN2, i);
      delay(30);
  }
  analogWrite (EN1, 0);
  analogWrite (EN2, 0);
  delay(8000);
}