const int sensor_1=22;
const int sensor_2=23;
const int sensor_3=24;
const int sensor_4=25;
const int sensor_5=26;
const int sensor_6=27;
int lectura_1=0;
int lectura_2=0;
int lectura_3=0;
int lectura_4=0;
int lectura_5=0;
int lectura_6=0;
float lectura_pot=0; //lectura del potenciometro
const int salida_1=30; //salidas a transistores
para
encender el led del emisor CNY70
const int salida_2=31;
const int salida_3=32;
const int salida_4=33;
const int salida_5=34;
const int salida_6=35;
const int izquierda=2; //son pines para control
de
velocidad por PWM
const int derecha=3;
const int izq_1=40;
const int izq_2=41;
const int der_1=42;
const int der_2=43;
int velocidad_maxima=255; //rangos de velocidad
int velocidad_alta=180;
int velocidad_media=130;
int velocidad_baja=80;
void setup() {
pinMode(sensor_1, INPUT);
pinMode(sensor_2, INPUT);
pinMode(sensor_3, INPUT);
pinMode(sensor_4, INPUT);
pinMode(sensor_5, INPUT);
pinMode(sensor_6, INPUT);
pinMode(salida_1, OUTPUT);
pinMode(salida_2, OUTPUT);
pinMode(salida_3, OUTPUT);
pinMode(salida_4, OUTPUT);
pinMode(salida_5, OUTPUT);
pinMode(salida_6, OUTPUT);
pinMode(izquierda, OUTPUT);
pinMode(derecha, OUTPUT);
pinMode(izq_1, OUTPUT);
pinMode(izq_2, OUTPUT);
pinMode(der_1, OUTPUT);
pinMode(der_2, OUTPUT);
}
void loop() {
//llamamos funcion lectura
lectura();
//condicionales para avance
// 1
if (lectura_1==0 and lectura_2==1 and
lectura_3==1
and lectura_4==1){
izq_adelante();
der_adelante();
analogWrite(izquierda,
velocidad_maxima);
analogWrite(derecha,
velocidad_baja);
}
// 2
if (lectura_1==0 and lectura_2==0 and
lectura_3==1 and lectura_4==1){
izq_adelante();
der_adelante();
analogWrite(izquierda,
velocidad_alta);
analogWrite(derecha,
velocidad_baja);
}
// 3
if (lectura_1==0 and lectura_2==0 and
lectura_3==0 and lectura_4==1){
izq_adelante();
der_adelante();
analogWrite(izquierda,
velocidad_media);
analogWrite(derecha,
velocidad_baja);
}
// 4
if (lectura_1==1 and lectura_2==0 and
lectura_3==0 and lectura_4==1){
izq_adelante();
der_adelante();
analogWrite(izquierda,
velocidad_alta);
analogWrite(derecha,
velocidad_media);
}
// 5
if (lectura_1==1 and
lectura_2==0
and lectura_3==0 and lectura_4==0 and lectura_5==1){
izq_adelante();
der_adelante();
analogWrite(izquierda,
velocidad_maxima);
analogWrite(derecha,
velocidad_alta);
}
// 6
if (lectura_2==1 and lectura_3==0 and
lectura_4==0 and lectura_5==1){
izq_adelante();
der_adelante();
analogWrite(izquierda,
velocidad_maxima);
analogWrite(derecha,
velocidad_maxima);
}
// 7
if (lectura_2==1 and lectura_3==0 and
lectura_4==0 and lectura_5==0 and lectura_6==1){
izq_adelante();
der_adelante();
analogWrite(izquierda,
velocidad_alta);
analogWrite(derecha,
velocidad_maxima);
}
// 8
if (lectura_3==1 and lectura_4==0 and
lectura_5==0 and lectura_6==1){
izq_adelante();
der_adelante();
analogWrite(izquierda,
velocidad_media);
analogWrite(derecha,
velocidad_alta);
}
// 9
if (lectura_3==1 and lectura_4==0 and
lectura_5==0 and lectura_6==0){
izq_adelante();
der_adelante();
analogWrite(izquierda,
velocidad_baja);
analogWrite(derecha,
velocidad_media);
}
// 10
if (lectura_3==1 and lectura_4==1
and
lectura_5==0 and lectura_6==0){
izq_adelante();
der_adelante();
analogWrite(izquierda,
velocidad_baja);
analogWrite(derecha,
velocidad_alta);
}
if (lectura_3==1 and lectura_4==1
and
lectura_5==1 and lectura_6==0){
izq_adelante();
der_adelante();
analogWrite(izquierda,
velocidad_baja);
analogWrite(derecha,
velocidad_maxima);
}
if (lectura_1==1 and lectura_2==1
and
lectura_3==1 and lectura_4==1 and lectura_5==1 and
lectura_6==1){
izq_adelante();
der_adelante();
analogWrite(izquierda, 0);
analogWrite(derecha, 0);
}
}
void lectura(){
// Se leen los sensores, se enciende la salida del
emisor
del sensor, se realiza la lectura del
receptor,
// la lectura se guarda en la variable lectura ,
//se apaga el emisor y se espera un tiempo para hacer
la
lectura en el siguiente sensor.
//lectura sensor 1
digitalWrite(salida_1, HIGH);
delay(3);
lectura_1=digitalRead(sensor_1);
digitalWrite(salida_1, LOW);
delay (3);
//lectura sensor 2
digitalWrite(salida_2, HIGH);
delay(3);
lectura_2=digitalRead(sensor_2);
digitalWrite(salida_2, LOW);
delay (3);
//lectura sensor 3
digitalWrite(salida_3, HIGH);
delay(3);
lectura_3=digitalRead(sensor_3);
digitalWrite(salida_3, LOW);
delay (3);
//lectura sensor 4
digitalWrite(salida_4, HIGH);
delay(3);
lectura_4=digitalRead(sensor_4);
digitalWrite(salida_4, LOW);
delay (3);
//lectura sensor 5
digitalWrite(salida_5, HIGH);
delay(3);
lectura_5=digitalRead(sensor_5);
digitalWrite(salida_5, LOW);
delay (3);
//lectura sensor 6
digitalWrite(salida_6, HIGH);
delay(3);
lectura_6=digitalRead(sensor_6);
digitalWrite(salida_6, LOW);
}
// en las siguientes funciones programamos el
comportamiento de los motores
void der_atras(){
digitalWrite(der_1, LOW);
digitalWrite(der_2, HIGH);
}
void der_adelante(){
digitalWrite(der_1, HIGH);
digitalWrite(der_2, LOW);
}
void izq_atras(){
digitalWrite(izq_1, HIGH);
digitalWrite(izq_2, LOW);
}
void izq_adelante(){
digitalWrite(izq_1, LOW);
digitalWrite(izq_2, HIGH);
}
Comentarios
Publicar un comentario