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

IMG_20230519_123644.jpg

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

  • Ř-duino (zde)
  • USB-C (zde)
  • HC-SR04 ultrazvukový senzor (zde)
  • LED (zde)
  • Rezistor (zde)
  • Nepájivé pole (zde)
  • Dráty (zde)


(Pokud nevíte jak silný rezistor budete potřebovat tak se podívejte na TENTO tutoriál)

Propojení

IMG_20230519_123649.jpg
IMG_20230519_123654.jpg

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

Výstřižek3.PNG
Výstřižek.PNG

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

Výstřižek2.PNG

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