Seguir liña básico

Imos seguir unha liña negra de 2cm sobre fondo branco utilizando dous sensores IR dixitais situados no interior da liña.

Os datos dos sensores

Cada sensor enviará 0 cando estea sobre negro e 1 cando estea sobre branco.

Para seguir unha liña no chan haberá que darlle ao robot as instrución precisas para que se mova segundo as cores que detecten os sensores. Por exemplo, para seguir unha liña negra sobre unha superficie branca teremos os seguintes casos:

Sensor esquerdo Sensor dereito Que sucede  Instrucións
0 – Negro 0 – Negro está dentro da liña  avanzar
0 – Negro 1 – Branco sae pola dereita  avanza e xira á esquerda
1 – Branco 0 – Negro sae pola esquerda  avanza e xira á dereita
1 – Branco 1 – Branco está fóra da liña  retroceder

Estas son as instrucións máis básicas e debemos mellorar este programa máis adiante.

O programa

Empezamos introducindo os parámetros e funcións dos sensores e movemento do robot, como na práctica de moverse dentro dun recinto. Isto faino ti.

Despois, no loop, dámoslle as instrucións da táboa anterior:

void loop() {

// negro-negro -> O robot avanza
  if (digitalRead(IR_esq)==0 && digitalRead(IR_der)==0){    
    m1(1, 125);
    m2(1, 125);
  } 
// negro-branco ->  xira cara á esquerda
  else if (digitalRead(IR_esq)==0 && digitalRead(IR_der)==1){ 
    m1(1, 100);
    m2(1, 180);
  }
// branco-negro -> xira cara á dereita 
  else if (digitalRead(IR_esq)==1 && digitalRead(IR_der)==0){ 
    m1(1, 180);
    m2(1, 100);
  }
// branco-branco -> retrocede
  else{                                                       
    m1(-1, 100);
    m2(-1, 100);
  }

}

Prácticas:

En primeiro lugar elaboraremos o programa básico do segue-liñas, probarémolo e despois introduciremos algunhas melloras:

  • Que non retroceda nunca! Cando o mClon sae fóra da liña, no canto de retroceder habería que indicarlle que xire no sentido axeitado para atopala. Engade unha variable que valla 1 se o robot sae da liña pola dereita e valla 0 cando sae pola esquerda. Cada vez que o robot detecte que saíu da liña cos dous sensores deberá xirar cara a ela.
  • Axustar velocidades:  Imos intentar que o mClon se mova o máis rápido posible pola liña sen balancearse. Se a diferencia entre velocidades é pequena avanzará moito e xirará pouco, e se é moi acusada, avanzará pouco e xirará moito. O primeiro caso interésanos para cando o robot sae por un lado pero aínda ten un sensor dentro da liña, e o segundo caso interésanos cando o robot se perdeu e ten que atopar a liña de novo. Se o robot se atopa nunha recta deberá ir o máis rápido posible. Axusta as velocidades e intenta facer o circuíto no menor tempo posible.
Sensor esquerdo Sensor dereito 000000 Que sucede Instrucións
0 – Negro 0 – Negro 000000 está dentro da liña avanzar rápido
0 – Negro 1 – Branco 000000 sae pola dereita avance con xiro suave á esquerda
1 – Branco 0 – Negro 000000 sae pola esquerda avance con xiro suave á dereita
1 – Branco 1 – Branco 000000 está fóra da liña avance con xiro acusado no sentido da liña