¿Qué son las clases en Java?

Las clases en Java son plantillas para la creación de objetos, en lo que se conoce como programación orientada a objetos, la cual es una de los principales paradigmas de desarrollo de software en la actualidad.

Si buscamos Java en la Wikipedia, en la definición que hay disponible para el lenguaje de programación con este nombre encontraremos:

Java es un lenguaje de programación de propósito general, concurrente, orientado a objetos que fue diseñado específicamente para tener tan pocas dependencias de implementación como fuera posible.

Hay algo que destaca de esta breve definición: orientado a objetos. ¿Qué significa?

Según la Wikipedia:

La programación orientada a objetos o POO (OOP según sus siglas en inglés) es un paradigma de programación que usa los objetos en sus interacciones, para diseñar aplicaciones y programas informáticos. Está basado en varias técnicas, incluyendo herencia, cohesión, abstracción, polimorfismo, acoplamiento y encapsulamiento. Su uso se popularizó a principios de la década de los años 1990. En la actualidad, existe una gran variedad de lenguajes de programación que soportan la orientación a objetos.

Yo se los voy a definir de una forma más sencilla: es el mejor paradigma de programación creado por el hombre. Permite escribir código de una forma ordenada, reutilizarlo, ordenar la información y hacer mil y una tareas que sin este paradigma serían impensables. Casi todos los lenguajes de programación de hoy poseen este tipo de paradigma, pero según mi parecer Java es sinónimo de lenguaje orientado a objetos. Es una de sus principales características.

Lo que intentaré hacer ahora es explicar qué es una clase a la vez que les transmito algunos tips a la hora de programar en Java. Tenemos que ser educados en la forma como programamos y llevar un orden en lo que hacemos. (más…)

Leer Más

Servomotor Seguidor con acelerómetro MMA7361

La intención de este trabajo es implementar un seguidor de movimientos sobre el Eje Y con el acelerómetro y un servomotor.

De esta manera aplicamos lo aprendido en Post anteriores  “Acelerómetros de 3 ejes, lo que necesitas saber”. La idea es utilizar un Servomotor 9G Tower-Pro como seguidor , acoplando a través de Arduino, de manera que nuestro seguidor , copie los movimientos del Eje Y del módulo sensor MMA7361.

Cabe mencionar que será importante haber leído previamente el Post de Acelerómetros ,ya que se darán por conocidas ciertas cuestiones al realizar la explicación. Por otra parte debemos hacer una pequeña introducción al funcionamiento del servomotor.

Servomotores:

Un servomotor no es más que un motor de Corriente continúa con una fuerte reducción mecánica y un multiplicador de fuerza para que el mismo, no pierda capacidad de torque para poder acoplarle otros dispositivos mecánicos como ejes, correas, y engranajes, de acuerdo para lo que se haya pensado. El servomotor es un actuador, no un sensor, es decir un dispositivo final sobre el cual, y en general, va a actuar un control electrónico como en este caso.

La mayoría de los servomotores trabajan en un radio de 180 grados, para los cuales tienen topes mecánicos y si se intenta sobrepasar estos límites puede dañarse. El servomotor se puede desarmar y quitarle los topes y el dispositivo de control de realimentación (potenciómetro) para que pueda trabajar libremente, es decir, con giro continuo.

(más…)

Leer Más

Microcontroladores o Arduino, ¿no es lo mismo?

 Microcontroladores o Arduino encierra no solo una pregunta. La idea de este Post es conocer la filosofía de Arduino y la de los Microcontroladores. En general, saber un poco de las diferencias y la realidad de lo que es, y significa Arduino y las diferencias con un desarrollo con microcontroladores

 

Sin duda, para aquellos que nacieron con la filosofía de Arduino, el mundo a sus pies se ve diferente y parece todo más fácil de lograr, Arduino ofrece múltiples soluciones en tiempos relativamente cortos. Para aquellos más viejitos, como quien les está contando esto, nacimos con los microcontroladores y tuvimos que estudiar largas y largas noches, hacer pruebas, mediciones, quemar elementos y pelearnos con nuestras familias.

Lo Primero a saber

Arduino y Microcontroladores no son lo mismo. Arduino es una plataforma de desarrollo que si, indudablemente su núcleo es un Microcontrolador de la línea Atmel. Microcontroladores, en general, son chips, es decir circuitos integrados que ofrecen un Hardware embebido junto con varios periféricos también embebidos. Por ejemplo cuando hablamos de Timers, Osciladores internos, PWM, conversores A/D , módulos de captura, Puertos, Stacks TCP, o Usarts, Puertos GPIO, estamos hablando de periféricos de un Microcontrolador que están embebidos dentro del mismo.

(más…)

Leer Más

Creación de eventos en Java

Debo decir que, sin duda, mi lenguaje favorito es Java y disfruto mucho aprender cosas nuevas sobre su uso y las herramientas que tengo a mi disposición. La creación de eventos en Java es un tema que a mucha gente le gustaría dominar pero que no es tan fácil de comprender si somos principiantes o aficionados, como es mi caso.

Pero, ¿qué son los eventos en Java? 

La definición de evento, según el diccionario de la Real Academia Española dice:

“Suceso importante y programado, de índole social, académica, artística o deportiva.”

También encontramos la definición:

“Cosa que sucede.”

Nos quedamos con la segunda, ya que es lo que más se adapta a nuestro ámbito de la programación. Cosa que sucede.

Supongamos que tenemos un programa donde se hace necesario monitorear cierta condición en particular. Digamos que tenemos una variable y queremos determinar cuando sea que dicha variable sufra alguna modificación. O que queremos indicarle a un software en específico cuando sea que haya pasado una hora después del inicio de su ejecución. Lo que necesitaríamos es crear un evento que ejecute una acción cuando sea que algo suceda. Una cosa que sucede dispara un método en específico con las acciones que deseamos llevar a cabo ante dicha acción.

Cuando nosotros creamos una interface gráfica en Netbeans nos aparece una lista de eventos de los cuales podemos escoger. Por ejemplo, en un Frame tenemos la siguiente lista de eventos:

creacion de eventos en Java

 

Si nos adentramos en alguno de los menús desplegables, por ejemplo Mouse, veremos los eventos que se desencadenan cuando algo sucede con el Mouse.

creacion de eventos en Java

 

Vemos por ejemplo que el evento mouseClicked desencadenará una serie de instrucciones preestablecidas por nosotros cuando sea que se haga clic sobre el JFrame. Cuando utilizamos botones, al hacer click sobre ellos desencadenamos el evento ActionPerformed y de esa forma le damos funcionalidad a nuestras interfaces. Lo que haré en este post es mostrar al usuario como crear eventos más allá de aquellos que podemos utilizar con nuestras interfaces gráficas. (más…)

Leer Más

Acelerómetros de 3 ejes, lo que necesitas saber

 El siguente “Post” tiene como objetivo la comprensión de los acelerómetros, como probarlos y saber como utilizarlos posteriormente. Nos hemos ayudado de Arduino para implementar una manera de estudiarlos. Previo al uso de tales sensores en nuestros proyectos, es importante conocer cómo funcionan conceptualmente sin entrar en profundidad en la arquitectura interna. Solo nos vamos a centrar en lo que es realmente importante comprender para poder utilizarlos.

Antes tendremos que revisar conceptos útiles que utilizaremos en este estudio. Sabemos que todos los cuerpos en la superficie terrestre están sometidos a la fuerza de gravedad, que es una fuerza que nos empuja hacia el centro de la tierra. Cualquier objeto e independiente de su masa, se verá acelerado hacia la tierra a un valor g=9,8 m/s2 (depende también del lugar geográfico), y más aún, ya en la superficie de la misma, continúa siendo acelerado y es lo que permite medir el peso de una persona o cualquier objeto.

El peso es una fuerza que está dada por la ecuación de Newton F=mg (fuerza es igual al producto de la masa por la aceleración), siendo m la masa del objeto. Es muy común confundir masa con peso, es erróneo decir que por ejemplo Juan pesa 78 Kg, en realidad la balanza mide cuanto el producto de m·g , y los 78kg son una unidad de masa.

El peso de Juan sería 78 · g = 764 Kg · m/s2 = 764 Newtons. La balanza divide por un factor 9,8, 10 para redondear y muestra 78 Kg.

La masa es una propiedad fundamental de todos los objetos. Se definió al Kilogramo hacia 1889 en la revolución francesa, y es un prototipo internacional de una aleación de Platino e Iridio. Dicho elemento patrón pesa 9.8 N. Es decir, no se eligió cualquier patrón de masa, sino aquella que represente 9,8 N.

La masa es una característica inercial de los objetos, y es la propiedad que nos dice que un objeto permanecerá en equilibrio a menos que se le aplique una determinada fuerza (1ra de Newton). Este efecto se puede notar, por ejemplo, al ir en un vehículo. Si el vehículo está en reposo, la masa de los pasajeros están en equilibrio, de igual manera que si viajasen a 150 Kmt/h. Pero si se frena bruscamente, la fuerza de frenado se aplica al vehículo y no a los pasajeros, por lo tanto los mismos continuarán viajando a 100Kmts/h. Las fuerzas G , tienen como unidad a la gravedad g, es decir 1 fuerza G=9.8m/seg2, el termino fuerza aplicado no es correcto, ya que la gravedad no es una fuerza, pero así se la denomina como una medida para identificar a la gravedad, entonces los cambios de aceleración producen Fuerzas G. Por ejemplo supongamos que un vehículo viaja a 100 Km/h y se estrella contra un muro y pasa a velocidad cero en 3 seg. Si suponemos que la aceleración ( negativa) es constante , podemos calcularla:

a= -100×2/9 ( Vf=Vi+axt2/2)   Vf=0, Vi=100, t=3seg a= 22 m/seg2, si 1G= 9.8 , sería una fuerza G = 22, es decir 22 veces la gravedad. Nuestro cuerpo está sometido a 1g , es decir que nuestro peso podríamos decir que posee 1g, este impacto genera entonces una fuerza 22 veces nuestro peso.

Recordar que F=mxa, donde la aceleración a es la denominada fuerza G. Es una manera mentalmente simple para comparar la fuerza con nuestro peso, sabiendo que nuestro peso o el de cualquier objeto representa 1G. (más…)

Leer Más

Uso de la librería Arduino versión 2.7 en Eclipse Indigo

Para aquellos desarrolladores que utilizan el Eclipse Indigo como herramienta y entorno de programación, les cuento que he probado la librería de Antony en esta plataforma para encender y apagar el Led del pin 13 de la placa Arduino Uno. No obstante lo que he realizado es una comunicación bidireccional de manera que cuando Arduino encienda o apague dicho LED, esta envíe un mensaje de confirmación a la interface Java.

Por otra parte en envío de datos desde la interface utiliza la función sendByte, que a diferencia de posts anteriores lo hace mediante sendData. La diferencia es que sendBye tiene la posibilidad de enviar enteros entre 0 y 255.

Para conocer más de esta librería se encuentran los post anteriores, incluso navegando dentro de los Archivos de la API encontraran la implementación de dichas funciones y sus diferencias, para ello deben utilizar un editor de texto de su agrado para leer los archivos.java.

En principio no debería haber inconvenientes en cuanto al uso de la librería dado que NetBeans es también una plataforma en Java , aunque siempre encontramos alguna que otra diferencia en cuanto a las implementaciones.

El Eclipse que utilizo es el Indigo, ya que posee la ventaja de disponer del WindowBuider que nos permite disponer de todas las herramientas y objetos Swing para diseñar una interface gráfica.

El sitio para el Eclipse Indigo lo pueden encontrar en su sitio oficial. (más…)

Leer Más

Lo que no se debe hacer: palabras reservadas en MySQL

Conoce la lista de palabras reservadas en MySQL, es decir, todos aquellos comandos que no debes utilizar cuando nombras las columnas de una base de datos.

Una entrada breve. Me encontraba trabajando en una base de datos en MySQL y se dio una situación especial. Cuando yo programo siempre asigno los nombres de mis variables en inglés. Es una costumbre, aunque a veces escribo una que otra en español.
Me encontraba preparando un aplicación en Java y fui a crear una base de datos con una columna llamada index, para establecer un índice (número entero positivo que crece ordenadamente de 1 en 1 para identificar las filas y ciertos procesos que debo llevar a cabo dentro de mi algoritmo), por lo que intenté utilizar la sintaxis:

Esto me arrojó un error y de inmediatamente comencé a sospechar que la palabra index no podría ser utilizada. En efecto asi es. Index es una de las palabras reservadas en MySQL. (más…)

Leer Más

Abrir una dirección web en Java

A veces por alguna razón necesitamos abrir direcciones web desde nuestros programas en Java. Este ejemplo intentará mostrarle al usuario el código que debe utilizar para que al desencadenar algún tipo de evento, ya sea la ejecución de una instrucción o el presionar un botón el usuario pueda abrir una dirección web en Java.

Voy a crear un método que tendrá como parámetro un String. Este String contendrá la URL a la cual queremos acceder. El código es el siguiente:

abrir una dirección web en java

Ahora si deseamos por ejemplo que al presionar un botón se abra nuestro navegador web por defecto (Google Chrome en mi caso) y nos lleve al sitio web Panama Hitek, en el Action Performed event del botón colocamos la instrucción:

Recordemos que siempre es bueno trabajar con métodos para llevar a cabo tareas repetitivas que pueden ser ejecutadas desde diversos puntos en nuestro algoritmo. De igual forma, los métodos los almacenamos dentro de clases y a la hora de utilizar una determinada función llamamos a la clase y luego al método. Esto se considera una buena práctica entre los programadores que acostumbran a llevar un orden específico en la elaboración de sus programas.

Saludos.

Leer Más

Panama Hitek cumple 2 años!

El blog Panama Hitek cumple 2 años desde su lanzamiento, a la vez que alcanza un millón de visitantes desde nuestra migración hacia WordPress.org

Hace 2 años, un 23 de enero registré el dominio panamahitek.wordpress.com. Escogí a WordPress por ser una plataforma que me parece muy elegante, con mucha documentación.

Yo me encontraba al final de mi segundo año de carrera universitaria. El año 2012 fue difícil para mí y es que Licenciatura en Ingeniería Electromecánica es considerado uno de los planes más robustos del sistema educativo panameño. Al final de mi segundo año había recibido una materia llamada Circuitos I, donde se estudian las leyes de Kirchhoff en toda clase de circuitos DC, amplificadores operacionales, circuitos RLC y al final se empieza con el tema de fasores, como un preámbulo a las materias que siguen en el plan. Aparte de esto no sabía mucho de electrónica, más allá de los conocimientos que había podido adquirir inventando cosas en mi tiempo libre.

Un día escuchaba a unos tíos hablando sobre cómo la juventud de ahora no comparte sus conocimientos. En ese momento algo hizo clic en mi cabeza y decidí crear un sitio para compartir lo que sabía hasta ese momento. Ya había tenido la oportunidad de comprarme un Arduino Mega desde hacía un año y lo había utilizado en algunos proyectos. Incluso ya había establecido comunicación Arduino-Java. (más…)

Leer Más

Señales continuas, analógicas, discretas y digitales

A cualquier persona que haya cursado una carrera relacionada al área de telecomunicaciones habrá conocido de los conceptos básicos de señales. Dentro de estos conceptos básicos se encuentra identificar correctamente los distintos tipos de señales encontradas tanto en la teoría como en la práctica. Por tal razón, en Panama Hitek he creado este pequeño artículo que intenta explicar de una manera escueta qué se quiere decir cuando se hace referencia a señales de tipo digital, analógica, de tiempo continuo y discreta. Así que te invito a que le des un vistazo y nos des tu opinión.

(más…)

Leer Más