04 Processing Galileo

download 04 Processing Galileo

of 51

Transcript of 04 Processing Galileo

  • 7/25/2019 04 Processing Galileo

    1/51

    Processing: Diseo de Interfaces

  • 7/25/2019 04 Processing Galileo

    2/51

    Processing: Diseo de Interfaces

    Qu es Process

    Comenzando co

    Mostrando Text

    Eventos del Mou

    Comunicando G

    Comunicando P

  • 7/25/2019 04 Processing Galileo

    3/51

    Qu esProcessin

    Processing:

    Es un lenguaje de programacin y un entorno

    de desarrollo de software con una curva de

    aprendizaje rpida, con el que se pueden

    disear interfaces grficas para monitorear y

    controlar distintas tareas. Es un buen

    complemento para la tarjeta de desarrollo

    Galileo.

    Descarga gratuita ya que

    Programa de Cdigo Abi1

    Se puede ejecutar en Li

    X y Windows.2

    Mas de 100 bibliotecas q

    las capacidades del softw3

    Se puede combinar prog

    Processing con Java pu4

  • 7/25/2019 04 Processing Galileo

    4/51

    Ejecutar Parar Nuevo Abrir Guardar Exportar

    Cdigo

    Nombre del proyecto (sketch)

    Seleccin de otros Lenguajesde programacin

    Nmerode Lnea

    rea demensajes rea de texto

    y depuracin

    IDE

    Pro

    cessing

  • 7/25/2019 04 Processing Galileo

    5/51

    Comenzandocon Processin

    El entorno de programacin de

    Processing permite la creacin de

    imgenes, animaciones y medios de

    interaccin.

    Comenzaremos con algunos conceptos

    bsicos y figuras simples que mas

    adelante nos permitirn disear

    interfaces mas complejas.Descarg

    Funciones Bsicas

    Figuras Bsicas

    Agregando color

  • 7/25/2019 04 Processing Galileo

    6/51

  • 7/25/2019 04 Processing Galileo

    7/51

    FuncionBsicas

    Processing, al igual que Arduino tiene dos funciones bsicas:

    setup( )

    draw( )

    La funcin setup( ) se ejecuta una sola vez al inicio del programa.

    La funcin draw( ) hace las veces de la funcin loop( ) de Arduino,

    la cual se ejecuta repetitivamente mientras el programa se encuentre

    ejecutndose.

    Otras dos funciones bsicas que necesitaremos son:

    size( )

    background( )

  • 7/25/2019 04 Processing Galileo

    8/51

    backgrbackground( )

    Establece el color usado para el fondo

    de la ventana de la interfaz. El fondo

    predeterminado es de color gris claro.

    Sintaxis:

    background(grayscale)

    background(R,G,B)

    background(rgb)

    size( )

    Define la dimensin de la ventana

    de la interfaz en pixeles. Esta

    funcin debe ser la primer lnea de

    cdigo dentro de la funcinsetup( )

    Sintaxis:

    size(w, h)

    w -> ancho de la ventana (int)

    h -> alto de la ventana (int)

    rgb -> Codificaci

    #FF

  • 7/25/2019 04 Processing Galileo

    9/51

    Cdibase.

    void set

    size(5

    }

    void draw

    }

    Crea una ventana de

    500x500 pixeles

    Origen

    (0,0)

    !

  • 7/25/2019 04 Processing Galileo

    10/51

    Cdibase2

    void set

    size(5

    backgro

    }

    void draw}

    Crea una ventana de

    500x500 pixeles

    Fondo de la ventana

    Color: Azul Intel

    RGB: 0, 113, 197

  • 7/25/2019 04 Processing Galileo

    11/51

  • 7/25/2019 04 Processing Galileo

    12/51

    FigurasBsicas

    En Processing podemos comenzar nuestros dibujos con formas muybsicas como lneas, elipses y cuadrilteros con las siguientes funciones::

    rect( )

    Dibuja un rectngulo en la pantalla.

    Las primeras dos coordenadas

    corresponden a la esquina superiorizquierda, la tercera es el ancho y la

    cuarta la altura.

    Sintaxis:

    rect(x1,y1,w,h)

    line( )

    Dibuja una lnea en la pantalla

    entre dos puntos indicados. La

    lnea dibujada tiene un grosor de1 pixel y color negro por defecto

    Sintaxis:

    line(x1,y1,x2,y2)

    ellipse( )

    Dibuja una elips

    Las primeras do

    corresponden aelipse, la tercer

    ancho y la altur

    Sintaxis:

    ellipse(x,y

  • 7/25/2019 04 Processing Galileo

    13/51

    Cdishape

    void setup(){

    size(500,500);

    background(#0071c5);

    }

    void draw(){

    line(50,50,200,200);rect(300,200,100,100)

    ellipse(100,400,100,1

    }

  • 7/25/2019 04 Processing Galileo

    14/51

    ProcessLanguag

    ReferenEl lenguaje Processing es diseado con la finalidad d

    una forma rpida para el diseo de prototipos de s

    cual podemos crear desde formas muy bsicas, ha

    visuales muy sofisticadas.

    Al igual que Arduino, Processing nos proporcio

    compendio de Referencia de su lenguaje, donde podla explicacin, sintaxis y ejemplos de todas

    implementadas nativamente en su IDE y de algunas

    tambin vienen incorporadas en l.

    https://www.processing.org/refer

  • 7/25/2019 04 Processing Galileo

    15/51

    AgreganColor

    Podemos especificar el color del relleno de las figuras y de su contorno, ascomo el grosor de ste:

    stroke( )

    Configura el color de las lneas y de

    los contornos de las figuras.

    Sintaxis:

    stroke(grayscale)

    stroke(R,G,B)

    stroke(rgb)

    fill( )

    Configura el color del relleno de

    las figuras. El color por default de

    las figuras es el blanco.

    Sintaxis:

    fill(grayscale)

    fill(R,G,B)

    fill(rgb)

    strokeWeight(

    Configura el gro

    de los contorno

    valor es expres

    Sintaxis:

    strokeWe

    Codificacin hexadecimal

    noFill()

    noStroke()

  • 7/25/2019 04 Processing Galileo

    16/51

    Cdicolor.p

    void setup(){

    size(500,500);

    background(#0071c5);

    }

    void draw(){

    fill(255,0,0);

    stroke(0,255,0);

    strokeWeight(3);line(50,50,200,200);

    stroke(255,255,255);

    rect(300,200,100,100);

    fill(#009383);

    ellipse(100,400,100,100)

    }

  • 7/25/2019 04 Processing Galileo

    17/51

    Reto:

  • 7/25/2019 04 Processing Galileo

    18/51

  • 7/25/2019 04 Processing Galileo

    19/51

    MostrandoTexto

    Adems de crear figuras, tambin podemos agregar texto a nuestras interfaces, lo cual nos

    permitir agregar leyendas, instrucciones, sugerencias, comentarios, etc.

    Igualmente podemos darle formato a este texto, como por ejemplo, modificar el tamao, el

    color, su posicin, la fuente tipogrfica, entre otros atributos.

  • 7/25/2019 04 Processing Galileo

    20/51

    textex

    textSize()

    Configura el tamao de la fuente.

    Se expresa en pixeles.

    Sintaxis:

    textSize(tamao)

    text()

    Despliega texto en la pantalla.

    Sintaxis:

    text(texto,x,y)

    text(num,x,y)

    x,y -> coordenadas de la esquina

    inferior izquierda del texto.

    num -> int o float: nmero a mostrar

    textAlign()

    Configura la ali

    mostrado en re

    valores de las cindicadas en la

    Sintaxis:

    textAlign(

    alignX -> LEFT

    fill()

  • 7/25/2019 04 Processing Galileo

    21/51

  • 7/25/2019 04 Processing Galileo

    22/51

    Cditexto2

    void setup(){

    size(500,500);

    background(0,113,197);

    text("Este es mi primer texto",1

    textSize(30);

    text("Ahora el tamao es de 30",

    fill(255,255,0);

    text("Y ahora con color",50,200)

    textAlign(CENTER);text("Este texto esta centrado",

    }

    void draw(){

    }

  • 7/25/2019 04 Processing Galileo

    23/51

  • 7/25/2019 04 Processing Galileo

    24/51

    Eventosdel Mouse

    Processing nos proporciona algunas funciones para poder acceder a distintos eventos d

    mouse, adems de proporcionarnos informacin sobre la posicin del puntero como

    posicin en X y Y en ciertas variables predefinidas. Con estas funciones y variabl

    podemos controlar un sinfn de aplicaciones, como por ejemplo, dibujar algo cuando dem

    un click en cierto lugar de la ventana.

  • 7/25/2019 04 Processing Galileo

    25/51

    Accionedel Mou

    Es importante definir que acciones del mouse puede detectar Processing:

    Clicked Un botn del mouse es presionado y luego soltado

    Accin Descripcin

    Pressed Un botn del mouse es presionado y se mantiene as

    Released Un botn del mouse fue presionado, pero ahora se suelta

    Moved El mouse es movido sin que ningn botn sea presionado

    Dragged El mouse es movido con un botn presionado

  • 7/25/2019 04 Processing Galileo

    26/51

    Funciondel Mou

    Las acciones del mouse puede llamar las siguientes funciones y ejecutar el cdigo que nosotros definam

    void mouseClicked() {

    }

    void mousePressed() {

    }

    void mouseReleased() {

    }

    void mouseMoved() {

    }

    void mouseDragged(){

    }

  • 7/25/2019 04 Processing Galileo

    27/51

    VariableRelacion

    Tenemos a nuestra disposicin dos variables que Processing nos proporciona en cualq

    que las necesitemos a lo largo de nuestro programa y dentro de cualquier funcin, la

    proporcionan mas informacin acerca de que es lo que el mouse est haciendo dent

    programa.

    mouseX Nos proporciona la posicin X del mouse en la

    mouseY Nos proporciona la posicin Y del mouse en la

    mousePressed Variable booleana, TRUE / FALSE

    mouseButton Botn presionado, LEFT, RIGHT, CENTER

  • 7/25/2019 04 Processing Galileo

    28/51

    Cdimouse

    void setup() {

    size(500, 500);

    background(0);

    textAlign(CENTER);

    textSize(24);

    fill(255);

    text("El mouse no est haciendo nada",

    width/2, height/2);}

    void draw() {

    }

    void mousePressed() {

    background(100, 100, 0);

    text("El mouse fue presionado",

    width/2, height/2);

    if( mouseButton== LEFT) {

    text("y fue el botn izquierdo",

    width/2, height/2+ 40);

    }

    if(mouseButton== RIGHT) {

    text("y fue el boton derecho",

    width/2, height/2+ 40);

    }

    }

    void mouseReleased() {

    background(100, 0, 100);

    text("el botn fue soltado"

    width/2, height/2);

    }

    void mouseMoved() {

    background(150, 10, 70);

    text("El mouse fue movido"width/2, height/2);

    }

    void mouseDragged() {

    background(10, 70, 100);

    text("Se est arrastrando e

    width/2, height/2);

    }

  • 7/25/2019 04 Processing Galileo

    29/51

    Reto:Al dar click derecho

    Al dar click izquierdo

    Al soltar

    el botn

  • 7/25/2019 04 Processing Galileo

    30/51

  • 7/25/2019 04 Processing Galileo

    31/51

    Eventosdel Teclado

    Al igual que los eventos de mouse, es posible tambin detectar distintos eventos del teclad

    lo que nos puede permitir tener mayor interaccin con la tarjeta Galileo. Algunos de l

    acciones o eventos que podemos detectar es la presin de alguna tecla, determinar la tec

    presionada, discriminar entre letras maysculas o minsculas, entre otras cosas.

  • 7/25/2019 04 Processing Galileo

    32/51

    TeclaPresiona

    Processing nos proporciona una funcin que es llamada cada vez que una

    tecla es presionada:

    Dentro de esta funcin podemos colocar todo el cdigo que queremos quese ejecute cada vez cualquier tecla sea presionada, sin embargo an no

    distinguimos especficamente cul tecla se presion.

    void keyPressed(){

    }

  • 7/25/2019 04 Processing Galileo

    33/51

    Cdianyke

    int r,g,b;

    void setup(){

    size(600,600);

    r = 0;

    g = 0;

    b = 0;

    }

    void draw(){

    background(r,g,b);}

    void keyPressed(){

    r = int(random(256));

    g = int(random(256));

    b = int(random(256));

    }

    Detecta

  • 7/25/2019 04 Processing Galileo

    34/51

    Detectala TeclaPresiona

    Como ya vimos, cada que presionamos una tecla, la funcin keyPressed() es llamada

    informacin acerca de cul es la tecla presionada es almacenada en una variable llamada

    void setup(){

    }

    void draw(){

    }

    void keyPressed(){

    println(key);

    }

  • 7/25/2019 04 Processing Galileo

    35/51

    Cdirgbkey

    int r,g,b;

    void setup(){

    size(600,600);

    r = 0;

    g = 0;b = 0;

    }

    void draw(){

    background(r,g,b);

    }

    void keyPressed(){

    switch(key){

    case 'r':r=255;

    g=0;

    b=0;

    break;

    case 'g':

    r=0;

    g=255;

    b=0;

    break;

    case 'b':r=0;

    g=0;

    b=255;

    break;

    default:

    break;

    }

    }

  • 7/25/2019 04 Processing Galileo

    36/51

    Detectaotras Te

    En el primer ejemplo de esta seccin, pudimos darnos cuenta que hay algunas teclas qu

    identificar, y simplemente se imprime un signo ?. Ahora, en el segundo ejemplo ima

    queremos detectar cuando las flechas sean presionadas, cmo podemos escribir una t

    dentro de las comillas?

    Para esto, Processing tambin tiene a nuestra disposicin la variable keyCode la cua

    nmero ASCII asociado a cada una de estas teclas:

    void keyPressed(){

    println(keyCode);

    }

    37

    40

  • 7/25/2019 04 Processing Galileo

    37/51

    Cdiarrows

    int r,g,b;

    void setup(){

    size(600,600);

    r = 0;

    g = 0;b = 0;

    }

    void draw(){

    background(r,g,b);

    }

    void keyPressed(){

    switch(keyCode){

    case 37:r=255;

    g=0;

    b=255;

    break;

    case 38:

    r=255;

    g=255;

    b=0;

    break;

    case 39:r=0;

    g=255;

    b=255;

    break;

    default:

    break;

    }

    }

    Reemplaza con: LEFT

    Reemplaza con UP

    Reemplaza con RIGHT

  • 7/25/2019 04 Processing Galileo

    38/51

  • 7/25/2019 04 Processing Galileo

    39/51

    ComunicandoGalileo conProcessing

    Para esta primer interaccin entre ambas plataformas Hardware/Software, enviaremos dat

    utilizando comunicacin serial, desde la tarjeta Galileo hasta la interfaz de Processing, es de

    realizaremos en tipo de hola mundo.

    Lo primero que necesitamos sabes es cmo leer informacin del puerto serial.

  • 7/25/2019 04 Processing Galileo

    40/51

    Cmo leDatos Se

    Lo primero es importar la biblioteca serial para tener a

    puerto serial de la computadora para enviar y transmitir

    Processing y hardware externo:

  • 7/25/2019 04 Processing Galileo

    41/51

    CdigoSerialRe

    import processing.serial.*;

    Serial miPuerto;

    void setup(){

    miPuerto=new Serial(this,"COM5",9600);

    }

    void draw(){

    if(miPuerto.available() >0){

    int dato = miPuerto.read();

    println(dato);}

    }

    !

    void draw(){

    }

    void serialEvent(S

    int dato= miPue

    println(dato);

    }

    Comuni

  • 7/25/2019 04 Processing Galileo

    42/51

    ComuniGalileo cProcess

    Para este primer ejemplo lo que haremos ser enviar la informacin del estado de un pu

    button conectado a la tarjeta Galileo, a una interfaz diseada en Processing:

    E i

  • 7/25/2019 04 Processing Galileo

    43/51

    Esquemtico

    NOTA: Aunque este es el diagrama de

    conexin para este ejercicio, usaremos

    el botn A del Joystick:

    G lil

  • 7/25/2019 04 Processing Galileo

    44/51

    CdiOneLe

    void setup() {

    pinMode(2, INPUT); // Configuracin del pin 2 como entrada

    Serial.begin(9600); //Inicializacin de comunicacin serial a 9600 ba

    }

    void loop() {

    // Transfiere a travs del puerto serial el estado digital del pin 2

    Serial.print(digitalRead(2));

    delay(100); //retardo de 100 milisegundos

    }

    Galileo

    Reto:

  • 7/25/2019 04 Processing Galileo

    45/51

    Reto:

    Para visitar un tutorial completo sobre eTutorial: Comunicando Galileo con

    https://engage.intel.com/community/es/galileo/centro-de-aprendizaje/video-tutoriales/blog/2014/10/20/tutorial-comunicando-galileo-con-processing-parte-1https://engage.intel.com/community/es/galileo/centro-de-aprendizaje/video-tutoriales/blog/2014/10/20/tutorial-comunicando-galileo-con-processing-parte-1
  • 7/25/2019 04 Processing Galileo

    46/51

  • 7/25/2019 04 Processing Galileo

    47/51

    ComunicandoProcessingcon Galileo

    Ahora enviaremos datos a la tarjeta Galileo desde una interfaz diseada en Processing para co

    una tarea, que para este caso se controlar el encendido y apagado de un LED.

    Para este ejercicio necesitamos saber cmo escribir al puerto serial, para que los datos sea

    transmitidos haca la Galileo.

    Comuni

  • 7/25/2019 04 Processing Galileo

    48/51

    ComuniProcesscon Gal

    La interfaz de Processing contar con un botn virtual, el cual al dar click derecho sobreste, transmitir serialmente un dato que le informar a la tarjeta Galileo que deber de

    encender un LED y si se da click izquierdo, deber apagarlo:

    CdiG lil

  • 7/25/2019 04 Processing Galileo

    49/51

    CdiLED_o

    int byteRecibido=0; //Variable que almacenar el byte recibido

    const int led = 13; //Pin al que se conectar el LED

    void setup(){

    Serial.begin(9600); //Inicializacin del puerto serial a 9600 baud

    pinMode(led, OUTPUT); //Se declara el pin 13 como salida

    digitalWrite(led, LOW);//Apagar el LED inicialmente

    }

    void loop(){

    //Se comprueba si hay algn dato por leer en el buffer del puerto ser

    if(Serial.available() >0){byteRecibido=Serial.read(); //Lectura del dato recibido

    if(byteRecibido==A) //Comprobar que el dato recibido sea un

    digitalWrite(led, HIGH); //Encender el LED

    else if (byteRecibido==B)

    digitalWrite(led, LOW); //Apagar el LED

    }

    }

    Galileo

    Reto:

  • 7/25/2019 04 Processing Galileo

    50/51

    Reto:Al dar click derecho

    Al soltar

    el botn

    Al dar click izquierdo

    Al soltar

    el botn

    Para

    sobreTutor

    https://engage.intel.com/community/es/galileo/centro-de-aprendizaje/video-tutoriales/blog/2014/12/01/tutorial-comunicando-galileo-con-processing-parte-2https://engage.intel.com/community/es/galileo/centro-de-aprendizaje/video-tutoriales/blog/2014/12/01/tutorial-comunicando-galileo-con-processing-parte-2
  • 7/25/2019 04 Processing Galileo

    51/51

    Este tutorial es liberado bajo la licencia:

    Parte de su contenido fue obtenido de sparkfun.com

    !