Tento ultrazvukový dálkoměr HC-SR04 byl vylepšen teplotním senzorem LM35.
Ze školy si můžete vzpomenout, že rychlost zvuku závisí na hustotě vzduchu a hustota vzduchu závisí na teplotě.
Vypočítáme teplotu pomocí tohoto vzorce
temp2 = (temp / 1023,0) * 5,0 * 1000/10;
Kde temp2 je konečná hodnota teploty podle vzorce,
A kde temp je hrubá hodnota ze senzoru.
Co potřebujeme:
- Ultrazvukový dálkoměr HC-SR04
- Arduino
- Prkénko
- Svetry
- Termistor LM35 (teplotní senzor)
Mějte na paměti, že HC-SR04 má dvě formy -
Tady mám dobrý a stabilně měří vzdálenost.
Oba měří od 4 cm do 400 cm.
Běží na 3,3 až 5 v
Nejprve to vysmíváme na prkénku.
Ultrazvukový senzor:
- GND - gnd
- Echo - 3 kolíky
- Trig - 2 kolíky
- Vcc - 5v
Termistor LM35:
- 1 - 5v
- 2 - A0
- 3 - GND
Mělo by to být takto:
Dále vyplníme náčrt.
Stáhnout knihovnu pro senzor HC-SR04 -
Stáhnout skicu -
#include // připojte knihovnu pro práci s ultrazvukovým senzorem HC-SR04
iarduino_HC_SR04 hcsr (2,3); // označují kontakty Trig a Echo
int temp = 0; // hrubá teplota
float temp2 = 0; // hodnota připravené teploty
void setup () {// běh 1krát
Serial.egegin (9600); // spusťte sledování portu
pinMode (A0, INPUT); // označují kontakt A0 jako vstup
}
void loop () {// opakuje nekonečný početkrát
temp = analogRead (A0); // přečte hodnotu kontaktu A0 a přiřadí jí proměnnou temp
temp2 = (temp / 1023,0) * 5,0 * 1000/10; // vypočítejte surovou hodnotu podle vzorce a získejte konečnou hodnotu teploty
Serial.println (hcsr.distance (temp2)); // napište rozsah připravenosti do monitoru portu
zpoždění (1000); // zpoždění 1 sekunda
}
A tady je skica pro LCD displej-
Stáhnout skicu -
#include // připojte knihovnu pro práci s ultrazvukovým senzorem HC-SR04
#include // připojte knihovnu pro práci s displejem na sběrnici I2C
LiquidCrystal_I2C lcd (0x27, 16, 2); // označit (adresa, sloupce, řádky)
iarduino_HC_SR04 hcsr (2,3); // označují kontakty Trig a Echo
int temp = 0; // hrubá teplota
float temp2 = 0; // hodnota připravené teploty
void setup () {// běh 1krát
lcd.init (); // inicializuje displej
lcd.backlight (); // zapněte podsvícení displeje
pinMode (A0, INPUT); // označují kontakt A0 jako vstup
}
void loop () {// opakuje nekonečný početkrát
temp = analogRead (A0); // přečte hodnotu kontaktu A0 a přiřadí jí proměnnou temp
temp2 = (temp / 1023,0) * 5,0 * 1000/10; // vypočítejte surovou hodnotu podle vzorce a získejte konečnou hodnotu teploty
lcd.setCursor (2, 0); // umístěte kurzor na 2 sloupce a 0 řádek
lcd.print (temp2); // napište vzdálenost
lcd.setCursor (5,0); // umístěte kurzor na pátý sloupec a 0. řádek
lcd.print ("cm"); // napište cm
zpoždění (1000); // zpoždění 1 sekunda
}
Napište připomínky a dotazy, odpovím na všechno!