Files

sensors.md

Pohled na senzory čáry

Na robůtkovi je zespoda 8 senzorů čáry. Hodnota každého senzoru může teoreticky nabývat hodnot od 0 (absolutní černá) do 1023 (nejbělejší bílá), V praxi se ale hodnota většinou pohybuje někde mezi těmato dvěmi mezemi.

!!! TIP "Přesné hodnoty pro bílou a černou barvu jsou na každém hřišti jiné. Může být užitečné před hlavní program zařadit krátkou kalibraci přejetím přes čáru."

Senzory na robůtkovi jsou na desce označeny názvy A1 - A4 a B1 - B4. Skupina A je vepředu a kolem středové díry, a skupina B je kolem kol. Čtení ze senzorů je rychlé, pokud čteme ze senzorů jedné z těch dvou skupin, pokud bychom ale například načetli hodnotu ze senzoru A2 a poté B4, tak čtení senzoru B4 zabere minimálně 2 milisekundy. ??? note "Proč to zdržení?" Hodnoty ze senzorů se měří pomocí analogově-digitálních převodníků (ADC) na ESP a proto je pro každý senzor potřeba zvláštní pin. Aby nebylo potřeba tolik pinů jenom pro senzory, používá se pro komunikaci s nimi tzv. multiplexing. V jednu chvíli je možné číst senzory jenom z jedné skupiny (používají se 4 piny + jeden na volbu skupin). Skupinu můžeme přepínat, ale bezprostředně po přepnutí je výsledek měření nespolehlivý, a proto knihovna Robůtka čeká 2 milisekundy.

Jak se senzory pracovat

Hodnotu ze senzoru jde vyčíst následujícím způsobem:

const l = robutek.readSensor("LineFL"); const r = robutek.readSensor("LineFR");

Načtené hodnoty si můžeme jednoduše vypsat

console.log(l: ${l}; r: ${r});

Celý program na vyzkoušení senzorů může vypadat třeba takto:

import { createRobutek } from "./libs/robutek.js" const robutek = createRobutek("V2"); async function main() { while(true) { const l = robutek.readSensor("LineFL"); const r = robutek.readSensor("LineFR"); console.log(l: ${l}, r: ${r}); await sleep(500); // Nechceme zahltit počítač } } main().catch(console.error);

!!! tip "Běžte na <![CDATA[]]>viz.jaculus.org<![CDATA[]]> a uvidíte grafickou vizualizaci výstupu ze senzorů."

Report a bug