Рис. 1.Зовнішній вигляд ультразвукового далекоміру HC-SR04
Рис 2. Осцилограма роботи ультразвукового датчика
Рис 3. Схема під’єднання датчиків до модуля Arduino Uno
Рис 4. Вікно роботи програми, що приймає дані з Arduino
#include<Wire.h> // бібліотека підтримки інтерфейсу I2C(TWI)
#include<BMP085.h> // бібліотека підтримки датчика BMP085
BMP085 dps = BMP085();
longTemperature = 0, Pressure = 0;// змінні температури та тиску
constintTrig = 8;
constintEcho = 10;
constintled_ready = 7;// індикатор готовності
constintled_measurement = 5;// індикація вимірювання
int i; // змінна циклу
intval;//змінна для читання стартового символа'H'
voidsetup()
{
pinMode(Trig, OUTPUT);
pinMode(Echo, INPUT);
pinMode(led_ready, OUTPUT);
pinMode(led_measurement, OUTPUT);
Serial.begin(9600);
Wire.begin(); //підключення до шини i2c
delay(1000);
dps.init(); // підключення датчика BMP085
}
longtime_us=0;
voidloop()
{
digitalWrite(led_ready, HIGH); // індикація готовності
if (Serial.available()) //якщо є принятий символ
{ val = Serial.read(); // читаємо його і прсвоюємо його значення змінній val
if (val == 'H') // якщо цей символ Н
{Serial.println(" ");
Serial.println("***************");
Serial.println("Time(mks):");
digitalWrite(led_ready, LOW);
digitalWrite(led_measurement, HIGH); // індикація вимірювання
i=0; // обнулити лічильник кількості вимірювань часу
{ while (i<=10)
{//Визначаємо час HC-SR04
digitalWrite(Trig, HIGH); // Подаємо сигнал високого рівня на вихід микроконтроллера
delayMicroseconds(100); // Тримаємо 100 мікросекунд
digitalWrite(Trig, LOW); // Подаємо сигнал низького рівня - посилається уз сигнал
time_us=pulseIn(Echo, HIGH); // Вимірюємо довжину імпульса
Serial.println(time_us); // Виводимо у COM порт
delay(200);
i++;
}
//Визначаємо тиск і температуру BMP-180
dps.getPressure(&Pressure);
dps.getTemperature(&Temperature);
Serial.print("Atmospherepressure(mm Hg):");
Serial.println(Pressure/133.3,1); //Виводимо значення тиску в мм.рт.ст.
Serial.print("Airtemperature (degreesCelsius):");
Serial.println(Temperature*0.1,1); // Виводимо температуру в градусах Цельсія
delay(50);
digitalWrite(led_measurement, LOW); //Вимірювання закінчено
}
}
}
}
Рис 5.
Рис 6.
Гребенщиков Сергій Валентинович вчитель фізики Давидівобрідської загальноосвітньої школи І-ІІІ ступенів serggreb1960@gmail.com