Coche con palanca

Hola. Somos Gabriel Familiar García y Alba Tomás Martínez.

En este blog escribiremos el proceso de conexión y programado de un robot Arduino. En concreto, se trata de un coche con una rampa autopropulsada que utilizará un Arduino Uno.

Además, conectaremos el coche a un smartphone vía Bluetooth gracias a un módulo Bluetooth y a las ondas electromagnéticas.

image0

Lista de materiales para coche con rampa autopropulsada

Algunos de estos materiales los tendréis ya por casa y no hará falta comprarlos.

  • Arduino UNO

    Arduino-Uno-R3-compatible

    Arduino UNO

  • Arduino Sensor Shleld v5186
  • Un H bridge integrado L298N

HTB1Xf8cJrPpK1RjSZFFq6y5PpXap

  • Chasis del coche en metacrilato con ruedas
  • Kit-chasis-de-carro-con-tres-ruedas-800x800_1024x1024Dos motores DCTT-Motor-Smart-Car-Robot-Gear-Motor-for-arduino-Diy-Kit
  • Dos servomotores

51FxedbTfFL._AC_SL1200_

  • Portapilas 18650

999379004-1

  • Pilas 18650

baterias-de-litio-lg-18650-37v-3350mah-m36

  • Cables varios

-font-b-Cable-b-font-Dupont-puente-alambre-Dupont-30-CM-macho-a-macho-hembra

Cableado del coche con rampa autopropulsada

  • bluetooth en pines 2 y 3
  • motor A en pines 10 y 9, velocidad pin 11
  • motor B en pines 8 y 7, velocidad pin 6
  • servos en pines 4 y 5

Vídeo:

Código:

#include <Servo.h>
#include <SoftwareSerial.h>
SoftwareSerial bt1(2, 3);
//Servo
Servo servo1;
Servo servo2;

//MOTOR 1
int vel1 = 11;
int int1 = 10;
int int2 = 9;

//MOTOR 2
int vel2 = 6;
int int3 = 8;
int int4 = 7;

//Bluetooth
char val;

void setup() {
// put your setup code here, to run once:

//Motores
Serial.begin(9600);
pinMode(vel1, OUTPUT);
pinMode(int1, OUTPUT);
pinMode(int2, OUTPUT);

pinMode(vel2, OUTPUT);
pinMode(int3, OUTPUT);
pinMode(int4, OUTPUT);
stop();
delay(1000);

//Bluetooth
bt1.begin(9600);

//Servo
servo1.attach(4);
servo2.attach(5);

servo1.write(90);
servo2.write(180);
delay(1000);

}

void loop() {

if ( bt1.available() ) {
val = bt1.read();
delay(25);
Serial.print(«valor de val :»);
Serial.println(val);
if ( val == ‘1’ ) {
digitalWrite(ledPin12, LOW);
}

if ( val == ‘2’ ) {
digitalWrite(ledPin12, HIGH);

}
if ( val == ‘4’ ) {
digitalWrite(ledPin13, LOW);

}
if ( val == ‘3’ ) {
digitalWrite(ledPin13, HIGH);

}
if ( val == ‘+’ ) {

//servo
servo1.write(180);
servo2.write(90);
delay(500);
}

if ( val == ‘-‘ ) {

servo1.write(90);
servo2.write(180);
delay(500);

}

}

}
void adelante(int velocidad1, int velocidad2) {

//Motor 1
analogWrite(vel1, velocidad1);
digitalWrite(int1, HIGH);
digitalWrite(int2, LOW);
//Motor 2
analogWrite(vel2, velocidad2);
digitalWrite(int3, LOW);
digitalWrite(int4, HIGH);

}

void stop() {

digitalWrite(int1, LOW);
digitalWrite(int2, LOW);
digitalWrite(int3, LOW);
digitalWrite(int4, LOW);

}

void atras(int velocidad1, int velocidad2) {

//Motor 1
analogWrite(vel1, velocidad1);
digitalWrite(int1, LOW);
digitalWrite(int2, HIGH);
//Motor 2
analogWrite(vel2, velocidad2);
digitalWrite(int3, HIGH);
digitalWrite(int4, LOW);

}

void giro1(int velocidad1, int velocidad2) {

//Motor 1
analogWrite(vel1, velocidad1);
digitalWrite(int1, HIGH);
digitalWrite(int2, LOW);
//Motor 2
analogWrite(vel2, velocidad2);
digitalWrite(int3, HIGH);
digitalWrite(int4, LOW);

}
void giro2(int velocidad1, int velocidad2) {

//Motor 1
analogWrite(vel1, velocidad1);
digitalWrite(int1, LOW);
digitalWrite(int2, HIGH);
//Motor 2
analogWrite(vel2, velocidad2);
digitalWrite(int3, LOW);
digitalWrite(int4, HIGH);

}