¿Qué es Arduino?
Arduino es una plataforma de
hardware de código abierto, basada en una sencilla placa con entradas y salidas, analógicas y digitales, en un entorno de desarrollo que está basado en el lenguaje de programación Processing.
Es un dispositivo que conecta el mundo físico con el mundo virtual, o el mundo analógico con el digital.
Sus creadores son el zaragozano David Cuartielles, ingeniero electrónico y
docente de la Universidad de Mälmo, Suecia y Massimo Banzi, italiano, diseñador y
desarrollador Web. El proyecto fue concebido en Italia en el año 2005.
control de los pines digitales atravez de un modulo bluetooth y una app (arduDroid by Techbitar)
codigo arduino
/*
PROYECTO: ArduDroid
PROGRAMADOR: modificado por elprofegarcia.com original escrito por Hazim Bitar
FECHA: Ago 16, 2014
LICENCIA: Publica
Desconectar el modulo Bluetooth mientras carga este programa al Arduino, luego conecte:
ARDUINO BLUETOOTH
Pin 0 (RX) TXD
Pin 1 (Tx) RXD
5V VCC
GND GND
Descargar plano de conexiones en: http://elprofegarcia.com/?page_id=2
Descargar aplicacion Android en Play Store: ArduDroid (Hazim Bitar)
*/
#define CARACTER_INICIO_CMD '*'
#define CARACTER_FINAL_CMD '#'
#define CARACTER_DIV_CMD '|'
#define ESCRITURA_DIGITAL_CMD 10
#define ESCRITURA_ANALOGA_CMD 11
#define TEXTO_CMD 12
#define LECTURA_ARDUDROID_CMD 13
#define MAX_COMMAND 20
#define MIN_COMMAND 10
#define LONGITUD_ENTRADA_STRING 40
#define ESCRITURA_ANALOGICA_MAX 255
#define PIN_ALTO 3
#define PIN_BAJO 2
String inText;
void setup() {
Serial.begin(9600);
Serial.println("elprofegarcia.com");
Serial.flush();
}
void loop()
{
Serial.flush();
int ard_command = 0;
int pin_num = 0;
int pin_value = 0;
char get_char = ' '; //lee serial
// esperar a que los datos entren
if (Serial.available() < 1) return; // si no hay datos en el serial retornar al Loop().
// analizar entrada de indicador de inicio de comando
get_char = Serial.read();
if (get_char != CARACTER_INICIO_CMD) return; // si no hay indicación de inicio del sistema, volver loop ().
// parse incoming command type
ard_command = Serial.parseInt(); // read the command
// analizar el tipo de comando entrante
pin_num = Serial.parseInt(); // leer el pin
pin_value = Serial.parseInt(); // leer el valor
// 1) OBTENER COMANDO DE TEXTO PARA ARDUDROID
if (ard_command == TEXTO_CMD){
inText =""; // borra variable para nueva entrada
while (Serial.available()) {
char c = Serial.read(); // recibe un byte de la memoria intermedia serie
delay(5);
if (c == CARACTER_FINAL_CMD) { // si la cadena completa ha sido leida
// add your code here
break;
}
else {
if (c != CARACTER_DIV_CMD) {
inText += c;
delay(5);
}
}
}
}
// 2) OBTENER DATOS DE digitalWrite ARDUDROID
if (ard_command == ESCRITURA_DIGITAL_CMD){
if (pin_value == PIN_BAJO) pin_value = LOW;
else if (pin_value == PIN_ALTO) pin_value = HIGH;
else return; // error en el valor de PIN. regresar.
set_digitalwrite( pin_num, pin_value); // Eliminar el comentario de esta función para utilizarla
return; // regrese al inicio de loop()
}
// 3) GET analogWrite DATA FROM ARDUDROID
if (ard_command == ESCRITURA_ANALOGA_CMD) {
analogWrite( pin_num, pin_value );
// add your code here
return; // Done. return to loop();
}
// 4) Enviar datos a ARDUDROID
if (ard_command == LECTURA_ARDUDROID_CMD) {
// char send_to_android[] = " Coloca el texto aquí." ;
// Serial.println(send_to_android); // Ejemplo: Envío de texto
Serial.print(" Analogo 0 = ");
Serial.println(analogRead(A0)); // Ejemplo: Leer y enviar valor analógico del Pin de Arduino
return; // Listoe. regrese al loop();
}
}
// 2a) seleccionar el pin # solicitado para la acción digitalWrite
void set_digitalwrite(int pin_num, int pin_value)
{
switch (pin_num) {
case 13:
pinMode(13, OUTPUT);
digitalWrite(13, pin_value);
// adicione su código aquí, para este número de pin del Arduino
break;
case 12:
pinMode(12, OUTPUT);
digitalWrite(12, pin_value);
// adicione su código aquí, para este número de pin del Arduino
break;
case 11:
pinMode(11, OUTPUT);
digitalWrite(11, pin_value);
// adicione su código aquí, para este número de pin del Arduino
break;
case 10:
pinMode(10, OUTPUT);
digitalWrite(10, pin_value);
// adicione su código aquí, para este número de pin del Arduino
break;
case 9:
pinMode(9, OUTPUT);
digitalWrite(9, pin_value);
// adicione su código aquí, para este número de pin del Arduino
break;
case 8:
pinMode(8, OUTPUT);
digitalWrite(8, pin_value);
// adicione su código aquí, para este número de pin del Arduino
break;
case 7:
pinMode(7, OUTPUT);
digitalWrite(7, pin_value);
// adicione su código aquí, para este número de pin del Arduino
break;
case 6:
pinMode(6, OUTPUT);
digitalWrite(6, pin_value);
// adicione su código aquí, para este número de pin del Arduino
break;
case 5:
pinMode(5, OUTPUT);
digitalWrite(5, pin_value);
// adicione su código aquí, para este número de pin del Arduino
break;
case 4:
pinMode(4, OUTPUT);
digitalWrite(4, pin_value);
// adicione su código aquí, para este número de pin del Arduino
break;
case 3:
pinMode(3, OUTPUT);
digitalWrite(3, pin_value);
// adicione su código aquí, para este número de pin del Arduino
break;
case 2:
pinMode(2, OUTPUT);
digitalWrite(2, pin_value);
// adicione su código aquí, para este número de pin del Arduino
break;
// por defecto
// si nada más fue seleccionado, hacer el defecto (default)
// default es opcional
}
}
/* Carro Inalambrico Bluetooth
Dibujo de las conexiones en www.elprofegarcia.com
ARDUINO L293D(Puente H)
5 10
6 15
9 7
10 2
5V 1, 9, 16
GND 4, 5, 12, 13
El motor 1 se conecta a los pines 3 y 6 del Puente H
El motor 2 se conecta a los pines 11 y 14 del Puente H
La fuente de alimentacion de los Motores se conecta a tierra y
el positivo al pin 8 del puennte H.
Conexion del Modulo Bluetooth HC-06 y el Arduino
ARDUINO Bluetooth HC-06
0 (RX) TX
1 (TX) RX
5V VCC
GND GND
!!Cuidado!! Las conexiones de TX y RX al modulo Bluetooth deben estar desconectadas
en el momento que se realiza la carga del codigo (Sketch) al Arduino.
*/
int izqA = 5;
int izqB = 6;
int derA = 9;
int derB = 10;
int vel = 255; // Velocidad de los motores (0-255)
int estado = 'g'; // inicia detenido
void setup() {
Serial.begin(9600); // inicia el puerto serial para comunicacion con el Bluetooth
pinMode(derA, OUTPUT);
pinMode(derB, OUTPUT);
pinMode(izqA, OUTPUT);
pinMode(izqB, OUTPUT);
}
void loop() {
if(Serial.available()>0){ // lee el bluetooth y almacena en estado
estado = Serial.read();
}
if(estado=='a'){ // Boton desplazar al Frente
analogWrite(derB, 0);
analogWrite(izqB, 0);
analogWrite(derA, vel);
analogWrite(izqA, vel);
}
if(estado=='b'){ // Boton IZQ
analogWrite(derB, 0);
analogWrite(izqB, 0);
analogWrite(derA, 0);
analogWrite(izqA, vel);
}
if(estado=='c'){ // Boton Parar
analogWrite(derB, 0);
analogWrite(izqB, 0);
analogWrite(derA, 0);
analogWrite(izqA, 0);
}
if(estado=='d'){ // Boton DER
analogWrite(derB, 0);
analogWrite(izqB, 0);
analogWrite(izqA, 0);
analogWrite(derA, vel);
}
if(estado=='e'){ // Boton Reversa
analogWrite(derA, 0);
analogWrite(izqA, 0);
analogWrite(derB, vel);
analogWrite(izqB, vel);
}
if (estado =='f'){ // Boton ON se mueve sensando distancia
}
if (estado=='g'){ // Boton OFF, detiene los motores no hace nada
}
}
el control del giro de los motores se realiza con una puente H.