Search Code

Сабақ 71: Қашықтықты өлшеу және LCD экранда көрсету | Arduino қадамдық курс

Сабақ 71: Қашықтықты өлшеу және LCD экранда көрсету | Arduino қадамдық курс

Бұл жоба HC-SR04 ультрадыбыстық сенсорын LCD1602 дисплейімен біріктіріп, Arduino-да қашықтықты өлшеу және көрсету жолын көрсетеді. Бұл құрылғы жақындықты анықтау және визуалды кері байланыс қажет ететін әртүрлі қолданбалар үшін пайдалы.

Практикалық қолдану аймақтары:

  • Робототехника: Кедергілерді болдырмау немесе навигация үшін қашықтықты өлшеу.
  • Тұрақ көмегі: Қарапайым тұрақ қашықтық сенсорын жасау.
  • Үй автоматикасы: Жақындыққа негізделген жарықтандыру жүйесін құру.
  • Өнеркәсіптік автоматика: Өндірістік процестерде қашықтықты бақылау.

Аппараттық құралдар/Компоненттер

Бұл жобаны құру үшін келесі компоненттер қажет:

  • Arduino Uno (немесе үйлесімді плата)
  • HC-SR04 ультрадыбыстық сенсоры
  • LCD 1602 дисплейі (I2C нұсқасы ұсынылады)
  • Жалғау сымдары

Қосылу нұсқаулығы

Қосылу бейнеде сипатталған (бейнеде 00:31). Негізгі қосылымдар:

  • Ультрадыбыстық сенсор: VCC 5V-ке, GND GND-ге, TRIG 12-пинге, ECHO 11-пинге.
  • LCD 1602: VCC 5V-ке, GND GND-ге, SDA A4-пинге, SCL A5-пинге.

%%WIRING%%

Код түсіндірмесі

Код ультрадыбыстық қашықтықты өлшеу үшін NewPing кітапханасын және LCD басқару үшін LiquidCrystal_I2C кітапханасын пайдаланады (бейнеде 02:15). Негізгі конфигурацияланатын параметрлер:


#define TRIGGER_PIN  12  // Ультрадыбыстық сенсордың триггер пиніне қосылған Arduino пині.
#define ECHO_PIN     11  // Ультрадыбыстық сенсордың эхо пиніне қосылған Arduino пині.
#define MAX_DISTANCE 200 // Өлшегіміз келетін максималды қашықтық (сантиметрмен).
// 16 таңба және 2 жолды дисплей үшін LCD мекенжайын 0x3F етіп орнату
LiquidCrystal_I2C lcd(0x3F, 16, 2);
int VCC2 = 2; // LCD үшін қосымша VCC

TRIGGER_PIN және ECHO_PIN ультрадыбыстық сенсорға қосылған Arduino пиндерін анықтайды. MAX_DISTANCE өлшенетін максималды қашықтықты орнатады. LCD мекенжайы (0x3F) сіздің нақты LCD модуліңізге байланысты түзетуді қажет етуі мүмкін. VCC2 пины LCD үшін қосымша 5V қоректендіруді қамтамасыз етеді.

sonar.ping_cm() және sonar.ping_in() функциялары қашықтықты сәйкесінше сантиметр және дюйммен өлшеу үшін қолданылады (бейнеде 05:27 және 06:01).

Тірі жоба/Демонстрация

Жобаның демонстрациясы бейнеде көрсетілген (бейнеде 06:42). Бейне сенсордың әртүрлі нысандарға дейінгі қашықтықты өлшеп, нәтижелерді LCD экранында сантиметр және дюйммен көрсететінін көрсетеді. Сериялық монитор дәл осы өлшемдерді көрсетіп, көрсеткіштерді тексеру мүмкіндігін береді.

Бөлімдер

  • [00:04] Кіріспе және жобаға шолу
  • [00:31] Қосылу схемасы және байланыстар
  • [02:15] Код түсіндірмесі: Ультрадыбыстық сенсорды орнату
  • [03:19] Код түсіндірмесі: LCD1602 орнату
  • [04:21] Код түсіндірмесі: Arduino орнату
  • [04:46] Код түсіндірмесі: Негізгі цикл және дисплей
  • [06:42] Тірі демонстрация
  • [07:26] Қорытынды
788-Using LCD1602-I2C and HC-SR04 Ultrasonic Sensor with Arduino
Тіл: C++
 /*
  * S08-03
 * Using LCD1602-I2C and HC-SR04 Ultrasonic Sensor with Arduino
 * Written/updated by Ahmad Shamshiri for Robojax (Robojax.com)
 * on January 16, 2019 at 15:51 in Ajax, Ontario, Canada

   
 * This code is "AS IS" without warranty or liability. Free to be used as long as you keep this note intact.* 
 * This code has been download from Robojax.com
    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <https://www.gnu.org/licenses/>.
 */

#include <NewPing.h>

#define TRIGGER_PIN  12  // Arduino pin tied to trigger pin on the ultrasonic sensor.
#define ECHO_PIN     11  // Arduino pin tied to echo pin on the ultrasonic sensor.
#define MAX_DISTANCE 200 // Maximum distance we want to ping for (in centimeters). Maximum sensor distance is rated at 400-500cm.

NewPing sonar(TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE); // NewPing setup of pins and maximum distance.

// start of settings for LCD1602-I2C
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
// Set the LCD address to 0x3F for a 16 chars and 2 line display
LiquidCrystal_I2C lcd(0x3F, 16, 2);
int VCC2 = 2;
// end of settings for LCD1602-I2C

void setup() {
  Serial.begin(9600); // Open serial monitor at 19600 baud to see ping results.

  pinMode(VCC2, OUTPUT);// extra VCC for LCD
  digitalWrite(VCC2, HIGH);//extra VCC is now HIGH (5V)
  // initialize the LCD, 
  lcd.begin();
  // Turn on the blacklight and print a message.
  lcd.backlight();
  lcd.clear();
  lcd.setCursor (0,0); //
  lcd.print("Robojax LCD1602"); 
   
}

void loop() {
  delay(50);                     // Wait 50ms between pings (about 20 pings/sec). 29ms should be the shortest delay between pings.
   lcd.clear();// clearn previous values from screen
  lcd.setCursor (0,0); //character zero, line 1
  lcd.print("LCD1602 HC-SR04"); // print text 

  // print distance in cm
  lcd.setCursor (0,1); //character 0, line 2
  lcd.print(sonar.ping_cm());// print distance in cm
  lcd.setCursor (3,1); //character 4, line 2 
  lcd.print("cm");// print "cm" on the display 

   // print distance in inch
  lcd.setCursor (7,1); //character 8, line 2
  lcd.print(sonar.ping_in());// print distance in cm
  lcd.setCursor (9,1); //character 4, line 2 
  lcd.print("inches");// print "cm" on the display  
  
  Serial.print("Ping: ");
  Serial.print(sonar.ping_cm()); // Send ping, get distance in cm and print result (0 = outside set distance range)
  Serial.print("cm");
  Serial.print(", ");
  Serial.print(sonar.ping_in());
  Serial.println("in");
  int distance = sonar.ping_cm();

}

Сізге қажет болуы мүмкін нәрселер

Ресурстар мен сілтемелер

Әлі ресурстар жоқ.

Файлдар📁

Файлдар жоқ.