Introduction: 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
Step 1: 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)
Step 2: 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++
Step 3: 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