Ultrazvukový sensor vzdálenosti s displejem

Modul s názvem US 100 – funguje jako ultrazvukový měřič vzdálenosti. Na desce samotné se nachází jeden ultrazvukový vysílač, jeden přijímač a dále integrované obvody, které zajišťují správnou funkci. Tento ultrazvukový měřič vzdálenosti se používá obecně tam, kde potřebujeme s poměrně velkou přesností zkoumat prostor před senzorem.

Modul s názvem US 100 – funguje jako ultrazvukový měřič vzdálenosti. Na desce samotné se nachází jeden ultrazvukový vysílač, jeden přijímač a dále integrované obvody, které zajišťují správnou funkci. Tento ultrazvukový měřič vzdálenosti se používá obecně tam, kde potřebujeme s poměrně velkou přesností zkoumat prostor před senzorem.

Tento modul umožňuje detekci v rozmezí 2 centimetrů až 4,5 metr a pracovní úhel detekce je okolo 15 stupňů.

Dále je v projektu použito ARDUINO NANO spolu s I2C Displej OLED 128×32.

 

us100

Zapojení:

us100_arduino_display

KÓD:

// OLED displej I2C
// řadič SSD1306

// připojení knihovny U8glib
#include „U8glib.h“

// inicializace OLED displeje z knihovny U8glib
U8GLIB_SSD1306_128X32 mujOled(U8G_I2C_OPT_NONE);

// proměnné
long int prepis = 0;
byte inByte = 0;
byte inByteFirstByte = 0;
byte i = 0;
static uint32_t timer;
static uint32_t Data;

void setup(void) {
Serial.begin(9600);
// pro otočení displeje o 180 stupňů
// stačí odkomentovat řádek níže
// mujOled.setRot180();
}

void loop(void) {
// porovnání uloženého a aktuálního času
// při rozdílu větším než 100 ms se provede
// obnovení displeje, čas můžeme nastavit dle potřeby
if (millis()-prepis > 100) {
// následující skupina příkazů
// obnoví obsah OLED displeje
mujOled.firstPage();
do {
// funkce vykresli vykreslí žádaný obsah
vykresli();
} while( mujOled.nextPage() );
// uložení posledního času obnovení
prepis = millis();
}

// zde je místo pro další příkazy pro Arduino

// volitelná pauza 10 ms pro demonstraci
// vykonání dalších příkazů
delay(10);
if (millis() > timer)
{
timer = millis() + 100;// 5 second timeout
precti();
}
}

// funkce vykresli pro nastavení výpisu informací na OLED
void vykresli(void) {
// nastavení písma, toto písmo umožní vypsat
// přibližně 15×4 znaků
mujOled.setFont(u8g_font_fub25); //unifont
// nastavení pozice výpisu v pixelech
// souřadnice jsou ve tvaru x, y
// souřadnice 0, 0 je v levém horní rohu
mujOled.setPrintPos(0, 31);
if (Data>400){
mujOled.print(„Out of range“);
}else {
mujOled.print(Data);
mujOled.print(“ cm“);
}
}
// funkce ultrazvuku
void precti(void) {
Serial.write(0x55);  //dotaz na vzdálenost
delay(10);
while (Serial.available() > 0) {
inByte = Serial.read();
delay(10);
i = i+1;
if (i==1){
inByteFirstByte = inByte;
} else {
Data = (inByteFirstByte*256+inByte)/10;  //výpočet na cm
i=0;
}
}
}

Napsat komentář

Vaše emailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *