El circuito (realizado con Fritzing):

Utiliza la libreria TocaMelodia, pero puede eliminarse fácilmente comentado las lineas correspondientes.
/*
* Este programa lee dos sensores de seguimiento (tracking sensor)
* e indica la ruta a seguir
*
* 2014 - Guimi (http://guimi.net)
*/
#include <TocaMelodia.h>
// VARIABLES
//----------
const byte sensorIzq=3; // Constante que indica el pin del sensor Izquierdo
const byte sensorDer=2; // Constante que indica el pin del sensor Derecho
const byte altavoz=4; // Constante que indica el pin del altavoz
byte valorIzq=0; // Variable para guardar el valor del sensor Izquierdo [0 Negro; 1 Blanco]
byte valorDer=0; // Variable para guardar el valor del sensor Derecho [0 Negro; 1 Blanco]
byte estado=0; // 0 en marcha; 1 finalizado
byte direccion=0; // Variable que indica la direccion a seguir
// 0 - Quieto
// 1 - Izquierda
// 2 - Delante
// 3 - Derecha
// 9 - Final
TocaMelodia tocaMelodia(altavoz);
// FUNCION SETUP
//--------------
void setup(){
// Definimos cada pin como entrada o salida
pinMode(sensorIzq,INPUT);
pinMode(sensorDer,INPUT);
// Preparamos la comunicacion mediante el puerto serie
Serial.begin(9600);
tocaMelodia.toca(MELODIA_FANFARRIA);
}
// FUNCION LOOP
//-------------
void loop(){
// Mientras el estado sea funcionando
while (estado = 0) {
// Leemos el valor de los sensores [0-1]
valorIzq=digitalRead(sensorIzq);
valorDer=digitalRead(sensorDer);
// Mostramos informacion
Serial.print("Izquierda:");
Serial.print(valorIzq);
Serial.print("; Derecha:");
Serial.print(valorDer);
// Establecemos direccion en base a las lecturas
if (valorIzq && valorDer) { movimiento(2); } // Delante
else if (valorIzq && !valorDer) { movimiento(3); } // Derecha
else if (!valorIzq && valorDer) { movimiento(1); } // Izquierda
else {movimiento(0);} // Quieto
// Esperamos un tiempo de reaccion para los componentes
delay(50);
}
//while(1); // Bucle infinito para parar el programa
}
void movimiento(byte direccion) {
Serial.print("; Direccion:");
switch(direccion){
case 0:
Serial.println("Quieto");
tocaMelodia.toca(MELODIA_PODER_PERRUNO);
delay(2000);
estado=1;
break;
case 1:
Serial.println("Izquierda");
break;
case 2:
Serial.println("Delante");
break;
case 3:
Serial.println("Derecha");
break;
}
}