Traductor. Translator.

sábado, 13 de junio de 2015

App inventor

¿Qué es App Inventor 2?
 App Inventor 2 (AI2) es la versión mejorada de una herramienta de programación creada por el MIT (Instituto Tecnológico de Massachusetts) y que fue adoptada por Google para sus usuarios como solución para crear de una forma sencilla aplicaciones para dispositivos Android. El proceso de creación consta de 3 pasos:
1. Diseñador. Muestra el display de un móvil y se utiliza para el diseño de las pantallas de la aplicación donde se situarán los distintos componentes: imágenes, botones audios, textos, etc configurando sus propiedades (aspecto gráfico, comportamiento, etc).
2. Editor de bloques. Permite programar de una forma visual e intuitiva el flujo de funcionamiento del programa utilizando bloques.
3. Generador de la aplicación. Una vez terminada la aplicación se puede generar el instalador APK obteniéndose un código QR para su descarga desde el móvil o bien el propio archivo APK para descargar y enviar.
Requisitos para utilizar AI2
 AI2 proporciona una herramienta en línea accesible a través de un navegador web si se dispone de una cuenta de usuario en Google.

App para pintar en fotos


App para resolver un cuestionario



sábado, 30 de mayo de 2015

Base de datos en Access 2007

He creado una base de datos que consta de un menú principal que nos servirá para navegar por toda la base, una serie de tablas con sus correspondientes formularios que nos proporcionarán información a cerca de diferentes campos relacionados con los discos, los empleados y los clientes e informes a cerca de las ventas realizadas.
Menú principal:
Tiene diferentes botones que nos guiarán directamente a cada formulario. También he incluido un botón para imprimir y otro que nos permite salir del programa.


Formulario general:
Tiene una serie de desplegables que nos dan toda la información que se encuentra en la base en ese momento.

Formularios específicos:
Que nos proporcionarán datos sobre los clientes, los empleados, las discográficas... Como ejemplo dejo las discográficas y los pedidos.


Informes:
Hacen un resumen sobre las ventas desde la inauguración de la tienda y sobre ventas del mes de mayo. 

Tablas:
Todo viene dado por unas tablas que previamente hemos tenido que completar con los datos que queremos que aparezcan en los formularios e informes.


Relaciones:
Nada sería posible sin las relaciones, que son las que hacen posible la navegación por las diferentes áreas de la base. Las relaciones creadas para abrir los diferentes formularios han sido las siguientes:



miércoles, 27 de mayo de 2015

Base de datos

Una base de datos (cuya abreviatura es BD) es una entidad en la cual se pueden almacenar datos de manera estructurada, con la menor redundancia posible.
Una base de datos puede ser local, es decir que puede utilizarla sólo un usuario en un equipo, o puede ser distribuida, es decir, que la información se almacena en equipos remotos y se puede acceder a ella a través de una red.
Existen programas denominados sistemas gestores de datos DBMS, que permiten almacenar y posteriormente acceder a los datos de forma rápida y estructurada.
Las hay de cuatro tipos:
1.- Las bases de datos jerárquicas
Se utilizan los datos utilizando estructuras en forma de árbol.


2.- Las bases de datos relacionadas
Consiste en organizar los datos en forma de tablas.

3.- Las bases de datos orientadas a objetos
Es un modelo más reciente, trata de almacenar en la base de datos los objetos completos (estado y comportamiento). La información que contienen se organiza en atributos y el comportamiento en operaciones.

4.-  Las bases de datos mutidimensionales
En una base de datos multidimensional los datos se almacenan en tablas de múltiples dimensiones en vez de tablas bidimensionales como las del modelo relacional. Se utilizan para grandes volúmenes de información.

jueves, 16 de abril de 2015

Servo motores

Esta ha sido la última semana que hemos trabajado con Arduino, y hemos estado programando una serie de robots que utilizan motores llamados servo motores.
Lo servo motores son motores de corriente continua con un potenciómetro que le permite saber la posición en la que se encuentra y así poder controlarlo.

Servomotores de rotación continua 

Giran 360º a diferencia de los estándar. Estos motores son de corriente continua que incorporan un circuito electrónico que permiten controlar de forma sencilla la dirección y la velocidad de giro de sus ejes mediante impulsos eléctricos.


Servomotores estándar

Giran 180º. Al programa hay que darle el ángulo (en grados) donde queremos situar el eje. Como resultado de ejecutar la instrucción, se obtiene un movimiento del eje hasta alcanzar el ángulo especificado.


A continuación os dejo el link de la presentación sobre el proyecto que hemos estado realizando, Tickle robot, que es un robot que al tocar un sensor, le haces cosquillas y se balancea en su mecedora.
http://www.slideshare.net/LidiaJEIT/tickle-robot-47070179

Feliz tarde.

martes, 24 de marzo de 2015

Arduino

Arduino es una placa que lleva un microcontrolador ATMEL AVR y ofrece al usuario varios puertos de entrada y salida y un entrono de desarrollo que tiene como objetivo desarrollar proyectos vinculados al mundo de la electrónica y los microcontroladores dentro de un entorno sencillo que no plantee barreras de entrada económicas (el sistema tiene un coste muy bajo). Se programa en lenguaje Processing, aunque es posible usar otros lenguajes como C o Java.



Durante estas dos semanas hemos estado realizando dos proyectos en Arduino:

Reacciona:

Se trata de poner a prueba la capacidad de reacción. En el juego, uno de los tres LEDs se iluminarán aleatoriamente. Tienes que golpear el sensor capacitivo correspondiente dentro del tiempo de reacción. Si no lo consigues, el juego finaliza.

Primero el juego espera durante un periodo de tiempo aleatorio antes de elegir un número entre 0 y 2. Este número representa el LED que se encenderá y el sensor asociado a él. El LEDse enciende, y el sensor correspondiente espera a ser pulsado. Si tienes la habilidad de pulsarlo dentro del reactTime, un sonido de victoria sonará. Entonces el proceso comenzará de nuevo. Sin embargo, si falla, la función gameOver() se activará, todos los LEDs se encenderán y sonraá el sonido de fin de juego. Después, el juego se reiniciará.

A continuación os dejo la presentación del proyecto con sus modificaciones y el material utilizado.

http://es.slideshare.net/LidiaJEIT/reacciona-46229401

POV:

Las siglas POV significa Point Of View (punto de vista). Se encienden unos LEDs y si mientras esto ocurre movemos la placa, podremos leer palabras o ver dibujos con luz.

El programa hace parpadear los LEDs de acuerdo a la información del array llamado message. El efecto de persistencia visual se consigue al hacer que el VU-metro se mueva conforme a esta parpadeo.

Aquí os dejo la presentación del trabajo con sus modificaciones y el material utilizado.

http://es.slideshare.net/LidiaJEIT/pov-46229995


Y esta es una de los muchos tipos de placas que existen de Arduino. Los kits Arduino se venden por Internet y son muy fáciles de adquirir para que tu también puedas programar y experimentar desde casa.





lunes, 23 de marzo de 2015

La proporción áurea en el diseño

El ser humano busca la belleza en todas sus formas. Desde siempre se han desarrollado teorías que expliquen y permitan realizar diseños más hermosos, y una de esas teorías es la Proporción Áurea o razón divina, basada en la sucesión de Fibonacci (0,1,1,2,3,5,8,13,21,34...), en la que cada término se calcula sumando los dos anteriores.

Esta teoría impulsa el pensamiento de que la proporción es la forma más perfecta de la belleza, es la proporción entre las formas y elementos de una composición elevada al máximo nivel.

El principio de esta teoría es que al dividir un segmento en dos partes, la proporción entre la parte mayor y la menor debe ser igual que la que existe entre el segmento total y la parte menor, lo que genera diseños web asimétricos pero bien proporcionados que le dan armonía.

La proporción Áurea busca crear un lenguaje natural claro que pueda comprender nuestro cerebro, así como aprovechar la forma natural de leer una web, que generalmente van de arriba a la izquierda a abajo a la derecha, por lo que usando la razón divina, los elementos deberían ir colocados en ella según su importancia siguiendo este patrón de comportamiento.


Que Apple es una empresa obsesionada con el diseño resulta evidente para cualquiera que conozca alguno de sus productos. En cualquiera de sus dispositivos, cada línea ha sido estudiada hasta la saciedad.
Por eso no nos sorprende que el logo de iCloud siga la proporción áurea, para crear un logo armonioso y bien proporcionado.

La obsesión por la belleza y el diseño de los chicos de la manzana mordida no se queda solo en sus dispositivos, sino que hasta el más pequeño detalle está pensado y estudiado para que producta en los usuarios la reacción deseada.

Relación de la manzana con los números de Fibonacci:




miércoles, 4 de marzo de 2015

Processing

Durante este segundo trimestre estamos aprendiendo a programar. Para iniciarnos en este mundo, comenzamos nuestras prácticas en Processing.
Processing es un lenguaje de programación basado en Java que está diseñado para el desarrollo de arte gráfico, animaciones y aplicaciones gráficas de todo tipo.
Para comenzar hicimos una serie de dibujos geométricos y una serpiente que sigue la dirección del ratón.
Simplemente con copiar el programa en nuestra pantalla de Processing, ya estará listo. Aquí podemos ver cómo le he cambiado el color a la línea mediante "stroke". Los números de dentro del paréntesis corresponder al color. Si variamos los números, cambiará el color de nuestra línea.








Estas figuras geométricas siguen la figura del ratón mientras éste se va moviendo. Podemos cambiar la figura si sustituimos triangle por ellipse, circle...


Ahora crearemos la serpiente. Podemos hacerle las modificaciones que queramos al programa, como la velocidad, los colores o el tamaño de los círculos. Os dejo las modificaciones que le hice yo y que me resultan bastante interesantes.


¡Y llegamos a la mejor parte! ¡La creación de nuestro propio videojuego!
Vamos a intentar que Newton atrape el mayor número de manzanas posibles. Tendremos un contador de manzanas, una cuenta atrás y un modo aleatorio que hará que las manzanas caigan por distintas partes de la pantalla. Cada vez que consigamos atrapar una manzana, cambiará la imagen. Las imágenes deben encontrarse en la misma carpeta en la que tenemos guardado el programa.
Aquí os dejo los comandos para la creación del juego y el juego en marcha.
Recordad que podéis poner las imágenes que queráis, el tiempo que estiméis oportuno o que incluso podéis hacer que caigan dos objetos a la vez. ¡Imaginación al poder!

String[] imFiles = {"fondo.png", "manzana.png", "newton1.png", "newton2.png"};
PImage[] im = new PImage[4];
  
int nX = 0;      // Coordenada X, Newton
int nY = 0;      // Coordenada Y, Newton
float mY = 0;    // Coordenada Y, manzanas
int mX = 15;     // Coordenada X, manzanas
float mV = 0;    // Velocidad Y, manzanas
float mA = 0.05; // Aceleracion Y, manzanas
int p = 0;       // Puntos conseguidos
boolean pCount = true;  // Almacena si se pueden contar puntos o no
long t = 0;      // Almacena el tiempo 
  
void setup() {
  size(500, 500);  
  nY = height - 135; 
  t = millis();  
   
  // Carga las imagenes
  for(int i = 0; i < 4; i = i + 1) {
    im[i] = loadImage(imFiles[i]);
  }
}

void draw() {
  background(200);
  image(im[0], 0, 0, width, height);  // Imagen de fondo
   
  // Movimiento de la manzana
  mV = mV + mA;  
  mY = mY + mV;  
  if (mY > height) {
    mY = 15;    
    mX = int(random(width - 20)); 
    mV = 0;   
    pCount = true;  // Al lanzar una nueva manzana, se podran volver a contar puntos
  }
   
  fill(255);  
   
  // Deteccion de la colision
  if (mY + 50 > nY && mY < nY + 135) {  
    if (mX + 40 > nX && mX < nX + 128) { 
      fill(255, 0, 0);  
      // Si hay colision, incrementa un punto
      if (pCount) p = p + 1;
      pCount = false;  // En cualquier caso, cada vez que se entre 
                       // aqui, ya no se pueden contar puntos
    } 
  }

  image(im[1], mX, mY);  // Manzana
  if(pCount) {
    image(im[2], nX, nY);  // Newton buscando manzanas
  } else {
    image(im[3], nX, nY);  // Newton alcanzo una manzana
  } 
   
  // Contabilizacion del tiempo
  float timer = (millis() - t) / 1000;  

  // Fin del juego (GAME OVER)
  if (timer >= 30) {  
    noLoop();
  }

  // Muestra el tiempo en la pantalla
  fill(0);
  textSize(20);  // Incrementa el tamaño de la fuente de texto
  text("Tiempo: " + (30 - timer), 10, 25);

  // Muestra los puntos en pantalla
  fill(0);  
  textSize(20);
  text("Manzanazos: " + p, 3 * width / 5, 25); 
}

void keyPressed() {
  // Incrementa las coordenadas en 3 unidades
  if (keyCode == RIGHT) {
    nX = nX + 25;
  }
  // Decrementa las coordenadas en 3 unidades
  if (keyCode == LEFT) {
    nX = nX - 25;
  }
  // Limita el valor de la coordenada X
  if (nX < 0) {
    nX = 0;
  }
  if (nX > width - 20) {  
    nX = width - 20;
  }
}


Por último, creamos un reloj que está sincronizado con la hora del ordenador. Lo personalizamos cada uno a nuestro gusto. Yo en particular sustituí los números por bolas de billar. En la copia que os dejo aquí abajo la posición de reloj es horizontal, pero también lo podéis poner en vertical si queréis.

PImage im[] = new PImage[10];   // Array para 10 imagenes
String imFile[] = {"0.jpg", "1.jpg", "2.jpg", "3.jpg", "4.jpg", "5.jpg", "6.jpg", "7.jpg", "8.jpg", "9.jpg"}; 
PImage dospuntos;

void setup() {
  size(480, 70);  // 6 digitos en tres filas y dos columnas
dospuntos = loadImage("dospuntos.JPG");  
  for (int i = 0; i < 10; i = i + 1) {
    im[i] = loadImage(imFile[i]);  
    
  }
}

void draw() {
  background (0,255,0);
  int h = hour();             
  int h_dec = int(h / 10);    
  int h_uni = h - h_dec * 10; 
   
  image(im[h_dec], 0, 0);     
  image(im[h_uni], 70, 0); 
image (dospuntos, 140, 0);  
   
  int m = minute();           // Toma los minutos del reloj del ordenador y almacenalos en una variable
  int m_dec = int(m / 10);    // Extrae el digito de mayor peso de los minutos (decenas)
  int m_uni = m - m_dec * 10; // Extrae el digito de menor peso de los minutos (unidades)
   
  image(im[m_dec], 170, 0);    // Muestra el digito de las decenas
  image(im[m_uni], 240, 0);   // Muestra el digito de las unidades
  image (dospuntos, 310, 0);
   
  int s = second();           // Toma los segundos del reloj del ordenador y almacenalos en una variable
  int s_dec = int(s / 10);    // Extrae el digito de mayor peso de los segundos (decenas)
  int s_uni = s - s_dec * 10; // Extrae el digito de menor peso de los segundos (unidades)
   
  image(im[s_dec], 340, 0);   // Muestra el digito de las decenas
  image(im[s_uni], 410, 0);  // Muestra el digito de las unidades
}




Espero que os haya gustado y os haya resultado útil.
A día de hoy estamos programando con Arduino, un lenguaje que es prácticamente igual al de Processing, pero las órdenes en lugar de recibirlas el ordenador y hacerlas, las realiza una placa.