Dupa cum scrie in titlu este vorba de masurarea distantei cu ajutorul unui senzor ultrasonic.
Cunoscandu-se viteza sunetului, se calculeaza timpul in care senzorul emite ultrasunete si timpul in care se reflecta de la un obiect inapoi la senzor, astfel putindu-se calcula distanta la care este obiectul care a reflectat inapoi ultrasunetul transmis de senzor.
Codul este preluat de pe arduino.cc si adaptat la un ecran 1602 cu interfata i2C (asta doar sa nu avem mult prea multe fire si mult prea multi pini ocupati in arduino).
Am facut si un mic video despre acest mic proiect
Codul pe care l-am incarcat in arduino i-l puteti lua de pe pastebin
sau de aici:
Code: Select all
#include "LiquidCrystal_I2C.h"
LiquidCrystal_I2C lcd(0x27,16,2);
const int trigPin = 2;
const int echoPin = 3;
long duration;
int distanceCm, distanceInch;
void setup() {
lcd.init();
lcd.backlight();
lcd.begin(16,2);
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
lcd.setCursor(4,0);
lcd.print("HC-SRO4");
lcd.setCursor(1,1);
lcd.print("Distance meter");
delay(3000);
lcd.clear();
lcd.setCursor(2,0);
lcd.print("Daradici");
lcd.setCursor(7,1);
lcd.print("Levente");
delay(3000);
lcd.clear();
lcd.setCursor(2,0);
lcd.print("Arduino for");
lcd.setCursor(3,1);
lcd.print("beginners");
delay(3000);
lcd.clear();
}
void loop() {
digitalWrite(trigPin, LOW);
delay(2);
digitalWrite(trigPin, HIGH);
delay(10);
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH);
distanceCm= duration*0.034/2;
distanceInch = duration*0.0133/2;
lcd.setCursor(0,0);
lcd.print("Distance: ");
lcd.setCursor(5,1);
lcd.print(distanceCm);
lcd.print(" cm");
delay(500);
lcd.clear();
}
S-a folosit un Arduino Uno (clona de fapt) dar se pot folosi si alte varietati ale acestuia.