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);