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.
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 Sensor Shleld v5
- Un H bridge integrado L298N
- Chasis del coche en metacrilato con ruedas
- Dos motores DC
- Dos servomotores
- Portapilas 18650
- Pilas 18650
- Cables varios
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);
}