Documente Academic
Documente Profesional
Documente Cultură
Sumario
1 Brazo robot..........................................................................................................................2
2 Proyectos que se pueden realizar........................................................................................3
3 Conexiones Brazo Arduino Mega.......................................................................................4
4 Explicacin del cdigo..........................................................................................................5
4.1 Configuracin del brazo - robot.....................................................................................5
4.2 Clase Motor...................................................................................................................6
4.3 Implementacin clase Motor.........................................................................................8
4.4 Clase Brazo.................................................................................................................12
4.5 Implementacin clase Brazo.......................................................................................13
4.5 Otros defines...............................................................................................................19
4.6 Programa que controla el brazo..................................................................................20
4.7 Interfaz processing para el control del brazo de robot................................................25
4.8 Programa processing que implementa la interfaz.......................................................26
5. Control de Motores de CC con el chip L293D y arduino....................................................33
5.1 Esquema del L293D....................................................................................................33
2.2 Conexiones del L293D con arduino.............................................................................34
Autores.................................................................................................................................35
1/35
C/ Avinguda de lInstitut, s/n. El Puig-46540. Tel: 961 206 025. E-mail: 46023894@edu.gva.es
DeINF[ DEPARTAMENT DINFORMTICA ]
IES El Puig de Santa Maria
1 Brazo robot.
Es el brazo mecnico de la dotacin de tecnologa. Dispone de cinco grados de libertad, y por tanto cinco
motores. Los motores son de corriente continua (cc).
Se puede conectar el brazo a una controladora arduino?
Como son motores de cc
para cada motor se
requieren tres conexiones de
arduino, de las cuales una
de ellas debe ser pwm, para
un control con precisin. Por
tanto se necesitan 15
conexiones digitales y de
ellas 5 pwm. Este nmero
hace imposible conectar las
arduino bsicas para
controlar todos los motores.
Adems cada dos motores
utilizan un integrado con dos
puente H.
Es decir para un control total
del brazo se requiere una
arduino Mega.
En la imagen se pueden ver los cables conectados a cada uno de los motores. Los colores de los cables son
arbitrarios.
En la tabla se identifica cada motor, la
operacin que hace y qu conexin le
corresponde.
2/35
C/ Avinguda de lInstitut, s/n. El Puig-46540. Tel: 961 206 025. E-mail: 46023894@edu.gva.es
DeINF[ DEPARTAMENT DINFORMTICA ]
IES El Puig de Santa Maria
Tabla descriptiva:
3/35
C/ Avinguda de lInstitut, s/n. El Puig-46540. Tel: 961 206 025. E-mail: 46023894@edu.gva.es
DeINF[ DEPARTAMENT DINFORMTICA ]
IES El Puig de Santa Maria
4/35
C/ Avinguda de lInstitut, s/n. El Puig-46540. Tel: 961 206 025. E-mail: 46023894@edu.gva.es
DeINF[ DEPARTAMENT DINFORMTICA ]
IES El Puig de Santa Maria
//chip 2: L293D
//motor 3: los nmeros son los pines usados de arduino. Cable naranja. Codo.
const int EnableM3 = 10;
const int M3_2 = 9;
const int M3_7 = 8;
//motor 4: los nmeros son los pines usados de arduino. Cable rosa. Rotacion base.
const int EnableM4 = 7;
const int M4_10 = 6;
const int M4_15 = 5;
//chip 3: L293D
//motor 6: los nmeros son los pines usados de arduino. Cable marron. Elevacion brazo.
const int EnableM6 = 3;
const int M6_2 = 30;
const int M6_7 = 31;
5/35
C/ Avinguda de lInstitut, s/n. El Puig-46540. Tel: 961 206 025. E-mail: 46023894@edu.gva.es
DeINF[ DEPARTAMENT DINFORMTICA ]
IES El Puig de Santa Maria
//motor 7: los nmeros son los pines usados de arduino. Cable negro. Rotacion pinza.
const int EnableM7 = 2;
const int M7_10 = 22;
const int M7_15 = 23;
/**
Array (lista) de parmetros para los motores. Cada motor queda definido con tres valores o parmetros. El
primero es para el pin Enable y los otros dos para input1 e input2. Para ms detalles ver documentacin del
chip L293D.
*/
int listaParametrosMotores[15]={EnableM2, M2_2, M2_7,// 0 = pinza
EnableM3, M3_2, M3_7, // 1 = codo
EnableM4, M4_10, M4_15, // 2 = base
EnableM6, M6_2, M3_7, // 3 = hombro
EnableM7, M7_10, M4_15 // 4 = munyeca
};
/**
Crea un objeto brazo.
A este se le pueden aplicar las operaciones en el interfaz de la clase Brazo, que son entre otras:
abrirpinza, cerrarpinza, parapinza, subircodo, bajarcodo ...
*/
Brazo miBrazo;
6/35
C/ Avinguda de lInstitut, s/n. El Puig-46540. Tel: 961 206 025. E-mail: 46023894@edu.gva.es
DeINF[ DEPARTAMENT DINFORMTICA ]
IES El Puig de Santa Maria
int getPinB();
int getVelocidad();
int getEstado();
void setPinEnable(int unPin);
void setPinA(int unPin);
void setPinB(int unPin);
void setVelocidad(int v);
void disable();
void enable();
void adelante();
void atras();
void para();
void cambiarVelocidad(int v);
};
7/35
C/ Avinguda de lInstitut, s/n. El Puig-46540. Tel: 961 206 025. E-mail: 46023894@edu.gva.es
DeINF[ DEPARTAMENT DINFORMTICA ]
IES El Puig de Santa Maria
8/35
C/ Avinguda de lInstitut, s/n. El Puig-46540. Tel: 961 206 025. E-mail: 46023894@edu.gva.es
DeINF[ DEPARTAMENT DINFORMTICA ]
IES El Puig de Santa Maria
int Motor::getPinB()
{
if (DEBUG) Serial.println("PinB: ");
return pinB;
}
int Motor::getVelocidad()
{
if (DEBUG) Serial.println("velocidad: ");
return velocidad;
}
void Motor::setPinEnable(int unPin)
{
if (DEBUG) Serial.println("");
this->pinEnable = unPin;
}
void Motor::setPinA(int unPin)
{
if (DEBUG) Serial.println("");
this->pinA = unPin;
}
void Motor::setPinB(int unPin)
{
if (DEBUG) Serial.println("");
this->pinB = unPin;
}
void Motor::setVelocidad(int v)
{
if (DEBUG) Serial.println("");
this->velocidad = v;
}
9/35
C/ Avinguda de lInstitut, s/n. El Puig-46540. Tel: 961 206 025. E-mail: 46023894@edu.gva.es
DeINF[ DEPARTAMENT DINFORMTICA ]
IES El Puig de Santa Maria
void Motor::disable()
{
if (DEBUG) Serial.println("disable motor");
digitalWrite(pinEnable, LOW);
estado = DISABLE;
}
void Motor::enable()
{
if (DEBUG) Serial.println("enable motor");
analogWrite(pinEnable, 2);
estado = ENABLE;
}
void Motor::adelante()
{
if (DEBUG) Serial.println("adelante");
digitalWrite(pinA,HIGH);
digitalWrite(pinB,LOW);
estado = ADELANTE;
}
void Motor::atras()
{
if (DEBUG) Serial.println("atras");
digitalWrite(pinA,LOW);
digitalWrite(pinB,HIGH);
estado = ATRAS;
}
void Motor::para()
{
if (DEBUG) Serial.println("para");
digitalWrite(pinA,LOW);
digitalWrite(pinB,LOW);
estado = PARADO;
}
10/35
C/ Avinguda de lInstitut, s/n. El Puig-46540. Tel: 961 206 025. E-mail: 46023894@edu.gva.es
DeINF[ DEPARTAMENT DINFORMTICA ]
IES El Puig de Santa Maria
void Motor::cambiarVelocidad(int v)
{
setVelocidad(v);
//mapear valor
int speed = map(v, 0, 9, 0, 255); //Re-mapea un numero desde un rango a otro
analogWrite(pinEnable , v); //v es un valor entre 0 y 255, no se map por que resulta muy complicado
controlar
}
11/35
C/ Avinguda de lInstitut, s/n. El Puig-46540. Tel: 961 206 025. E-mail: 46023894@edu.gva.es
DeINF[ DEPARTAMENT DINFORMTICA ]
IES El Puig de Santa Maria
12/35
C/ Avinguda de lInstitut, s/n. El Puig-46540. Tel: 961 206 025. E-mail: 46023894@edu.gva.es
DeINF[ DEPARTAMENT DINFORMTICA ]
IES El Puig de Santa Maria
void subircodo();
void bajarcodo();
void paracodo();
void cambiarVelocidadcodo(int v);
//2 - Motor 4 > base Horario / Antihorario
void girahorariobase();
void giraantihorariobase();
void parabase();
void cambiarVelocidadbase(int v);
//3 - Motor 6 > hombro Subir / Bajar
void subirhombro();
void bajarhombro();
void parahombro();
void cambiarVelocidadhombro(int v);
//4 - Motor 7 > munyeca Horario / Antihorario
void girahorariomunyeca();
void giraantihorariomunyeca();
void paramunyeca();
void cambiarVelocidadmunyeca(int v);
};
/**
Implementa class Brazo.cpp
*/
#include <Arduino.h> // Arduino includes
#include "Brazo.h"
Brazo::Brazo()
{
for (int i = 0; i < motores_q_t_brazo; i++)
motores[i]=Motor();//inicializa los motores a sus valores por defecto.
}
13/35
C/ Avinguda de lInstitut, s/n. El Puig-46540. Tel: 961 206 025. E-mail: 46023894@edu.gva.es
DeINF[ DEPARTAMENT DINFORMTICA ]
IES El Puig de Santa Maria
Brazo::~Brazo()
{
}
/**
aMotores es un array de 15 elementos, que se agrupan de tres en tres para definir los cinco motores
*/
Brazo::Brazo(int aMotores[])
{
int a,b,c;
for (int i = 0; i < motores_q_t_brazo; i++){//inicializa los motores con los valores del array.
a=aMotores[i*3+0];//valores posibles 0,3,6,9,12
b=aMotores[i*3+1];//valores posibles 1,4,7,10,13
c=aMotores[i*3+2];//valores posibles 2,5,8,11,14
motores[i] = Motor(a,b,c, 100);
}
}
void Brazo::disableBrazo()
{
if (DEBUG) Serial.println("Disable Brazo");
for (int i = 0; i < motores_q_t_brazo; i++){
motores[i].disable();
}
if (DEBUG) Serial.println("*************");
}
void Brazo::enableBrazo()
{
if (DEBUG) Serial.println("Enable Brazo");
for (int i = 0; i < motores_q_t_brazo; i++){
motores[i].enable();
}
if (DEBUG) Serial.println("*************");
14/35
C/ Avinguda de lInstitut, s/n. El Puig-46540. Tel: 961 206 025. E-mail: 46023894@edu.gva.es
DeINF[ DEPARTAMENT DINFORMTICA ]
IES El Puig de Santa Maria
void Brazo::cerrarpinza()
{
if (DEBUG) Serial.println("cierra pinza");
motores[0].atras();
}
void Brazo::parapinza()
{
if (DEBUG) Serial.println("para pinza");
motores[0].para();
}
void Brazo::cambiarVelocidadpinza(int v)
{
if (DEBUG) Serial.println("abre pinza");
motores[0].cambiarVelocidad(v);
}
15/35
C/ Avinguda de lInstitut, s/n. El Puig-46540. Tel: 961 206 025. E-mail: 46023894@edu.gva.es
DeINF[ DEPARTAMENT DINFORMTICA ]
IES El Puig de Santa Maria
void Brazo::bajarcodo()
{
if (DEBUG) Serial.println("baja codo");
motores[1].atras();
}
void Brazo::paracodo()
{
if (DEBUG) Serial.println("para codo");
motores[1].para();
}
void Brazo::cambiarVelocidadcodo(int v)
{
if (DEBUG) Serial.println("cambia velocidad codo");
motores[1].cambiarVelocidad(v);
}
void Brazo::giraantihorariobase()
{
if (DEBUG) Serial.println("gira base en sentido antihorario");
motores[2].atras();
}
void Brazo::parabase()
{
16/35
C/ Avinguda de lInstitut, s/n. El Puig-46540. Tel: 961 206 025. E-mail: 46023894@edu.gva.es
DeINF[ DEPARTAMENT DINFORMTICA ]
IES El Puig de Santa Maria
void Brazo::bajarhombro()
{
if (DEBUG) Serial.println("bajar hombro");
motores[3].atras();
}
void Brazo::parahombro()
{
if (DEBUG) Serial.println("subir hombro");
motores[3].para();
}
void Brazo::cambiarVelocidadhombro(int v)
{
if (DEBUG) Serial.println("cambiar velocidad hombro");
motores[3].cambiarVelocidad(v);
}
17/35
C/ Avinguda de lInstitut, s/n. El Puig-46540. Tel: 961 206 025. E-mail: 46023894@edu.gva.es
DeINF[ DEPARTAMENT DINFORMTICA ]
IES El Puig de Santa Maria
void Brazo::giraantihorariomunyeca()
{
if (DEBUG) Serial.println("gira mueca sentido antihorario");
motores[4].atras();
}
void Brazo::paramunyeca()
{
if (DEBUG) Serial.println("para munyeca");
motores[4].para();
}
void Brazo::cambiarVelocidadmunyeca(int v)
{
if (DEBUG) Serial.println("cambia velocidad munyeca");
motores[4].cambiarVelocidad(v);
}
18/35
C/ Avinguda de lInstitut, s/n. El Puig-46540. Tel: 961 206 025. E-mail: 46023894@edu.gva.es
DeINF[ DEPARTAMENT DINFORMTICA ]
IES El Puig de Santa Maria
/**
Defines para depuracion.
*/
#define BAUD 9600
#define DEBUG true
#define DEBDRV false
/**
Estados del motor
*/
//Tiempo de espera:
#define DOSSEG 2000
//Estados del motor
#define DISABLE 0
#define ENABLE 1
#define ADELANTE 2
#define ATRAS 3
#define PARADO 4
19/35
C/ Avinguda de lInstitut, s/n. El Puig-46540. Tel: 961 206 025. E-mail: 46023894@edu.gva.es
DeINF[ DEPARTAMENT DINFORMTICA ]
IES El Puig de Santa Maria
#include "Brazo.h"
#define BAUD 9600
#define DEBUG true
/**
* La seleccin del grado de libertad, es decir a usar se hace por medio de las siguientes teclas:
* Q Base, seguido de las flechas izq o derecha para indicar la direccin de giro.
* A Hombro, seguido de las flechas arriba o abajo para definir si sube o baja.
* Z Codo, seguido de las flechas arriba o abajo para definir si sube o baja.
* S Mueca, seguido de las flechas izq o derecha para indicar la direccin de giro.
* X Pinza, seguido de las flechas izq o derecha para indicar apertura o cierre.
*/
/*
/**
Motores cc: CONFIGURACION DE PINES
De cada motor se dice en el comentario :
su numero, seguido del significado los valores asignados a las const int. Color cable que conecta con el
motor del brazo. Funcionalidad del motor.
Evidentemente los colores usados en los cables son arbitrarios.
Si se cambia la configuracin de los pines en el placa, se debe cambiar aqu y vicieversa.
*/
//chip 1: L293D
//motor 2: los nmeros son los pines usados de arduino-mega. Cable amarillo. Apertura / Cierre pinza.
const int EnableM2 = 13;
const int M2_2 = 12;
const int M2_7 = 11;
20/35
C/ Avinguda de lInstitut, s/n. El Puig-46540. Tel: 961 206 025. E-mail: 46023894@edu.gva.es
DeINF[ DEPARTAMENT DINFORMTICA ]
IES El Puig de Santa Maria
//chip 2: L293D
//motor 3: los nmeros son los pines usados de arduino. Cable naranja. Codo.
const int EnableM3 = 10;
const int M3_2 = 9;
const int M3_7 = 8;
//motor 4: los nmeros son los pines usados de arduino. Cable rosa. Rotacion base.
const int EnableM4 = 7;
const int M4_10 = 6;
const int M4_15 = 5;
//chip 3: L293D
//motor 6: los nmeros son los pines usados de arduino. Cable marron. Elevacion brazo.
const int EnableM6 = 3;
const int M6_2 = 30;
const int M6_7 = 31;
//motor 7: los nmeros son los pines usados de arduino. Cable negro. Rotacion pinza.
const int EnableM7 = 2;
const int M7_10 = 22;
const int M7_15 = 23;
//lista de valores que se pasan al brazo de robot. Se corresponden con la configuracin anterior
int listaParametrosMotores[15] = {EnableM2, M2_2, M2_7, // 0 = pinza
EnableM3, M3_2, M3_7, // 1 = codo
EnableM4, M4_10, M4_15, // 2 = base
EnableM6, M6_2, M6_7, // 3 = hombro
EnableM7, M7_10, M7_15 // 4 = munyeca
};
Brazo br, *pbr;//se crea un objeto brazo y una referencia a un objeto Brazo
21/35
C/ Avinguda de lInstitut, s/n. El Puig-46540. Tel: 961 206 025. E-mail: 46023894@edu.gva.es
DeINF[ DEPARTAMENT DINFORMTICA ]
IES El Puig de Santa Maria
void setup() {
Serial.begin(BAUD);
Serial.println("setup, empezando");
br = Brazo( listaParametrosMotores);//se configura el objeto brazo creado
pbr = &br;//se inicializa la referencia al brazo creado
}
void loop() {
if ( Serial.available()) { //Si el puerto serie esta disponible?
char ch = Serial.read(); //variable tipo char desde puerto serial
//Serial.println(ch);
//comprobar motor seleccionado.
//valido ser TRUE si se ha pulsado alguno de los carecteres mostrados
bool valido = (ch == 'a' || ch == 'A' || ch == 'q' || ch == 'Q' || ch == 'z' || ch == 'Z' || ch == 's' || ch ==
'S' || ch == 'x' || ch == 'X' || ch == 'n' || ch == 'N' || ch == 'm' || ch == 'M' || ch == 'p' || ch == 'P');
if (valido) //si el caracter es vlido
{
mov.a = br;//inicializa la estructura de movimientos
Serial.println(ch);
switch (ch)
{
case 'a':// mover hombro
case 'A':
Serial.println("Mover Hombro");
mov.numeromotor = 3;
break;
case 'q':// mover base
case 'Q':
Serial.println("Mover Base");
22/35
C/ Avinguda de lInstitut, s/n. El Puig-46540. Tel: 961 206 025. E-mail: 46023894@edu.gva.es
DeINF[ DEPARTAMENT DINFORMTICA ]
IES El Puig de Santa Maria
mov.numeromotor = 2;
break;
case 'z':// mover Codo
case 'Z':
Serial.println("Mover Codo");
mov.numeromotor = 1;
break;
case 'x':// mover munyeca
case 'X':
Serial.println("Mover Munyeca");
mov.numeromotor = 4;
break;
case 's':// mover pinza
case 'S':
Serial.println("Mover Pinza");
mov.numeromotor = 0;
//delay(1000);
break;
case 'n':
case 'N':
Serial.println("Mover el motor adecuado");
mov.a.mover(mov.numeromotor, 0);
//delay(1000);
break;
case 'm':
case 'M':
Serial.println("Mover el motor adecuado");
mov.a.mover(mov.numeromotor, 1);
//delay(1000);
break;
case 'p':
case 'P':
Serial.println("Parar el motor adecuado");
mov.a.mover(mov.numeromotor, 2);
23/35
C/ Avinguda de lInstitut, s/n. El Puig-46540. Tel: 961 206 025. E-mail: 46023894@edu.gva.es
DeINF[ DEPARTAMENT DINFORMTICA ]
IES El Puig de Santa Maria
//delay(1000);
break;
}
}//fin if Serial.available()
24/35
C/ Avinguda de lInstitut, s/n. El Puig-46540. Tel: 961 206 025. E-mail: 46023894@edu.gva.es
DeINF[ DEPARTAMENT DINFORMTICA ]
IES El Puig de Santa Maria
25/35
C/ Avinguda de lInstitut, s/n. El Puig-46540. Tel: 961 206 025. E-mail: 46023894@edu.gva.es
DeINF[ DEPARTAMENT DINFORMTICA ]
IES El Puig de Santa Maria
void setup()
{
size(700, 400);
dibLinCentral();
miFont = createFont("DejaVu", 16, true);//crea una fuente
println((Object[])Serial.list());//muestra en la consola la lista de puertos serie disponibles
myPort = new Serial(this,Serial.list()[32],BAUD);// crea un objeto serial concretamente el que se pasa entre
corchetes
26/35
C/ Avinguda de lInstitut, s/n. El Puig-46540. Tel: 961 206 025. E-mail: 46023894@edu.gva.es
DeINF[ DEPARTAMENT DINFORMTICA ]
IES El Puig de Santa Maria
}
void draw()
{
background(255);
dibRecSeleccion();//dib. botones de seleccin de motores = grados de libertad del brazo robot
dibLinCentral(); // dib. la lnea central
dibRecAccion(9); // dib. los botones de seleccin de las operaciones que se pueden realizar
if (btSeleccionado != NINGUNO)//si hay algn boton seleccionado
{
textFont(miFont,16);//especifica la fuente con la escribir el texto
text(" ", width/2+20, height/2+20);//borra la accin que pudiese haber previamente
text("MOTOR: "+textos[btSeleccionado]+"> SELECCIONADO", width/2-20, height/2-20);//muestra el motor
seleccionado
switch (btSeleccionado) {//dependiendo del motor seleccionado se pueden realizar unos u otros
movimientos con el brazo, y se necesitan actualizar los botones
case 0://Se ha seleccionado pinza. Operaciones que se pueden hacer: abrir, cerrar.
dibRecAccion(7); //dib las acciones relacionadas con la pinza
myPort.write('S');//se le dice al brazo que prepare el motor de la pinza
//delay(100);
break;
case 1://Se ha seleccionado codo. Operaciones que se pueden hacer: subir, bajar
dibRecAccion(5);//...
myPort.write('Z');//...
//delay(100);
break;
case 2://Se ha seleccionado base. Operaciones que se pueden hacer: girar horario, girar antihorario
dibRecAccion(9);//...
myPort.write('Q'); //...
//delay(100);
break;
case 3://hombro: subir o bajar
dibRecAccion(5);//Se ha seleccionado hombro. Operaciones que se pueden hacer: subir, bajar
myPort.write('A');
//delay(100);
27/35
C/ Avinguda de lInstitut, s/n. El Puig-46540. Tel: 961 206 025. E-mail: 46023894@edu.gva.es
DeINF[ DEPARTAMENT DINFORMTICA ]
IES El Puig de Santa Maria
break;
case 4://Se ha seleccionado munyeca. Operaciones que se pueden hacer: girar horario, girar antihorario
dibRecAccion(9);
myPort.write('X');
//delay(100);
break;
}
}
if (accionSelectexto != NINGUNO)
{
textFont(miFont,16);//especifica la fuente con la escribir el texto
text("MOTOR: "+textos[accionSelectexto]+"> Movimiento", width/2+20, height/2+20);
switch(accionSelec)
{
case 0://adelante
myPort.write('N');
//delay(100);
break;
case 1://atras
myPort.write('M');
//delay(100);
break;
case 2://adelante
myPort.write('P');
//delay(100);
break;
}
}
}
/**
Dibuja linea central
*/
28/35
C/ Avinguda de lInstitut, s/n. El Puig-46540. Tel: 961 206 025. E-mail: 46023894@edu.gva.es
DeINF[ DEPARTAMENT DINFORMTICA ]
IES El Puig de Santa Maria
void dibLinCentral()
{
stroke(#E320E0);//selecciona tinta
strokeWeight(5);//espesor linea
line(0, height/2, width, height/2);
}
/**
Dibuja rectangulos
Dibuja 5 botones en la parte superior del area de trabajo, coge los textos del array de String's textos.
*/
void dibRecSeleccion()
{
int ancho=130, alto=32, posX=8, posY=height/4, margen=8;
stroke(#FC035A);
for (int i=0; i<5; i++)
{
fill(color_por_defecto1);
rect(posX, posY, ancho, alto);
fill(0);
text(textos[i], posX+5, posY+alto*2/3);
posX = posX + ancho + margen;
}
}
/**
Dibuja 3 botones en la parte inferior de la ventana, coge los textos de los dos primeros del array de String's
textos. El indice del texto del primer parmetro es indicado como parmetro.
el tercer botn que dibuja siempre tiene como texto la posicin 11.
*/
void dibRecAccion(int accion1)
{
int ancho=213, alto=32, posX=15, posY=height*3/4, margen=15;
int color_relleno_boton = #2707E3, parar = 11; //parar es la posicin de la accin comun a todos los
motores
stroke(#FC035A);//tinta borde
29/35
C/ Avinguda de lInstitut, s/n. El Puig-46540. Tel: 961 206 025. E-mail: 46023894@edu.gva.es
DeINF[ DEPARTAMENT DINFORMTICA ]
IES El Puig de Santa Maria
30/35
C/ Avinguda de lInstitut, s/n. El Puig-46540. Tel: 961 206 025. E-mail: 46023894@edu.gva.es
DeINF[ DEPARTAMENT DINFORMTICA ]
IES El Puig de Santa Maria
if (mouseX >posX && mouseX< posX+ancho && mouseY >posY && mouseY<posY+alto) {//comprobar en
que area se hace el clic
//print(" posX: "+posX);
btSeleccionado = i;//se guarda la posicin del botn pulsado
accionSelectexto = NINGUNO;//se elimina la accin anterior
text(" ", width/2+20, height/2+20);//se borra el texto asociado a la accin anterior
}
posX = posX + ancho + margen;//se pasa a la posicin del siguiente botn
//print("\n");
}
//if (btSeleccionado !=NINGUNO )
{
ancho = 213; //ancho del botn de accin
alto = 32; // alto del botn de accin
posX = 15; // posicin X del primer botn de accin
margen = 15; // distancia entre botones
posY = height*3/4;//posicin Y de los botones
for (int i=0; i<3; i++)//recorrer los tres botones
{
//print("accin i: "+ i);
if (mouseX >posX && mouseX< posX+ancho && mouseY >posY && mouseY<posY+alto) {//comprobar en
que area se hace el clic
//print(" posX: "+posX);
if (btSeleccionado == 2 || btSeleccionado == 4 ) {// los motores 2 y 4 tiene los mismos nombres para las
acciones, comprobar en el String[] textos
accionSelectexto = i + 9;//indice del texto a seleccionar
accionSelec = i;//indice de la accin a realizar
}
if (btSeleccionado == 1 || btSeleccionado == 3 ) {// los motores 1 y 3 tiene los mismos nombres para las
acciones, comprobar en el String[] textos
accionSelectexto = i + 5;//...
accionSelec = i;//...
}
if (btSeleccionado == 0 ) {//seleccionada la Pinza
31/35
C/ Avinguda de lInstitut, s/n. El Puig-46540. Tel: 961 206 025. E-mail: 46023894@edu.gva.es
DeINF[ DEPARTAMENT DINFORMTICA ]
IES El Puig de Santa Maria
accionSelectexto = i + 7;//...
accionSelec = i;//...
}
if (i == 2 ) {//seleccionada la accin de parar. Accin comn a todos los motores
accionSelectexto = 11;//posicin del texto "Parar" en String[] textos
accionSelec = i;
}
}
posX = posX + ancho + margen;//actualiza la posicin del siguiente botn a comprobar.
//print("\n");
}
}
}
32/35
C/ Avinguda de lInstitut, s/n. El Puig-46540. Tel: 961 206 025. E-mail: 46023894@edu.gva.es
DeINF[ DEPARTAMENT DINFORMTICA ]
IES El Puig de Santa Maria
Material necesario:
Motor de cc
Integrado L293D
Placa board
Pila y portapilas 9v (para alimentar los motores)
Placa arduino y cable.
33/35
C/ Avinguda de lInstitut, s/n. El Puig-46540. Tel: 961 206 025. E-mail: 46023894@edu.gva.es
DeINF[ DEPARTAMENT DINFORMTICA ]
IES El Puig de Santa Maria
34/35
C/ Avinguda de lInstitut, s/n. El Puig-46540. Tel: 961 206 025. E-mail: 46023894@edu.gva.es
DeINF[ DEPARTAMENT DINFORMTICA ]
IES El Puig de Santa Maria
Autores.
Este trabajo lo han realizado Maria (IES Puol) y yo (IES El Puig).
35/35
C/ Avinguda de lInstitut, s/n. El Puig-46540. Tel: 961 206 025. E-mail: 46023894@edu.gva.es