Senzor překážek pro Arduino YL-70 se skládá z hlavní propojovací desky a čtyř detekčních modulů. Každý detekční modul obsahuje jednu vysílací a jednu přijímací infračervenou diodu. Na hlavní desce se pak nachází pro každý z modulů vlastní trimr pro nastavení citlivosti snímání a integrovaný obvod, který zajišťuje převod snímaných signálů na digitální informaci sepnuto/nesepnuto. Výstupní signály z integrovaného obvodu pak stačí propojit s Arduino deskou a máme hotovo. Zároveň se ještě nachází na hlavní desce pět LED diod, kde krajní dioda indikuje přítomnost napájení a další čtyři diody indikují sepnutí jednotlivých detekčních modulů. Co se týká detekované vzdálenosti, dá se dosáhnout dobré přesnosti v rozmezí cca pár milimetrů až 40 centimetrů.

Senzor překážek pro Arduino YL-70

Pro propojení senzoru překážek s Arduino deskou je nutné propojit celkem 6 vodičů. Propojíme VCC s pinem +5V, GND se zemí Arduina, OUT1 s pinem D4, OUT2 s pinem D5, OUT3 s pinem D6 a OUT4 s pinem D7. Piny s názvem OUT můžeme samozřejmě připojit na jiné volné digitální piny, jen je nutné tuto změnu provést také v programu.

Schéma zapojení senzoru překážek pro Arduino YL-70

Ukázkový kód obsahuje na svém začátku nastavení vstupních pinů OUT ze senzoru překážek a dále v podprogramu setup nastavení komunikace po sériové lince a inicializaci vstupních pinů pomocí for smyčky. V nekonečné smyčce loop jsou pak při každém průběhu vytištěny informace o všech vstupních pinech opět pomocí for smyčky. Jak je v komentáři zmíněno, je nutné při načítání stavu jednotlivých modulů jejich hodnotu negovat (logicky převrátit), protože hlavní deska má obrácenou logiku, tedy při 0 je modul sepnut a při 1 nesepnut. Na konci programu se poté nachází pouze pauza po dobu jedné vteřiny pro přehlednější výpis.

// Senzor překážek

// nastavení čísel propojovacích pinů
int pinOut [4] = {4, 5, 6, 7};

void setup() {
  // komunikace po sériové lince rychlostí 9600 baud
  Serial.begin(9600);  
  // inicializace vstupních pinů
  // pomocí for smyčky
  for (int i=0; i < 4; i++){
    pinMode(pinOut[i], INPUT);
  }
}

void loop(){
  // načtení informací ze všech vstupních pinů
  Serial.print("Stav vstupnich pinu: ");
  for (int i=0; i < 4; i++){
    // jednobitová proměnná pro uložení stavu
    bool stav;
    // načtení stavu aktuálního pinu, nutná
    // negace, protože modul vrací 0 při detekci
    stav = !(digitalRead(pinOut[i]));
    Serial.print(stav);
    Serial.print("  ");
  }
  // ukončení řádku na sériové lince
  Serial.println();
  // pauza pro přehlednější výpis
  delay(1000);
}

Po nahrání programu do Arduino desky s připojeným senzorem překážek uvidíme například tento výpis, při kterém jsem se pokusil detekovat posun ruky skrz připojené detekční moduly:

Stav vstupnich pinu: 0  0  0  0  
Stav vstupnich pinu: 1  0  0  0  
Stav vstupnich pinu: 1  1  0  0  
Stav vstupnich pinu: 1  1  1  0  
Stav vstupnich pinu: 1  1  1  1  
Stav vstupnich pinu: 0  1  1  1  
Stav vstupnich pinu: 0  0  1  1  
Stav vstupnich pinu: 0  0  0  1  

Senzor překážek pro Arduino YL-70 je snadno použitelný set modulů a hlavní desky, který lze využít v různých stavbách robotů či autonomních vozítek, kdy potřebujeme jednoduchým způsobem snímat okolí námi řízeného objektu. Je však důležité zmínit, že vysílaný a poté zpětně přijímaný infračervený signál se dobře odráží od bílých, obecně světlých ploch, ale naopak černý materiál dokáže většinu vysílaného IR signálu pohltit. Právě proto se tento senzor překážek často používá pro detekování jízdy po černé čáře.

 

Seznam použitých komponent:

http://dratek.cz/arduino/901-arduino-senzor-prekazek-1420671722.html

http://dratek.cz/arduino/974-arduino-uno-r3-atmega328p-1424115860.html

http://dratek.cz/arduino/1227-7-ks-mini-nepajive-pole-25-kontaktu-1458405292.html

http://dratek.cz/arduino-kabelaz-propoje-rozsireni/1063-arduino-vodice-samec-samec-40-kusu.html

FB tw

Další podobné články