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.
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.
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}`);
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);
Běžte na viz.jaculus.org a uvidíte grafickou vizualizaci výstupu ze senzorů.