Recinto con liña
Os sensores de liña
Os sensores de liña que usa o mClon son dixitais. O esquerdo conéctase ao pin D9 e o dereito ao D10.
Programalos é moi doado. Cando un sensor está sobre negro o seu valor será 0 e cando está sobre branco o seu valor será 1.
Moverse dentro dun recinto
Imos facer un programa no que un robot avance dentro dunha área branca limitada por unha liña negra. Cando atope dita liña o robot debe xirar describindo un percorrido polo interior do recinto.
O primeiro que debemos facer é introducir os parámetros, configuración e funcións que utilizamos no programa de movemento do robot, e engadir os pins dos sensores de liña.
// Pins sensores de liña const int IR_esq=9; const int IR_der=10;
Para ler os valores dos sensores utilizamos a instrución digitalRead() e para a operación and usamos o símbolo &&
No seguinte exemplo cando os dous sensores están sobre branco o robot avanza e se algún dos sensores ou os dous atopan a liña negra o robot xira.
void loop() { // Se ambos sensores están en branco o robot avanza if (digitalRead(IR_esq)==1 && digitalRead(IR_der)==1){ m1(1, 125); m2(1, 125); } // se non o robot xira else{ m1(-1, 125); m2(1, 125); delay(500); } }
Prácticas
- O recinto: Escribe o programa anterior completo e proba o seu funcionamento. Lembra que falta incluír a configuración e funcións do control dos motores.
- Mellora 1: Cando o robot atope a liña negra co sensor esquerdo debe xirar cara á dereita e cando a atope co sensor dereito debe xirar cara á esquerda. Cando o robot atope a liña de fronte (cos dous sensores simultaneamente) debe retroceder e xirar.
- Mellora 2: Utiliza unha variable e o operador random para que o robot realice un percorrido aleatorio polo recinto. Segundo sexa o valor da variable o robot xirará máis ou menos tempo, realizando xiros de distintos ángulos.
int tempo=random(200,800); delay(tempo);