int x=0; int y=0; void setup(){ //size(300,400); size(screenWidth,400); //size(screenWidth,screenHeight); /* screenWidth y screenHeight ya no están soportados en Processing 3.x pero los sketches siguen funcionando incrustados en el canvas de html5 */ background(255,200,0); } void draw(){ //background(255,200,0); if(mousePressed == true){ if(mouseX>=(width/2)){ x=x+1; }else{ x=x-1; } if(mouseY>=(height/2)){ y=y+1; }else{ y=y-1; } } noStroke(); fill(0,0,0); rect(x,y,5,5); }
2016/10/23
Ejemplo de código en Processing
Ejemplo de código en Processing
2016/06/10
Ejercicio PAU: Equivalencia
Ejercicio resuelto de la PAU de Madrid.
2016 JUN A1
2016 JUN A1
Labels:
Cuadrado,
Cuadrilátero,
Dibujo Técnico,
Equivalencia,
Geometría Plana,
Rectángulo
2016/05/08
Arduino Robot v09 Tupperbot (I)
Nueva versión del robot Arduino, esta vez con cuatro ruedas tractoras y con la torreta estrenada en la versión nueve.
2016/05/02
Arduino Robot v08 Tupperbot (III)
Continuamos con el tutorial de construcción y programación de nuestro robot. En esta ocasión vamos a implementar la función de control de los dos servomotores con un mando a distancia de infrarrojos. El mando en cuestión es el que aparece en el listado de materiales pero podemos usar cualquier mando que tengamos por casa. Solo tenemos que sustituir el código que aparece en las estructuras switch-case con el código de los botones de nuestro mando.
//Arduino Robot v09_02 2016/05/02 //Diseño y programación: Antonio Vallecillos, @fotovallegrafia //Movimiento con IR #include <IRremote.h> // incluimos la librería para IRremote int RECV_PIN = 12; // definimos una variable de tipo entero llamada RECV_PIN // con un valor 12 por defecto IRrecv irrecv(RECV_PIN); // el TSOP 2238 está conectado al pin 12 decode_results results; // el código de cada tecla se almacenará en la variable results #include <Servo.h> // incluimos la librería para controlar los servomotores Servo servoDER; // creamos un objeto servo llamado servoDER Servo servoIZQ; // creamos un objeto servo llamado servoIZQ void setup() { Serial.begin(9600); // iniciamos el Monitor Serial a 9600 baudios irrecv.enableIRIn(); // iniciamos el receptor de infrarrojos servoDER.attach(7); // el servomotor de la derecha está conectado al pin 7 servoIZQ.attach(8); // el servomotor de la izquierda está conectado al pin 8 funcionStop(); // ejecutamos el código detro de funcionStop() } void loop() { if (irrecv.decode(&results)) { Serial.println(results.value); // imprime el código de la tecla pulsada en el // Monitor Serial switch (results.value) { // control de flujo mediante switch case 16615543: // botón Flecha Arriba funcionAv(); // ejecutamos el código detro de funcionAv() break; case 16619623: // botón Flecha Abajo funcionRe(); // ejecutamos el código detro de funcionRe() break; case 16607383: // botón Flecha Derecha funcionGd(); // ejecutamos el código detro de funcionGd() break; case 16591063: // botón Flecha Izquierda funcionGi(); // ejecutamos el código detro de funcionGi() break; } irrecv.resume(); // recibe el siguiente valor } else { funcionStop(); // ejecutamos el código detro de funcionStop() } delay(250); } // funciones de movimiento void funcionAv() { Serial.println("ADELANTE"); // imprime ADELANTE en el Monitor Serial servoDER.write(0); // el servomotor de la derecha gira en sentido horario // (hacia adelante) a máxima velocidad (90 es parado) servoIZQ.write(180); // el servomotor de la izquierda gira en sentido antihorario // (hacia adelante) a máxima velocidad (90 es parado) } void funcionRe() { Serial.println("ATRÁS"); servoDER.write(180); servoIZQ.write(0); } void funcionGd() { Serial.println("DERECHA"); servoDER.write(180); servoIZQ.write(180); } void funcionGi() { Serial.println("IZQUIERDA"); servoDER.write(0); servoIZQ.write(0); } void funcionStop() { Serial.println("STOP"); servoDER.write(90); // el servomotor de la derecha permanece parado // (0 es la máxima velocidad en sentido horario) // (180 es la máxima velocidad en sentido antihorario) servoIZQ.write(90); // el servomotor de la izquierda permanece parado // (0 es la máxima velocidad en sentido horario) // (180 es la máxima velocidad en sentido antihorario) }
Arduino Robot v08 Tupperbot (II)
Seguimos con la serie de tutoriales dedicados a la versión ocho del robot Arduino. Esta entrada la vamos a dedicar a la lista de materiales y herramientas que necesitaremos para construir el robot.
LISTA DE MATERIALES:
- CONTENEDOR BIOKIPS 700ML: 3,95€ x 1 = 3,95€
- ARDUINO UNO COMPATIBLE: 6,03€ x 1 = 6,03€
- PLACA BREADBOARD DE 400 PUNTOS: 1,91€ x 1 = 1,91€
- SERVOMOTOR 360º SM-S4306R: 8,27€ x 2 = 16,54€
- PORTABATERÍAS 6XAA: 1,60€ x 1 = 1,60€
- SENSOR ULTRASONIDOS HC-SR04: 1,71€ x 1 = 1,71€
- SERVOMOTOR 180º MICRO: 5,02€ x 1 = 5,02€
- RUEDA LOCA METÁLICA 3/8: 2,40€ x 1 = 2,40€
- INTERRUPTOR PALANCA: 1,04€ x 1 = 1,04€
- RECEPTOR IR 38KHZ TSOP 2238: 1,49€ x 1 = 1,49€
- MANDO A DISTANCIA IR + TSOP XX38: 2,78€ x 1 = 2,78€
- PLACA PRESOLDADA: 1,90€ x 1 = 1,90€
- CONDENSADOR 100UF 25V: 0,11€ x 2 = 0,22€
- CABLE UNIFILAR ROJO: 0,21€ x 1 = 0,21€
- CABLE UNIFILAR NEGRO; 0,21€ x 1 = 0,21€
- REGLETA DE PINES MACHO: 0,45€ x 1 = 0,45€
- REGLETA DE PINES HEMBRA: 0,97€ x 1 = 0,79€
- TORNILLO 2,5 X 8MM: 0,05€ x 12 = 0,64€
- TORNILLO 2,5 X 20MM: 0,05€ x 2 = 0,11€
- TORNILLO 3 X 10MM: 0,05€ x 14 = 0,77€
- TORNILLO 5 X 50MM: 0,32€ x 1 = 0,32€
- ARANDELA 3MM: 0,01€ x 24 = 0,22€
- ARANDELA 5MM: 0,06€ x 1 = 0,06€
- TOTAL: 50,36€
HERRAMIENTAS:
- TALADRO + BROCA DE 3MM
- CUTTER
- ALICATES DE PUNTA FINA
- CORTACABLES
- SOLDADOR + ESTAÑO
- DESTORNILLADOR PLANO
- DESTORNILLADOR DE CRUZ
- LIMAS
- CINTA AISLATE
2016/04/23
Arduino Robot v08 Tupperbot (I)
La versión más sencilla del robot arduino, con la estructura de un contenedor hermético de alimentos. Si no dispones de una impresora 3D o de un taller con herramientas para trabajar con madera, considera seriamente esta opción para iniciarte en la robótica con placas Arduino. Solo necesitas un taladro y un cutter para instalar todos los componentes sobre el cuerpo del robot.
En la parte superior colocamos la placa Arduino UNO y la protoboard para realizar conexiones rápidas sin necesidad de soldaduras.
El robot también dispone de una torreta con un sensor de ultrasonidos HC- SR04 montado sobre un servomotor de 180º que le permitirá "mirar" a izquierda y derecha para detectar obstáculos.
En la parte interior instalamos los dos servomotores de rotación continua y el portapilas. Los cables de los servomotores atraviesan la tapa y se conectan a la protoboard. Los cables del portapilas se conectan a un interruptor que alimenta a la placa Arduino UNO con 9 voltios.
El siguiente vídeo muestra al robot ejecutando un sencillo programa que le permite moverse en una trayectoria circular.
Este es el código Arduino que ejecuta el movimiento del vídeo anterior.
//Arduino Robot v09_01 2016/04/23 //Diseño y programación: Antonio Vallecillos, @fotovallegrafia //Movimiento circular #include <Servo.h> // incluimos la librería para controlar los servomotores Servo servoDER; // creamos un objeto servo llamado servoDER Servo servoIZQ; // creamos un objeto servo llamado servoIZQ void setup() { servoDER.attach(7); // el servomotor de la derecha está conectado al pin 7 servoIZQ.attach(8); // el servomotor de la izquierda está conectado al pin 8 } void loop() { servoDER.write(82); /* el servomotor de la derecha gira muy despacio en sentido horario (hacia adelante). 0 es la máxima velocidad y 90 es parado. */ servoIZQ.write(180); /* el servomotor de la izquierda gira muy despacio en sentido antihorario (hacia adelante). 180 es la máxima velocidad y 90 es parado. */ delay(100); // pausa de 100 milisegundos }
Labels:
Arduino,
Electrónica,
Programación,
Robótica,
Tecnología,
Vídeo
Suscribirse a:
Entradas (Atom)