Utilización del Arduino como plataforma de aprendizaje en la programación.
Enviado por Axel Ramos • 29 de Noviembre de 2016 • Tutorial • 2.029 Palabras (9 Páginas) • 286 Visitas
- Marco Teórico:
Utilización del Arduino como plataforma de aprendizaje en la programación. - Objetivo Genera:
Aprender los diferentes usos que le podemos dar a la plataforma Arduino, en aplicaciones de mundo real. Y en este caso en la creación de un automóvil a control remoto. - Materiales:
(2) Arduino Uno Rev. 3.
(1) Módulo de puente H (L298n).
(4) Motor-reductores.
(4) Llantas para Moto-reductor.
(1) Chasis o base para las llantas
(1) Módulo Nrf para Arduino
(1) Gamepad Shield (es un “modulo” que convierte el Arduino en un Joystick para manejar el “auto” de manera más natural y sin necesidad de utilizar el celular y los típicos fallos de las incompatibilidades del Bluetooth).
(1) Antena amplificadora de señal para el módulo Nrf.
(8) Pillas AA
- Procedimiento:
Fase1: Se comenzó con la idea de cuál módulo movería los motores y había dos maneras con transistores colocados a manera de “puente H” o mediante el uso total de un puente H ya fabricado, y ya que los moto-reductores necesitaban más de los 500 mA y más de 5 volts, los transistores estarían al punto de quemarse, se prefirió utilizar el puente H ya fabricado puesto que pueden soportar hasta cantidades de más de 1 amperio pueden llegar a soportar hasta los 24 volts sin ningún problema y algunos ya vienen con la facilidad de poder utilizar el PWM de manera “nativa”.
Para esto se usó un módulo que venía con un doble puente H, el módulo L298n, éste nos permite maniobrar dos motores al mismo tiempo, pero nosotros utilizamos cuatro. Esto no quiere decir que también requiriéramos de un segundo módulo, sino que se conectaron dos motores a la salida 1 del módulo y de igual manera se conectaron otros dos motores a la segunda salida.
[pic 1]
Fase 2: Se procedió a realizar unas pruebas en el programa Arduino Uno para que el módulo le mandara los pulsos necesarios a los moto-reductores y realizara las principales acciones de movimiento que llegamos a ver en cualquier automóvil, (Delante, Reversa, Giro a la Izquierda, Giro a la Derecha).
/* Prueba del Puente H (L298n)
ARDUINO L298N Pila
2 IN1
3 IN2
4 IN4
5 ENA
6 ENB
7 IN3
Vin +5V
GND GND GND
+12 9V
El motor Izquierdo va a OUT 2
el motor Derecho ca a OUT 1
*/
int derA=2;
int derB=3;
int izqA=7;
int izqB=4;
int PWM_Derecho=5;
int PWM_Izquierdo=6;
int vel=100;
void setup() {
pinMode(derA,OUTPUT);
pinMode(derB,OUTPUT);
pinMode(izqA,OUTPUT);
pinMode(izqB,OUTPUT);
pinMode(PWM_Derecho,OUTPUT);
pinMode(PWM_Izquierdo,OUTPUT);
}
void loop() {
analogWrite(derA, vel);
analogWrite(izqB, vel);
delay (100);
analogWrite(derA, 0); // Parar 5 segundos.
analogWrite(izqA, 0);
analogWrite(derA, 0);
analogWrite(izqB, 0);
delay (500);
analogWrite(derA, vel); // Adelante 2 segundos.
analogWrite(izqA, vel);
delay (200);
analogWrite(derA, vel); // Izquierda 2 segundos.
analogWrite(izqB, vel);
delay (200);
analogWrite(derB, vel); // Derecha 2 segundos.
analogWrite(izqA, vel);
delay (200);
analogWrite(derA, 0); // Parar 5 segundos.
analogWrite(izqA, 0);
analogWrite(derA, 0);
analogWrite(izqB, 0);
delay (500);
analogWrite(derB, vel); // Reversa 2 segundos.
analogWrite(izqB, vel);
delay (200);
}
[pic 2]
A partir de ahora comenzamos a hacer las pruebas con el módulo Nrf y el Arduino creando algo más elaborado.
Primero se realizó el programa del Joystick.
/*
1 - GND
2 - VCC 3.3V !!! NOT 5V
3 - CE - Arduino pin 9
4 - CSN - Arduino pin 10
5 - SCK - Arduino pin 13
6 - MOSI - Arduino pin 11
7 - MISO - Arduino pin 12
8 - UNUSED
Botones por Default a los Pins:
Up - pin 2
Right - pin 3
Down - pin 4
Left - pin 5
-
Analog Joystick module
GND - Arduino GND
VCC - Arduino +5V
X Pot - Arduino A0
Y Pot - Arduino A1
/*-----( Importando Librerías )-----*/
#include
#include "nRF24L01.h"
#include "RF24.h"
/*-----( Declarando COnstantes y Pines )-----*/
#define CE_PIN 9
#define CSN_PIN 10
#define JOYSTICK_X A0
#define JOYSTICK_Y A1
// NOTE: Las "LL" al final de la constante es tipo "LongLong"
const uint64_t pipe = 0xE8E8F0F0E1LL; // Definiedno el transito
/*-----( Declarando objetos )-----*/
RF24 radio(CE_PIN, CSN_PIN); // Creación de Radio
...