Mecatronica
https://metodologia.pygmalionrobotics.com/U2S2%20-%20Ensamble%20Innobot,%20Primer%20Programa.pdf
/* Carro a control remoto con Bluetooth
SE LE AGREGO LOS BOTONES DE LA APLICACIÓN
J: GIRO EN U IZQUIERDA
K: GIRO EN U DERECHA
L:90 Grados izquierda
P:90 Grados derecha
G:Enciende LED puerto 13. Se apaga presionandolo dos veces y de parar -c-¿?¿?¿ o con automatico
H:Enciende LED puerto 11 y 12, secuencia. Se apaga de parar -c-
CONEXION MOTORES
ARDUINO L293D(Puente H)
5 10
6 15
9 7
10 2
5V 1, 9, 16
GND 4, 5, 12, 13
El motor 1 se conecta a los pines 3 y 6 del Puente H
El motor 2 se conecta a los pines 11 y 14 del Puente H
La fuente de alimentacion de los Motores se conecta a tierra y
el positivo al pin 8 del puennte H.
Conexion del Modulo Bluetooth HC-06 y el Arduino
ARDUINO Bluetooth HC-06
0 (RX) TX
1 (TX) RX
5V VCC
GND GND
!!Cuidado!! Las conexiones de TX y RX al modulo Bluetooth deben estar desconectadas
en el momento que se realiza la carga del codigo (Sketch) al Arduino.
Conexion Sensor Ultrasonido HC-SR04
ARDUINO Ultrasonido HC-SR04
2 Echo
3 Trig
5V VCC
GND Gnd
Conexión Sensores CNY70`S
Arduino
AO --CNY DERECHA
A1 --CNY IZQUIERDA
*/
int y = 1; //segun el foro de arduino cuando aparece
//int z = 0; //collect2.exe: error: ld returned 5 exit status
//int w = 0; // se coloca esas tres variables y soluciono el problema
int CNYA; // declara 'CNYA'
int CNYB; // declara 'CNYB'
int izqA = 5;
int izqB = 6;
int derA = 9;
int derB = 10;
int vel = 255; // Velocidad de los motores (0-255)
int estado = 'c'; // inicia detenido
int pecho = 2; // define el pin 2 como (pecho) para el Ultrasonido
int ptrig = 3; // define el pin 3 como (ptrig) para el Ultrasonido
int duracion, distancia; // para Calcular distancia
void setup() {
Serial.begin(9600); // inicia el puerto serial para comunicacion con el Bluetooth
pinMode(derA, OUTPUT);
pinMode(derB, OUTPUT);
pinMode(izqA, OUTPUT);
pinMode(izqB, OUTPUT);
pinMode(pecho, INPUT); // define el pin 2 como entrada (pecho)
pinMode(ptrig,OUTPUT); // define el pin 3 como salida (ptrig)
pinMode(13,OUTPUT);
pinMode(A0, INPUT); // define el pin A0 como entrada para CNY
pinMode(A1, INPUT); // define el pin A1 como entrada CNY
pinMode(11, OUTPUT); // Se configuran pin 11 como salida
pinMode(12, OUTPUT); // Se configuran pin 12 como salida
}
void loop() {
while (Serial.available()>0){ // lee el bluetooth y almacena en estado
estado = Serial.read();
}
if(estado=='a'){ // AL FRENTE
analogWrite(derA, vel);
analogWrite(izqA, vel);
}
if(estado=='b'){ // IZQUIERDA
analogWrite(izqA, vel);
}
if(estado=='c'){ // PARAR
analogWrite(derB, 0);
analogWrite(izqB, 0);
analogWrite(derA, 0);
analogWrite(izqA, 0);
digitalWrite(11,LOW);
digitalWrite(12,LOW);
}
if(estado=='d'){ // DERECHA
analogWrite(derA, vel);
}
if(estado=='e'){ // REVERSA
analogWrite(derB, vel);
analogWrite(izqB, vel);
}
if (estado =='f'){ // SENSAR DISTANCIA
digitalWrite(ptrig, HIGH); // genera el pulso de trigger por 10us
delay(0.01);
digitalWrite(ptrig, LOW);
duracion = pulseIn(pecho, HIGH); // Lee el tiempo del Echo
distancia = (duracion/2) / 29; // calcula la distancia en centimetros
delay(10);
if (distancia <= 15 && distancia >=2){ // si la distancia es menor de 15cm
digitalWrite(13,HIGH); // Enciende LED
analogWrite(derB, 0); // Parar los motores por 200 mili segundos
analogWrite(izqB, 0);
analogWrite(derA, 0);
analogWrite(izqA, 0);
delay (200);
analogWrite(derB, vel); // Reversa durante 500 mili segundos
analogWrite(izqB, vel);
delay(500);
analogWrite(derB, 0); // Girar durante 1100 milisegundos
analogWrite(izqB, 0);
analogWrite(derA, 0);
analogWrite(izqA, vel);
delay(1100);
digitalWrite(13,LOW);
}
else{ // Si no hay obstaculos se desplaza al frente
analogWrite(derB, 0);
analogWrite(izqB, 0);
analogWrite(derA, vel);
analogWrite(izqA, vel);
}
}
if(estado=='g'){ // INTERMITENCIA PUERTO 11 Y 12, SE APAGA CON PARA -C-
digitalWrite(11, LOW);
digitalWrite(12, LOW);
delay(80); //retardo
digitalWrite(11, HIGH);
delay(80); //retardo
digitalWrite(11, LOW);
digitalWrite(12, HIGH);
delay(40); //retardo
}
if(estado=='h'){ // SEGUIDOR DE LINEA
CNYA =analogRead(A0); //LA LECTURA PARA PASARLO A VOLTIOS SE MULTIPLICA POR 5 Y DIVIDE 1023
CNYB =analogRead(A1); //NO ES NECESARIO SE COMPARA CON 205 (APROXIMADAMENTE 1V)
if (CNYA<205){
analogWrite(derA, vel);
}
else {
analogWrite(derA, 0);
}
if (CNYB<205){
analogWrite(izqA, vel);
}
else {
analogWrite(izqA, 0);
}
}
if(estado=='j'){ // GIRO U IZQUIERDA
analogWrite(izqA, vel);
delay(1111);
analogWrite(derA, vel); //Seguir adelante
}
if(estado=='k'){ // GIRO U DERECHA
analogWrite(derA, vel);
delay(1111);
analogWrite(izqA, vel);//Seguir adelante
}
if(estado=='l'){ // GIRO DE 90 GRADOS IZQUIERDA
analogWrite(izqA, vel);
delay(555);
analogWrite(derA, vel); //Seguir adelante
}
if(estado=='p'){ // GIRO 90 GRADOS DERECHA
analogWrite(derA, vel);
delay(555);
analogWrite(izqA, vel); //Seguir adelante
}
if(estado=='n'){ // Boton P1 (aplicacion), enciende puerto 13
if (y == 1){
digitalWrite(13,HIGH); // Enciende LED
y = 0;
}
else{
digitalWrite(13,LOW); // APAGA LED
y = 1;
}
}
}