Apreciados estudiantes, expongo código para lo mencionado en la Asignatura Microcontroladores II.
Tener en cuenta los comentarios allí expuestos:
/*
Seguidor de Linea con sesores QTR-8RC o digitales
0= NEGRO
1= BLANCO
IMPORTANTE LEER LINEAS 52 Y 61
*/
#include <QTRSensors.h>
#define NUM_SENSORS 6 // Numero de Sensores a Usar
#define TIMEOUT 2000
#define EMITTER_PIN 38 // Pin de LEDON
#define HIST 300 // Valor de fluctuacion de sensores
QTRSensorsRC qtrrc((unsigned char[]) {2,3,4,5,6,7}, //Pines donde van conectados los sensores
NUM_SENSORS, TIMEOUT, EMITTER_PIN);
unsigned int sensorValues[NUM_SENSORS];
unsigned int sensores = 0;
unsigned int estado1=0;
unsigned int estado2=0;
void setup(){
Serial.begin(9600);
delay(2000);
}
void loop(){
leersensores();
//Determinar dependiendo de las posibilidades
switch (sensores) {
case B110011: //adelante
adelante();
break;
case B100111: //izquierda
case B001111:
case B110111:
case B101111:
case B011111:
izquierda();
break;
case B111001: //derecha
case B111100:
case B111011:
case B111101:
case B111110:
derecha();
break;
case B000111: //llego a bifurcacion que usted programa Aca delimita el codigo para el antes
case B000011:
bifurcacion();
imprime();
break;
}
}
void imprime(){
Serial.println("La medicion para la viburcacion (aqui describen en tipo) es:");
Serial.print("Antes: ");
Serial.println(estado1,BIN);
Serial.print("Despues: ");
Serial.println(estado2,BIN);
}
void bifurcacion(){
estado1 = sensores;
adelante();
delay(100);
leersensores();
estado2 = sensores;
parar();
}
void parar(){
analogWrite(5,0);
analogWrite(3,0);
analogWrite(9,0);
analogWrite(6,0);
}
void adelante(){
analogWrite(5,0);
analogWrite(3,200);
analogWrite(9,0);
analogWrite(6,200);
}
void izquierda(){
analogWrite(9,0);
analogWrite(6,200);
analogWrite(5,0);
analogWrite(3,50);
}
void derecha(){
analogWrite(9,0);
analogWrite(6,50);
analogWrite(5,0);
analogWrite(3,200);
}
void leersensores(){ //Determinar dependiendo de cuantos sensores utiliza
qtrrc.read(sensorValues);
sensores = 0;
for (int i=0;i<=7;i++){
if (sensorValues[i]<HIST)
bitClear(sensores,i);
else
bitSet(sensores,i);
}
//Serial.println(sensores,BIN);
}
No hay comentarios.:
Publicar un comentario