Et mootorit juhtida ühte ja teist pidi, oleks vaja muuta mootori klemmide polaarsust. Siinkohal aitab meid välja mootori draiver L293D (või SN754410). Tegemist on nelja kanalise mootori draiveriga, mis on mõeldud mootorite, releede või muude induktiivsete elektriseadmete juhtimiseks.
Ultrahelianduri HC-SR04 ühendamine Arduinoga
Ultraheli sensor on andur (sonar), mis mõõdab heliimpulsi abil kaugust eesoleva takistuseni. Nimelt mõõdetakse heliimpulsi saatmisest vastuvõtmiseni (kaja) kuluv aeg. Arvesse tuleb võtta veel heli levimise kiirus 340m/s ning tulemus jagada kahega.
kasutasin Katses:
- arduino uno
- arduino plaat
- takesti
- juhtmed
- L293D
- Ultrahelianduri HC-SR04 ühendamine Arduinoga
- servo
- batarey
SKEEM

kood:
#define ECHO_PIN 8
#define TRIG_PIN 7
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(ECHO_PIN, INPUT);
pinMode(TRIG_PIN, OUTPUT);
Serial.begin(960);
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:
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);
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
}
}
Code language: PHP (php)
Ülesanne:
komponendid:
- Arduino Uno
- Arendusplaat
- takisti
- Potintsiomeeter
- juhtmed
- LCD
- rezistor
kood:
#include <LiquidCrystal.h>
const int trigPin = 7;
const int echoPin = 8;
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
unsigned long objectDetectedTime = 0;
const unsigned long displayDuration = 5000;
byte DOT[8] = {
0b11111,
0b11111,
0b11111,
0b11111,
0b11111,
0b11111,
0b11111,
0b11111
};
void setup() {
lcd.createChar(0, DOT);
lcd.begin(16, 2);
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
}
void loop() {
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
long duration = pulseIn(echoPin, HIGH);
int distance = duration * 0.034 / 2;
if (distance < 200) {
if (objectDetectedTime == 0) {
objectDetectedTime = millis();
fillScreenWithSmiley();
}
} else {
if (objectDetectedTime > 0 && millis() - objectDetectedTime >= displayDuration) {
objectDetectedTime = 0;
clearScreen();
}
}
delay(100);
}
void fillScreenWithSmiley() {
lcd.setCursor(0, 0);
lcd.write(byte(0));
lcd.write(byte(0));
lcd.setCursor(14, 0);
lcd.write(byte(0));
lcd.write(byte(0));
lcd.setCursor(0, 1);
for (int Korda = 0; Korda < 16; Korda++)
{
lcd.write(byte(0));
}
}
void clearScreen() {
lcd.clear();
lcd.setCursor(2, 1);
for (int Korda = 0; Korda < 12; Korda++)
{
lcd.write(byte(0));
}
}
Code language: PHP (php)
Skeem:

video: