Кодты іздеу

Ардуино коды және бейне: HC-SR04 ультрадыбыстық қашықтық сенсоры TP1637 дисплейімен

Ардуино коды және бейне: HC-SR04 ультрадыбыстық қашықтық сенсоры TP1637 дисплейімен

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

How HC-SR04 ulrasonic sensor work

Біз екі негізгі компонентті қолданамыз: 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 = деректер шығысы

Сымды қосу нұсқаулары

Arduino wiring for HC-SR04 Ultrasonic Sensor with TM1637 display
Arduino wiring for HC-SR04 Ultrasonic Sensor with TM1637 display

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 - Демонстрация

Суреттер

HC-SR04 ulrasonic sensor
HC-SR04 ulrasonic sensor
How HC-SR04 ulrasonic sensor work
How HC-SR04 ulrasonic sensor work
Arduino wiring for HC-SR04 Ultrasonic Sensor with TM1637 display
Arduino wiring for HC-SR04 Ultrasonic Sensor with TM1637 display
43-This is the Arduino code for the HC-SR04 ultrasonic distance sensor with a TP1637 display.
Тіл: C++
/*
 * 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);  
}

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

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

Файлдар📁

Басқа файлдар