Ардуино коды және бейне: HC-SR04 ультрадыбыстық қашықтық сенсоры TP1637 дисплейімен
Бұл оқулықта біз HC-SR04 ультрадыбыстық қашықтық сенсорын TP1637 дисплейімен бірге қалай пайдалану керектігін зерттейміз, қашықтық өлшемдерін визуалды түрде көрсету үшін. Бұл жоба роботтық көліктер және басқа да қашықтықты анықтайтын тапсырмалар үшін өте қолайлы. Осы нұсқаулықтың соңында сізде қашықтықты өлшейтін және оны экранда көрсететін жұмыс істейтін құрылғы болады, бұл сенсордың көрсеткіштерін оңай бақылауға мүмкіндік береді.

Біз екі негізгі компонентті қолданамыз: HC-SR04 ультрадыбыстық сенсоры және TP1637 дисплей модулі. HC-SR04 сенсоры ультрадыбыстық толқындарды шығарады және олардың қайтып келу уақытын өлшейді, осы уақытқа негізделген қашықтықты есептейді. TP1637 дисплейі I2C байланысын пайдаланып, өлшенген қашықтықты пайдаланушыға ыңғайлы форматта көрсетеді. Қосымша түсініктілік үшін компоненттердің визуалды түсіндірмесін 1:30-дағы бейнені қарап көре аласыз.
Аппараттық құрал түсіндірмесі
HC-SR04 ультрадыбыстық сенсорының төрт түйреуіші бар: VCC, Trig, Echo және GND. VCC түйреуіші қуат көзіне қосылады, ал GND түйреуіші жерге қосылады. Trig түйреуіші ультрадыбыстық импульсті іске қосу үшін қолданылады, ал Echo түйреуіші шағылысқан импульсті қабылдайды. Бұл сенсор 2 см-ден 400 см-ге дейінгі қашықтықты өлшей алады.
TP1637 дисплей модулі де төрт түйреуіштен тұрады, олар I2C байланысы үшін қолданылады. Бұл түйреуіштерге VCC, GND, Clock (CLK) және Data (DIO) кіреді. Бұл жобада CLK түйреуіші Arduino-дағы цифрлық 2 түйреуішіне, ал DIO түйреуіші цифрлық 3 түйреуішіне қосылған. Бұл дисплей ультрадыбыстық сенсордың қашықтық көрсеткіштерін визуализациялауды жеңілдетеді.
Деректер парағының мәліметтері
| Өндіруші | TM1637 |
|---|---|
| Бөлшек нөмірі | TM1637 |
| Логика/IO кернеуі | 3.3 В - 5.5 В |
| Қуат кернеуі | 5 В |
| Шығыс тогы (арнаға) | ~25 мА |
| Ең жоғары ток (арнаға) | ~50 мА |
| PWM жиілігі бойынша нұсқау | Жоқ |
| Кіріс логикалық шектері | 0.3VCC макс |
| Кернеу төмендеуі / RDS(on) / қанығу | Жоқ |
| Жылулық шектер | 85 °C |
| Қаптама | DIP-16 |
| Ескертулер / нұсқалар | Әдетте 7-сегментті дисплейлерде қолданылады |
- Зақымдануды болдырмау үшін дұрыс қосылымдарды қамтамасыз етіңіз.
- Қауіпсіз жұмыс үшін максималды қуат кернеуін 5 В деңгейінде ұстаңыз.
- Қажет болса, I2C байланысы үшін тиісті pull-up резисторларды қолданыңыз.
- Қашықтықты өлшеу диапазонын көрсетілген шектерде ұстаңыз (2 см - 400 см).
- Қуат пен жер түйреуіштерін қысқа тұйықтаудан аулақ болыңыз.
- Көрінуді қамтамасыз ету үшін дисплей жарықтық параметрлерін тексеріңіз.
- Дәл емес көрсеткіштерге әкелуі мүмкін қалқымалы кірістерді тексеріңіз.
CLK = сағат, DIO = деректер шығысы
Сымды қосу нұсқаулары

HC-SR04 ультрадыбыстық сенсорын қосу үшін VCC түйреуішін (қызыл сым) Arduino-дағы 5V түйреуішіне, ал GND түйреуішін (сары сым) жерге қосыңыз. Trigger түйреуіші (көк сым) цифрлық 12 түйреуішіне, ал Echo түйреуіші (жасыл сым) цифрлық 11 түйреуішіне қосылуы керек. Дұрыс жұмыс істеуін қамтамасыз ету үшін осы қосылымдардың сенімді екеніне көз жеткізіңіз.
TP1637 дисплейі үшін VCC түйреуішін (қызыл сым) Arduino-дағы 5V түйреуішіне және GND түйреуішін (сары сым) жерге қосыңыз. Clock түйреуіші (көк сым) цифрлық 2 түйреуішіне, ал Data түйреуіші (ақ сым) цифрлық 3 түйреуішіне қосылуы керек. Бұл құрылғы Arduino-ға дисплеймен байланысуға және визуализация үшін қашықтық деректерін жіберуге мүмкіндік береді.
Код мысалдары және түсіндірме
Келесі код үзіндісі ультрадыбыстық сенсор мен дисплейді инициализациялайды:
#define TRIGGER_PIN 12
#define ECHO_PIN 11
#define MAX_DISTANCE 200
NewPing sonar(TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE);
TM1637Display display(CLK, DIO);
Мұнда біз ультрадыбыстық сенсордың триггері мен эхосы үшін түйреуіштерді анықтаймыз және максималды қашықтықты 200 см етіп орнатамыз. NewPing кітапханасы сенсорды басқару үшін қолданылады, ал TM1637Display объектісі дисплейді басқарады.
Негізгі циклде біз қашықтықты үздіксіз оқып, оны көрсетеміз:
int distance = sonar.ping_cm(); // қашықтықты алу
display.showNumberDec(distance, false, 3, 1);
Кодтың бұл бөлігі сенсордан қашықтық өлшемін алып, оны TP1637 дисплейінде көрсетеді. showNumberDec функциясы қашықтықты ондық сан ретінде көрсету үшін пішімдейді.
Толық код үшін мақаланың төмендегі бөлімін қараңыз.
Демонстрация / Не күтуге болады
Барлығы орнатылып, код жүктелгеннен кейін TP1637 дисплейінде қашықтық көрсеткіштері көрсетілуі керек. Көрсеткіштер шамамен әр 50 миллисекунд сайын жаңартылып, ультрадыбыстық сенсормен өлшенген қашықтық туралы нақты уақыт режиміне жақын кері байланыс береді. Егер күтпеген мәндерді байқасаңыз, сенсордың дұрыс бағытталғанына және оның жолында ешқандай кедергілер жоқ екеніне көз жеткізіңіз (бейнеде 6:15-те).
Бейне уақыт белгілері
- 00:00 - Кіріспе
- 01:30 - Компоненттерге шолу
- 02:45 - Сымды қосу нұсқаулары
- 04:00 - Кодты түсіндіру
- 06:15 - Демонстрация
/*
* This is the Arduino code for the HC-SR04 Ultrasonic Distance Sensor with TP1637 Display
* to measure the distance using Arduino for a robotic car and other applications
* Watch the video https://youtu.be/SlgLj_T5GaY
*
* Written by Ahmad Shamshiri for Robojax Video
* Date: December 21, 2017, in Ajax, Ontario, Canada
* Permission granted to share this code given that this
* note is kept with the code.
* Disclaimer: this code is "AS IS" and for educational purposes only.
*
*/
/* Original Code
from https://github.com/avishorp/TM1637
// https://playground.arduino.cc/Code/NewPing
* Modified for Robojax video on December 21, 2017
// ---------------------------------------------------------------------------
// Example NewPing library sketch that does a ping about 20 times per second.
// ---------------------------------------------------------------------------
*/
#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.
////////////////////////////
#include <Arduino.h>
#include <TM1637Display.h>
// Module connection pins (Digital Pins)
#define CLK 2
#define DIO 3
// The amount of time (in milliseconds) between tests
#define TEST_DELAY 500
TM1637Display display(CLK, DIO);
/////////////////////////
void setup() {
Serial.begin(115200); // Open serial monitor at 115200 baud to see ping results.
}
void loop() {
display.setBrightness(0x0f);
uint8_t data[] = { 0x0, 0x0, 0x0, 0x0 };
display.setSegments(data);
int distance = sonar.ping_cm();// get the distance and store it in "distance" variable
// Wait 50ms between pings (about 20 pings/sec). 29ms should be the shortest delay between pings.
Serial.print("Ping: ");
Serial.print(sonar.ping_cm()); // Send ping, get distance in cm and print result (0 = outside set distance range)
Serial.println("cm");
display.showNumberDec(distance, false, 3,1);
delay(50);
}
Сізге қажет болуы мүмкін нәрселер
-
eBay
Ресурстар мен сілтемелер
-
СыртқыHC-SR04 Ultrasonic Library from the Arduino official websiteplayground.arduino.cc
Файлдар📁
Басқа файлдар
-
HC-SR04 ультрадыбыстық сенсор Arduino кітапханасы
robojax-HC-SR04-ultrasonic-Library.zip0.02 MB