Transcript TallerProcessingArduinoII
CRFP – EDUCACIÓN CASTILLA – LA MANCA Manuel Hidalgo Díaz Noviembre 2013
Contenido 1ª Sesión: 14-11-13
Processing como lenguaje de programación.
Entorno de programación.
Elementos, modos y recurso de programación.
2ª Sesión: 21-11-13
Dibujar en Processing 2D Interactuar con el mundo físico.
Arduino y sensores.
3ª Sesión: 28-11-13
Comunicación entre Arduino y Processing.
Aplicaciones.
26/04/2020 TALLER PROCESSING-ARDUINO. II 2
ENTORNO DE PROGRAMACIÓN (IDE)
26/04/2020 TALLER PROCESSING-ARDUINO. II 3
ENTORNO DE PROGRAMACIÓN (IDE)
•
Ejemplo: prog01_prueba.pde
Vamos a escribir un programa y lo vamos a guardar con el nombre prog01_prueba.
ellipse(50, 50, 80, 80); //ellipse(x,y,a,h); http://processing.org/reference/ellipse_.html
Es un programa con una sola instrucción.
Otras primitivas básicas de dibujo - Punto Línea
26/04/2020 TALLER PROCESSING-ARDUINO. II 4
ENTORNO DE PROGRAMACIÓN (IDE)
•
Ejemplo: prog02_prueba.pde
Vamos a escribir un programa y lo vamos a guardar con el nombre prog02_prueba.
} void setup() { size(480, 120); } void draw() { if (mousePressed) { fill(0); } } else { fill(255); ellipse(mouseX, mouseY, 80, 80);
26/04/2020 TALLER PROCESSING-ARDUINO. II 5
ELEMENTOS DE PROGRAMACIÓN.
SETUP()
•
Partes fundamentales de la estructura del programa, son dos funciones:
setup() y draw() .
1ª.- La función
setup()
. Esta función sólo se ejecuta una vez
void setup() { size(480, 120); }
Esta función sirve para inicializar la aplicación:
•
Definir el tamaño del marco.
•
El color de fondo.
•
El color de relleno.
•
…
26/04/2020 TALLER PROCESSING-ARDUINO. II 6
ELEMENTOS DE PROGRAMACIÓN.
DRAW()
•
2ª.- La función
draw() .
Esta función se ejecuta continuamente hasta que se
produzca una parada. La habitual es pulsar el icono de stop.
} void draw() { if (mousePressed) { fill(0); } else { fill(255); } ellipse(mouseX, mouseY, 80, 80);
TALLER PROCESSING-ARDUINO. II 7
ELEMENTOS DE UN PROGRAMA. Resumen
- TIPOS DE DATOS (variables): - int, long, float, char, boolean,… - array - OPERADORES. - Aritméticos, relacionales, lógicos,… TALLER PROCESSING-ARDUINO. II 8
ELEMENTOS DE UN PROGRAMA. Resumen
- ESTRUCTURAS DE CONTROL. • Delimitadores de bloque: { instrucciones; }
• while:
while ( expr ) { instrucciones } do { instrucciones } while ( expr ) Ejemplo
• for
for ( begin; end; inc ) {instrucciones } Ejemplo
• if/else
if ( expr ) {instrucciones } if ( expr ) {instrucciones } else { instrucciones } Ejemplo • switch switch ( var ) { case val: instrucciones default: } • Saltos: break, continue, return Ejemplo 26/04/2020 TALLER PROCESSING-ARDUINO. II 9
ELEMENTOS DE UN PROGRAMA. Resumen
- ESTRUCTURAS DE CONTROL. • Delimitadores de bloque: { instrucciones; }
• while:
while ( test ) { instrucciones } do { instrucciones } while ( test ) Ejemplo
• for
for ( begin; test; inc ) {instrucciones } Ejemplo
• if/else
if ( test ) {instrucciones } if ( test ) {instrucciones } else { instrucciones } Ejemplo • switch switch ( val ) { case val_1: instrucciones default: } • Saltos: break, continue, return 26/04/2020 TALLER PROCESSING-ARDUINO. II Ejemplo 10
PROCESSING 2D.
- SISTEMA DE COORDENADAS 2D. • • El tamaño de la ventana se establece con la función size() , instrucción que se escribe en la función setup().
El (0,0), origen, se encuentra situado en la esquina superior izquierda, donde las x son positivas hacia a la izquierda y las y son positivas hacia abajo.
26/04/2020 TALLER PROCESSING-ARDUINO. II 11
PROCESSING 2D.
- COLOR Y RELLENO. • El color de los trazos se determinan con la función stroke() stroke(255) => RGB(255, 255, 255) especifica un valor entre 0-256 niveles de gris.
stroke(128, 0, 128) => Cualquier valor RGB • El grosor de los trazos se puede caracterizar con strokeWeight() strokeWeight(5) => Grosor 5 • El color de relleno de figuras 2D se especifica mediante la función fill() fill(128) => RGB(128, 128, 128) fill(200, 120, 90) => RGB(200, 120, 90) 26/04/2020 TALLER PROCESSING-ARDUINO. II 12
PROCESSING 2D.
• background() Borra la ventana con el color especificado Ejemplos: background(0) background(128, 100, 128) • noFill() Las figuras 2D se dibujaran sin relleno • noStroke() Las figuras 2D se dibujaran sin trazo (especialmente útil en figuras cerradas, pero afecta a todas, incluso a líneas) 26/04/2020 TALLER PROCESSING-ARDUINO. II 13
PROCESSING 2D.
•
EJEMPLO SOBRE UNA LÍNEA
Escribimos un programa “prog03_linea” y vamos añadiendo el siguiente código.
size(100, 100); background(0); stroke(255); strokeWeight(5); line(0, 0, 99, 99); //tamaño de la ventana //color de fondo //color del trazo //grosor del trazo 26/04/2020 TALLER PROCESSING-ARDUINO. II 14
PROCESSING 2D.
•
EJEMPLO SOBRE UNA LÍNEA
Escribimos un programa “prog04_linea” y vamos añadiendo el siguiente código.
size(200, 200); background(0); //utilizamos una estructura de control repetitiva for (int i=0; i<100; i++) { stroke(random(255), random(255), random(255)); strokeWeight(random(10)); line(0, 0, random(200), random(200)); } 26/04/2020 TALLER PROCESSING-ARDUINO. II 15
PROCESSING 2D.
•
ELIPSE Y CÍRCULOS
•
ellipse(x, y, ancho, alto)
Dibuja una elipse en las coordenadas (x, y) y el ancho y alto suministrados •
ellipseMode()
Cambia el modo en el que los parámetros de la elipse son interpretados ellipseMode(CENTER) => (x, y) es el centro de la elipse (es elmodo por defecto).
ellipseMode(RADIUS) => igual que el anterior, pero ancho y alto son radios y no diámetros ellipseMode(CORNER) => (x, y) hace referencia a la esquina superior izquierda del rectángulo envolvente de la elipse ellipseMode(CORNERS) => los cuatro parámetros de la elipse hacen referencia a dos puntos opuestos del rectángulo envolvente de la elipse 26/04/2020 TALLER PROCESSING-ARDUINO. II 16
PROCESSING 2D.
•
EJEMPLO DE ELIPSE Y CÍRCULOS
Escribimos un programa “prog05_elipse” y vamos añadiendo el siguiente código.
size(200, 200); background(0); stroke(255, 0, 0); strokeWeight(5); fill(0, 255, 0);
// (x, y) y diámetros
ellipse(100, 100, 100, 50);
// 2 esquinas opuestas
ellipseMode(CORNERS); ellipse(0, 0, 50, 50); //color del trazo //grosor 26/04/2020 TALLER PROCESSING-ARDUINO. II 17
PROCESSING 2D.
•
PRIMITIVAS DE 2D
Además de las primitivas que hemos visto están también las siguientes: • Arcos • Rectángulos • Triángulos • Cuadriláteros • Curvas ( Bézier y Catmull-Rom ) • Shapes (formas libres) 26/04/2020 TALLER PROCESSING-ARDUINO. II 18
MOVIMIENTO 2D.
A continuación vamos a realizar un programa “prog06_pelotaSinRebote” que realiza movimientos.
26/04/2020
float x=0; // coordenadas float y=0; float vy = 1; // velocidad eje X float vx = 2; // velocidad eje y } void setup(){ size(300,300); fill(255); void draw(){ background(0); x = x + vx; y = y + vy; ellipse(x,y,10,10); }
TALLER PROCESSING-ARDUINO. II 19
MOVIMIENTO 2D.
A continuación vamos a realizar un programa “prog07_pelotaRebote” mejorando el anterior.
} // Movimiento de pelota con rebote { void setup() } { void draw()
26/04/2020 TALLER PROCESSING-ARDUINO. II 20
INTERACTUAR CON EL MUNDO FÍSICO.
www.arduino.cc
https://www.dropbox.com/s/7ymvgdy24r8z0aw/Practicas%20Arduino%2BProcessing.pdf
26/04/2020 TALLER PROCESSING-ARDUINO. II 21