Hľadať kód

Lekcia 20/31: Zobrazenie ultrazvukovej vzdialenosti na LCD1602

Lekcia 20/31: Zobrazenie ultrazvukovej vzdialenosti na LCD1602

Tento projekt demonštruje, ako skombinovať ultrazvukový snímač vzdialenosti HC-SR04 s LCD displejom LCD1602 s podporou I2C a vytvoriť systém na meranie vzdialenosti v reálnom čase. Po dokončení tohto návodu budete mať funkčné zariadenie, ktoré nepretržite meria a zobrazuje vzdialenosť k objektu v centimetroch. Toto je základná zručnosť v Arduino elektronike, pretože kombinuje vstup zo snímača s vizuálnym výstupom.

Sunfounder 20-LCD1602-ultrasonic

Toto praktické zapojenie možno použiť v rôznych aplikáciách reálneho sveta, vrátane:

  • Vytvorenie inteligentného parkovacieho asistenta, ktorý vám pomôže odhadnúť vzdialenosť k stene alebo inému vozidlu.
  • Zostavenie jednoduchého monitora hladiny kvapaliny v nádrži meraním vzdialenosti od vrchu k hladine.
  • Vývoj automatického dávkovača dezinfekcie rúk alebo bezdotykového odpadkového koša, ktorý sa otvorí, keď je objekt blízko.
  • Konštrukcia základného bezpečnostného alarmu, ktorý sa spustí, keď niekto vstúpi do určitej zóny.

Hardvér a komponenty

Na zostavenie tohto projektu budete potrebovať nasledujúce komponenty:

  • Doska Arduino (napr. Uno)
  • LCD displej LCD1602 s modulom rozhrania I2C
  • Ultrazvukový snímač vzdialenosti HC-SR04
  • Prepojovacie vodiče
  • Nepájivé pole (voliteľné, pre jednoduchšie zapojenie)

Pochopenie LCD1602 a I2C

LCD1602 je populárny displej schopný zobraziť 16 znakov na riadok v dvoch riadkoch. Modul "I2C" na jeho zadnej strane je významnou výhodou, pretože znižuje počet pinov potrebných na ovládanie displeja zo 6 alebo viac na iba 2 pre komunikáciu (SDA a SCL) a 2 pre napájanie (VCC a GND). Toto zjednodušenie robí zapojenie oveľa čistejším a uvoľňuje cenné digitálne piny na vašom Arduino pre iné snímače, ako je ultrazvukový snímač použitý v tomto projekte. (vo videu o 01:30)

Modul I2C má tiež malý potenciometer na nastavenie kontrastu displeja. Ak displej po zapnutí nič nezobrazuje, skúste otáčať touto skrutkou, kým sa text nestane viditeľným. (vo videu o 02:47)

Návod na zapojenie

LCD1602_wiring_ultrasonic_bb

Pripojenie komponentov je jednoduché. Modul I2C na LCD má štyri piny, ktoré je potrebné pripojiť k Arduinu. Ultrazvukový snímač má tiež štyri piny.

Tu je rozpis zapojení:

Modul I2C LCD1602 k Arduinu:

  • GND na Arduino GND
  • VCC na Arduino 5V
  • SDA na Arduino A4
  • SCL na Arduino A5

Ultrazvukový snímač HC-SR04 k Arduinu:

  • VCC na Arduino 5V
  • Trig na digitálny pin Arduina 12
  • Echo na digitálny pin Arduina 11
  • GND na Arduino GND

Schéma zapojenia pre tento projekt je uvedená vo videu.

Inštalácia požadovaných knižníc

Tento projekt sa spolieha na dve kľúčové knižnice. Prvá, LiquidCrystal_I2C, je potrebná na ovládanie LCD a nie je súčasťou Arduino IDE predvolene. Môžete si ju stiahnuť z odkazu uvedeného v popise videa alebo z webovej stránky Robojax. (vo videu o 06:16)

Druhá knižnica, NewPing, sa používa na komunikáciu s ultrazvukovým snímačom. Zjednodušuje proces odoslania pingu a čítania času ozveny. Obe knižnice možno nainštalovať cez Správcu knižníc v Arduino IDE prechodom na Sketch -> Include Library -> Manage Libraries a vyhľadaním ich názvov.

Vysvetlenie kódu

Tento náčrt kombinuje funkčnosť LCD a ultrazvukového snímača. Kód je štruktúrovaný tak, aby bol ľahko konfigurovateľný pre vaše konkrétne zapojenie.

Na začiatku kódu nájdete kľúčové premenné, ktoré možno budete musieť upraviť:

// Nastavte adresu LCD na 0x27 pre displej s 16 znakmi a 2 riadkami
LiquidCrystal_I2C lcd(0x27, displayChars, displayRows);

#define TRIGGER_PIN  12  // Pin Arduina pripojený k trig pinu na ultrazvukovom snímači.
#define ECHO_PIN     11  // Pin Arduina pripojený k echo pinu na ultrazvukovom snímači.
#define MAX_DISTANCE 190 // Maximálna vzdialenosť, ktorú chceme merať (v centimetroch).
  • Adresa LCD (0x27): Toto je I2C adresa vášho LCD modulu. Väčšina modulov používa 0x27, ale niektoré môžu používať 0x3F. Ak váš displej nič nezobrazuje, možno budete musieť spustiť náčrt na skenovanie I2C, aby ste našli správnu adresu a aktualizovali túto hodnotu. (vo videu o 08:11)
  • TRIGGER_PIN a ECHO_PIN: Tieto definujú digitálne piny Arduina pripojené k pinom Trig a Echo ultrazvukového snímača. Ak používate iné piny, zmeňte tieto definície.
  • MAX_DISTANCE: Toto nastavuje maximálnu vzdialenosť v centimetroch, ktorú snímač bude merať. HC-SR04 dokáže merať až do 400-500 cm, ale nastavenie nižšej hodnoty môže zlepšiť presnosť a spoľahlivosť meraní, najmä pre kratšie vzdialenosti.

Vo funkcii loop() kód vykonáva nasledujúce kroky:

  1. Na meranie vzdialenosti používa funkciu sonar.ping_cm() a ukladá ju do premennej distance.
  2. Vymaže LCD a na prvý riadok vytlačí text „Robojax.com“.
  3. Potom nastaví kurzor na druhý riadok a vytlačí „Distance: “.
  4. Nakoniec presunie kurzor na pozíciu 10 na druhom riadku, aby vytlačil nameranú hodnotu distance nasledovanú textom „cm“.

delay(200) na konci slučky riadi, ako často snímač vykoná nové meranie a aktualizuje displej.

Ukážka kódu

Po nahratí kódu do vášho Arduina sa LCD rozsvieti a začne zobrazovať vzdialenosť. Nastavenie môžete otestovať pohybom ruky alebo objektu smerom k ultrazvukovému snímaču a od neho. Číslo na obrazovke by sa malo aktualizovať v reálnom čase a zobrazovať vzdialenosť v centimetroch. (vo videu v čase 38:07)

Súvisiace projekty z tohto videa

Kapitoly

  • [00:00] Úvod do LCD1602 a prehľad projektu
  • [01:30] Vysvetlenie hardvéru LCD1602 a modulu I2C
  • [03:14] Pinout LCD a konfigurácia adresy I2C
  • [05:28] Schéma zapojenia pre LCD1602
  • [06:16] Inštalácia požadovanej knižnice pre LCD
  • [07:24] Základný kód na tlač textu na LCD
  • [08:11] Zistenie adresy I2C vášho LCD
  • [11:10] Príklady LCD: Blikajúci kurzor a vlastné znaky
  • [18:51] Príklad LCD: Sériové zobrazenie a posúvanie textu
  • [24:36] Zobrazenie teploty a vlhkosti DHT11 na LCD
  • [33:00] Zobrazenie napätia z potenciometra na LCD
  • [35:56] Kombinácia kódu ultrazvukového snímača s LCD
  • [38:07] Ukážka zobrazenia vzdialenosti pomocou ultrazvuku

Obrázky

Sunfounder car assembled
Sunfounder car assembled
Sunfounder 20-LCD1602-ultrasonic
Sunfounder 20-LCD1602-ultrasonic
LCD1602_wiring_ultrasonic_bb
LCD1602_wiring_ultrasonic_bb
921-Lesson 20/31: Displaying distance from ultrasonic sensor on LCD1602
Jazyk: C++
This code has not been parsed yet. Please return to the admin panel to parse it.

Zdroje a referencie

Súbory📁

Knižnice Arduino (zip)

Používateľská príručka