proyectos en proteus » carro controlado con modulo bluetooth HC-05 y L293 D en PROTEUS
carro controlado con modulo bluetooth HC-05 y L293 D en PROTEUS
primero realizamos el codigo en arduino
luego de aver realizado el codigo tenemos que verificar si compila nuestro programa para eso verificamos aqui:
luego de haber compilado nuestro trabajo copiamos la dirección para poder pegar en nuestro proteus
luego de haber realizado el código pasamos a nuestro proteus:
realizamos nuestro proteus colocando todo los componentes a utilizar
construimos nuestro proyecto en proteus
vemos el funcionamiento:
primero damos clip en la tarjeta del Arduino y ponemos editar propiedades o simplemente damos doble clip y donde dice program file: colocamos la dirección y luego aceptar.
psdta: ayi en la imagen esta señalada en donde debemos pegar la dirección copiada de nuestro código.
construimos nuestro proyecto en proteus
vemos como funciona :)
código de proteus:
//motor 1
int in1 = 13;
int in2 = 12;
int pwmMotor1 = 6;
//motor 2
int in3 = 10;
int in4 = 11;
int pwmMotor2 = 5;
#define LED_AZUL 8
#define LEDS_DELANTE 4
#define LEDS_ATRAS 7
#define buzzer 9 // pin altavoz
//definimos los pines del sensor ultrasonido con el arduino 1
int velocidad=255; // Velocidad de los motores (0-255)
const int trigger =3;
const int echo =2;
long dis(long microseconds);
//inicialisamos una variable estado desde 0
int state = 0;
void setup() {
Serial.begin(9600);
pinMode(in3, OUTPUT);
pinMode(in4, OUTPUT);
pinMode(pwmMotor1, OUTPUT);
pinMode(in2, OUTPUT);
pinMode(in1, OUTPUT);
pinMode(pwmMotor2, OUTPUT);
pinMode(LEDS_DELANTE, OUTPUT);
pinMode(LEDS_ATRAS, OUTPUT);
pinMode(buzzer, OUTPUT);
pinMode(LED_AZUL, OUTPUT);
digitalWrite(in3, LOW);
digitalWrite(in4, LOW);
analogWrite(pwmMotor2, 0);
digitalWrite(in2, LOW);
digitalWrite(in1, LOW);
analogWrite(pwmMotor1, 0);
pinMode(LEDS_DELANTE, LOW);
pinMode(LEDS_ATRAS, LOW);
digitalWrite(LED_AZUL, LOW);
pinMode(trigger, OUTPUT);
pinMode(echo, INPUT);
// put your setup code here, to run once:
}
void loop() {
if(Serial.available() > 0){
state = Serial.read();
}
long duracion, cm;
digitalWrite(trigger, LOW); // set pin 2 on L293D low
delayMicroseconds(2);
digitalWrite(trigger, HIGH); // set pin 2 on L293D low
delayMicroseconds(10);
digitalWrite(trigger, LOW); // set pin 7 on L293D low
// put your main code here, to run repeatedly:
duracion=pulseIn(echo,HIGH);
cm = dis(duracion);
if(state=='w' && cm <= 20){
digitalWrite(LED_AZUL, HIGH);
digitalWrite(buzzer, HIGH);//EVADIR GIRAR ALA DERECHA
tone(buzzer,1000);
digitalWrite(in3, LOW);
digitalWrite(in4, HIGH);
analogWrite(pwmMotor2,velocidad-50);//ponemos el misma potencia pero qui
digitalWrite(in1, LOW);
digitalWrite(in2, HIGH);
analogWrite(pwmMotor1,velocidad);
}
else if(state=='w' && cm > 20){
digitalWrite(LED_AZUL, LOW);
digitalWrite(buzzer, LOW);//EVADIR GIRAR ALA DERECHA
noTone(buzzer);
digitalWrite(in3,HIGH);
digitalWrite(in4, LOW);
analogWrite(pwmMotor2, velocidad);//AVANZAR
digitalWrite(in1, LOW);
digitalWrite(in2, HIGH);
analogWrite(pwmMotor1, velocidad);
}
if(state=='s'){
digitalWrite(in3, LOW);
digitalWrite(in4, HIGH);
analogWrite(pwmMotor2, velocidad);
digitalWrite(in1, HIGH);
digitalWrite(in2, LOW);
analogWrite(pwmMotor1, velocidad);//REVERSA
digitalWrite(LEDS_ATRAS, HIGH);
digitalWrite(buzzer, HIGH);
tone(buzzer,1400);
delay(100);
digitalWrite(LEDS_ATRAS, LOW);
digitalWrite(buzzer, LOW);
noTone(buzzer);
delay(100);
digitalWrite(LEDS_ATRAS, HIGH);
digitalWrite(buzzer, HIGH);
tone(buzzer,1400);
delay(100);
digitalWrite(LEDS_ATRAS, LOW);
digitalWrite(buzzer, LOW);
noTone(buzzer);
delay(100);
//state=0;
}
if(state=='d'){
digitalWrite(in3, LOW);
digitalWrite(in4, LOW);//GIRAR A LA DERECHA
analogWrite(pwmMotor2, 0);
digitalWrite(in1, LOW);
digitalWrite(in2, HIGH);
analogWrite(pwmMotor1, velocidad);
state=0;
}
if(state=='a'){
digitalWrite(in3,HIGH);
digitalWrite(in4, LOW);
analogWrite(pwmMotor2,velocidad);//GIRAR A LA IZQUIERDA
digitalWrite(in2, LOW);
digitalWrite(in1, LOW);
analogWrite(pwmMotor1, 0);
state=0;
}
if(state=='e'){
//PARAR
digitalWrite(in3, LOW);
digitalWrite(in4, LOW);
analogWrite(pwmMotor2, 0);
digitalWrite(in2, LOW);
digitalWrite(in1, LOW);
analogWrite(pwmMotor1, 0);
state=0;
}
if (state=='t') // PULSADOR NO PULSADO
{
digitalWrite(buzzer, HIGH);
tone(buzzer,980); // tone (PIN DEL ZUMBADOR, FREQÜÉNCIA);
//delay (100); // TIEMPO DE MANTENER EL TONO.
}
if (state=='r')
{
digitalWrite(buzzer, LOW);
noTone(buzzer);
}
if(state=='l'){
digitalWrite(LEDS_DELANTE, HIGH);//prender focos de adelante y atras
digitalWrite(LEDS_ATRAS, HIGH);
delay(100);
digitalWrite(LEDS_ATRAS, LOW);
delay(100);
digitalWrite(LEDS_ATRAS, HIGH);
delay(100);
digitalWrite(LEDS_ATRAS, LOW);
delay(100);
}
if(state=='o'){
digitalWrite(LEDS_DELANTE, LOW);//prender focos de adelante y atras
digitalWrite(LEDS_ATRAS, LOW);
}
}
long dis(long microseconds)
{
return microseconds /29 /2;
}