Blink S Ultrazvukovým Senzorem S Ř-duino
by GrunclMichal in Circuits > Arduino
162 Views, 0 Favorites, 0 Comments
Blink S Ultrazvukovým Senzorem S Ř-duino

Ahoj
V tomto tutoriálu si ukážeme jak udělat blink s ultrazvukovým senzorem (US). Základní myšlenkou tohoto projektu je že nám US změří vzdálenost od překážky stojící před ním a na základě této hodnoty se bude měnit rychlost blikání naší LEDky. Můžete si pod tím představit takovou jednoduchou parkovací kameru, akorát nám místo pípání bude blikat LEDka.
Supplies
Propojení


Předtím než začneme zapojovat, vezměte drát a propojte spodní modrou "mínusovou" řádku s (Ř) GND.
Ultrazvukový senzor:
- (US) VCC -> (Ř) 5V
- (US) Gnd -> (NP) mínusová řádka
- (US) Trig -> (Ř) PIN 7
- (US) Echo -> (Ř) PIN 6
(Ř) = Ř-duino
(US) = ultrazvukový senzor
(NP) = nepájivé pole
LED:
PIN 2 -> Rezistor -> LED -> mínusová řádka
(Pokud nerozumíte tak se podívejte na obrázky obvodu na této stránce)
Instalace


Jako naší programovací platformu budeme používat VSCode s nainstalovaným rozšířením PlatformIO
Poté co si nainstalujete PlatformIO klikněte na ikonu "včely" a pak vyberte "PIO Home>Open"
Klikněte "New Project", pojmenujte jej, vyberte desku "Arduino Uno" a klikněte na Finish
Taktéž byste si měli stáhnout rozšíření pro C/C++
Kód

Soubor s kódem najdete zde: "src>main.cpp"
(Vše označené "//" nebo vepsané mezi "/* */" je comment. To znamená že se nejedná o kód ale o text napsaný, aby vám pomohl kódu porozumět. Zkuste si je přečíst a pokusit se pochopit co se v kódu děje.)
#include <Arduino.h>
// definuje ovládací piny
#define ledPin 2 // tento pin ovládá LED
#define trigPin 7 // tyto piny ovládají a čtou z ultrazvukového senzoru
#define echoPin 6
/* důležité informace o stavu LED (vyp., zap.), vzdálenost v cm, doba probliku LED (duration_us není informace o LED ale o vzdálenosti)*/
float duration_us, distance_cm;
int ledState = LOW;
long previousMillis = 0;
long interval = 1000;
/*
* tato metoda je zahájena jako první aby vše nastavila
*/
void setup() {
// nastavuje trigPin na mód výstupu
pinMode(trigPin, OUTPUT);
// nastavuje echoPin na mód vstupu
pinMode(echoPin, INPUT);
// nastavuje ledPin na mód výstupu
pinMode(ledPin, OUTPUT);
}
/*
* Tato metoda je zahájena jako druhá a opakuje se do nekonečna
*/
void loop()
{
// nastaví hodnotu currentMillis na aktuálí počet milisekund
unsigned long currentMillis = millis();
// vytvoří 10 milisekundový puls na trigPin
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
// změří dobu trvání pulsu na echoPin
duration_us = pulseIn(echoPin, HIGH);
// Výočet vzdálenosti
distance_cm = 0.017 * duration_us;
// zkotroluje vzdálenost a naství dobu bliknutí
if(distance_cm < 10) // pokud je vzdálenost kratší než 10 cm nastav délku bliknutí na 0 ms
interval = 0;
else
if(distance_cm > 10 && distance_cm < 20) /* pokud je vzdálenost kratší než 20 cm ale delší než 10 cm nastav délku bliknutí na 50 ms */
interval = 50;
else
if(distance_cm > 20 && distance_cm < 40) /* pokud je vzdálenost kratší než 40 cm ale delší než 20 cm nastav délku bliknutí na 200 ms */
interval = 200;
else
if(distance_cm > 40) // pokud je vzdálenost delší než 40 cm nastav délku bliknutí na 1000 ms
interval = 1000;
/* opkud currentMillis - previousMillis je větší než délka bliknutí nastav previousMillis na velikost currentMillis a změň stav LED */
if(currentMillis - previousMillis > interval) {
previousMillis = currentMillis;
if (ledState == LOW)
{
ledState = HIGH;
}
else
ledState = LOW;
digitalWrite(ledPin, ledState);
}
}
Nyní jen uložte a zmáčkněte Ctrl+Alt+u abyste nahráli program na Ř-duino
A zvládli jste to. Dobrá práce