Estamos terminando el código de nuestro proyecto (AUTO A CONTROL REMOTO ANTI-CHOQUES) y estamos teniendo problemas a la hora de fusionar 2 códigos: uno del bluetooth y otro del sensor ultrasónico.
El bluetooth sirve para controlar el auto de manera remota y funciona bien, pero cuando agregamos el código de los sensores, el bluetooth deja de funcionar.
(Los sensores estan andando bien)
Aqui les dejamos el codigo:
#include <SoftwareSerial.h>
//pines receptor y transmisor utilizados para el HC-05(bluetooth)
byte pinTx = 8;
byte pinRx =9;
//
int distancias1[10] = {0,0,0,0,0,0,0,0,0,0};
int distancias2[10] = {0,0,0,0,0,0,0,0,0,0};
int suma1 = 0;
int promedio1 = 0;
int promedio2 = 0;
//Funciones de control de ruedas
void Atras(int Izq1,int Izq2, int Der1, int Der2, int IzqEn, int DerEn, int VelIzq, int VelDer);
void Adelante(int Izq1,int Izq2, int Der1, int Der2, int IzqEn, int DerEn, int VelIzq, int VelDer);
void Izquierda(int Izq1,int Izq2, int Der1, int Der2, int IzqEn, int DerEn, int VelIzq, int VelDer);
void Derecha(int Izq1,int Izq2, int Der1, int Der2, int IzqEn, int DerEn, int VelIzq, int VelDer);
void Frenar(int Izq1,int Izq2, int Der1, int Der2);
long readUltrasonicDistance1(int triggerPin, int echoPin);
SoftwareSerial bluetooth(pinRx, pinTx); //siempre Rx ante que Tx
void setup()
{
for(int i=2;i<14;i++){
if(i==9||i==11){
pinMode(i,INPUT);
}else{
pinMode(i,OUTPUT);
}
}
Serial.begin(9600);
bluetooth.begin(9600);
}
void loop(){
//sensor derecha
suma1 = 0;
promedio1 = 0;
for(int i=0;i<10;i++){
//Serial.println(readUltrasonicDistance1(12,11));
delay(100);
distancias1[i] = 0.01723 * readUltrasonicDistance1(12,11);
//Serial.println(distancias1[i]);
suma1 = (distancias1[i] + suma1);
}
promedio1 = suma1/10;
Serial.println(promedio1);
//sensor izquierda
suma1 = 0;
promedio2 = 0;
for(int i=0;i<10;i++){
//Serial.println(readUltrasonicDistance1(12,11));
delay(100);
distancias2[i] = 0.01723 * readUltrasonicDistance1(13,7);
//Serial.println(distancias1[i]);
suma1 = (distancias2[i] + suma1);
}
promedio2 = suma1/10;
Serial.println("Promedio 2 :" + promedio2);
bluetooth.listen();
if(bluetooth.available()){
char b = bluetooth.read();
switch(b){
case 'F': //Adelante
Adelante(10,4,2,3,6,5,255,135);
break;
case 'B': //Atras
Atras(10,4,2,3,6,5,255,240);
break;
case 'R': //Derecha
Derecha(10,4,2,3,6,5,255,255);
break;
case'L': //Izquierda
Izquierda(10,4,2,3,6,5,255,255);
break;
case'G': //AdelanteIzq
Adelante(10,4,2,3,6,5,20,255);
break;
case'I': //AdelanteDer
Adelante(10,4,2,3,6,5,255,20);
break;
case'H': //AtrasIzq
Atras(10,4,2,3,6,5,20,255);
break;
case'J': //AtrasDer
Atras(10,4,2,3,6,5,255,20);
break;
default:
Frenar(10,4,2,3);
}
}
/*if(promedio1 < 5){
}else{
if(bluetooth.available()){
char b = bluetooth.read();
switch(b){
case 'F': //Adelante
Adelante(10,4,2,3,6,5,255,135);
break;
case 'B': //Atras
Atras(10,4,2,3,6,5,255,240);
break;
case 'R': //Derecha
Derecha(10,4,2,3,6,5,255,255);
break;
case'L': //Izquierda
Izquierda(10,4,2,3,6,5,255,255);
break;
case'G': //AdelanteIzq
Adelante(10,4,2,3,6,5,20,255);
break;
case'I': //AdelanteDer
Adelante(10,4,2,3,6,5,255,20);
break;
case'H': //AtrasIzq
Atras(10,4,2,3,6,5,20,255);
break;
case'J': //AtrasDer
Atras(10,4,2,3,6,5,255,20);
break;
default:
Frenar(10,4,2,3);
}
}
}*/
}
/*int Izq1,int Izq2, int Der1, int Der2, int IzqEn, int DerEn, int VelIzq, int VelDer
pin10 pin4 pin2 pin3 pin6 pin5 Velocidades de motor*/
void Frenar(int Izq1,int Izq2, int Der1, int Der2){
digitalWrite(Der2,LOW);
digitalWrite(Der1,LOW);
digitalWrite(Izq2,LOW);
digitalWrite(Izq1,LOW);
}
void Adelante(int Izq1,int Izq2, int Der1, int Der2, int IzqEn, int DerEn, int VelIzq, int VelDer){
digitalWrite(Der2,LOW);//pin3
digitalWrite(Der1,HIGH);//pin2
digitalWrite(Izq2,LOW);//pin4
digitalWrite(Izq1,HIGH);//pin10
analogWrite(DerEn,VelDer);
analogWrite(IzqEn,VelIzq);
}
void Atras(int Izq1,int Izq2, int Der1, int Der2, int IzqEn, int DerEn, int VelIzq, int VelDer){
/*digitalWrite(2,LOW);
digitalWrite(3,HIGH);
digitalWrite(10,LOW);
digitalWrite(4,HIGH);*/
digitalWrite(Der1,LOW);//pin2
digitalWrite(Der2,HIGH);//pin3
digitalWrite(Izq1,LOW);//pin10
digitalWrite(Izq2,HIGH);//pin4
analogWrite(DerEn,VelDer);
analogWrite(IzqEn,VelIzq);
}
void Derecha(int Izq1,int Izq2, int Der1, int Der2, int IzqEn, int DerEn, int VelIzq, int VelDer){
digitalWrite(Der1,LOW);
digitalWrite(Der2,HIGH);
digitalWrite(Izq2,LOW);
digitalWrite(Izq1,HIGH);
}
void Izquierda(int Izq1,int Izq2, int Der1, int Der2, int IzqEn, int DerEn, int VelIzq, int VelDer){
digitalWrite(Der2,LOW);
digitalWrite(Der1,HIGH);
digitalWrite(Izq1,LOW);
digitalWrite(Izq2,HIGH);
}
long readUltrasonicDistance1(int triggerPin, int echoPin){
digitalWrite(triggerPin, LOW);
delayMicroseconds(2);
// Sets the trigger pin to HIGH state for 10 microseconds
digitalWrite(triggerPin, HIGH);
delayMicroseconds(10);
digitalWrite(triggerPin, LOW);
pinMode(echoPin, INPUT);
// Reads the echo pin, and returns the sound wave travel time in microseconds
return pulseIn(echoPin, HIGH);
}