viernes, 23 de diciembre de 2016

Felices fiestas

Hola a todos nos acercamos a final de año y es hora de hacer un poco de repaso de como ha ido todo... (prometo no aburriros)


Para empezar quiero dar las gracias a todos los que leéis asiduamente mi blog y a los que lo seguís formalmente a través de blogger. Lo que en principio empezó siendo un pequeño manual para mi propio uso, poco a poco se ha transformado en algo útil para muchas otras personas, lo que me satisface mucho, y eso lo demuestran las más de 50.000 visitas que he recibido, sinceramente muchas gracias a todos, espero continuar siendo de ayuda.
Por otro lado una de las cosas que me pidieron era ampliar mis publicaciones a otras redes sociales y como algunos sabréis, ahora también podéis encontrar los posts compartidos en google+facebook, twiter (@xelagg) y pinterest, espero que ahora sean más accesibles para todos.

En segundo lugar para el año que viene, espero poder mantener el nivel de publicaciones actual sobre el mundo de RaspberryPi, aunque a veces no es fácil ya que el volumen de novedades y noticias es abrumador (intento no dejar de lado lo más importante) y evidentemente no llego a todo. Mi objetivo como ya sabéis es aprender a manejar la RaspberryPi y como usarla para interaccionar con otros dispositivos o circuitos, con una programación práctica y fácil. Intentaré mantener el mismo nivel (o eso espero...) Pese a que me voy a tomar unos días de vacaciones hasta el próximo año ya os tengo reservados diversos posts, así que disfrutad de las vacaciones y aprovechad para jugar con vuestra RaspberryPi.

En tercer lugar se que mis posts no son perfectos, y si tenéis dudas o problemas con el código o circuitos que aparecen siempre podéis hacer llegar vuestros comentarios, siempre son bienvenidos, es de mucha ayuda poder valorar el propio trabajo a partir de otras opiniones.

Y aunque sea un tópico felices fiestas y próspero año 2017

PD: nos vemos sin falta el año que viene.





jueves, 22 de diciembre de 2016

The Magpi, la segunda revista oficial de RaspberryPi en español


Ya está disponible el segundo número de la revista The MagPi, la revista oficial de RaspberryPi en español, podéis descargar de forma gratuita este número de 20 páginas con el siguiente enlace

https://www.raspberrypi.org/magpi-issues/MagPi_Mini_Spanish_02.pdf

Espero que os guste el contenido y que sea de amplia divulgación a ver si así aumentan el contenido disponible.

Aquí os dejo el link desde el que se puede acceder a todos los números de la revista, las ediciones espaciales y pos supuesto los números traducidos (bajo el título de Translated Edition #)




miércoles, 21 de diciembre de 2016

PIXEL para PC y MAC

Hola a todos, hoy la fundación Raspberry Pi ha publicado la disponibilidad de una versión experimental de Debian con el entrono de escritorio PIXEL para ordenadores x86 PC y MAC. Este sistema operativo booteable, o sea, es una imagen que se puede grabar en una memoria USB o un CD.



La imagen contiene todo el software al que estamos acostumbrados en la versión para RaspberryPi excepto Minercraft y Wolfram Mathematica. El S.O. se ha construido a partir de la arquitectura i386, de forma que deberia funcionar en ordenadores antiguos siempre que dispongan con un mínimo de 512 Mb de RAM.

Aquí os dejo los pasos para ponerlo en marcha.

1. Descargar la imagen y grabarla.


En primer lugar hay que bajar la imagen de este link, una vez descargado hay que grabar la imagen en un CD o memoria USB. Para ello nos aconsejan usar el programa Etcher, aunque no es el único que podéis usar.

lunes, 19 de diciembre de 2016

Controlar dos LEDs con Python (Parte 4)

En este post os voy a mostrar como usar los puertos GPIO y un pequeño programa en Python para controlar dos leds a la vez.

Para ello voy a usar una placa protoboard, cables de conexión, 2 leds , 2 resistencias y mi RaspberryPi. Si sois nuevos en esto os aconsejo leer los anteriores posts (del uso de los GPIO en el apartado Programación/GPIO).


1. Organización del circuito

En primer lugar vamos a ver como nos debe quedar nuestro circuito para poder controlar 2 leds a la vez. Aquí os dejo una imagen para que veáis la distribución que he usado



si no habéis leído los anteriores post sobre leds os recomiendo hacerlo (sobretodo el primero), ya que en él detallo el uso de las conexiones y hay un apartado al final sobre el uso de las resistencias, aquí está el link.

lunes, 12 de diciembre de 2016

Controlar intensidad de un LED con Python (Parte 3)

En este post os voy a mostrar como usar los puertos GPIO y un pequeño programa en Python para controlar la intensidad de brillo de un led.

Para ello voy a usar una placa protoboard, cables de conexión, un led , una resistencia y mi RaspberryPi. Si sois nuevos en esto os aconsejo leer los anteriores posts (del uso de los GPIO en el apartado Programación/GPIO).


1. Organización del circuito

En primer lugar vamos a ver como nos debe quedar nuestro circuito para poder controlar la intensidad de brillo de un led (si habéis hecho los dos ejercicios anteriores es el mismo circuito). Aquí os dejo una imagen para que veáis la distribución que he usado



si no habéis leído el primer post sobre leds os recomiendo hacerlo, ya que en el detallo las conexiones y hay un apartado al final sobre el uso de las resistencias, aquí está el link.

lunes, 5 de diciembre de 2016

Controlar parpadeo de un LED con Python (Parte 2)

En este post os voy a mostrar como usar los puertos GPIO y un pequeño programa en Python para hacer parpadear un led.

Para ello voy a usar una placa protoboard, cables de conexión, un led , una resistencia y mi RaspberryPi. Si sois nuevos en esto os aconsejo leer los anteriores posts (del uso de los GPIO en el apartado Programación/GPIO).


1. Organización del circuito

En primer lugar vamos a ver como nos debe quedar nuestro circuito para poder encender y apagar un led (si habéis hecho el anterior ejercicio es el mismo circuito). Aquí os dejo una imagen para que veáis la distribución que he usado



si no habéis leído el post anterior os recomiendo hacerlo, ya que en el detallo las conexiones y hay un apartado al final sobre el uso de las resistencias, aquí está el link.

miércoles, 30 de noviembre de 2016

RaspberryPi, Raspbian Jessie with Pixel, revisión 5

Hola, hoy mismo desde el blog oficial de la fundación RaspberryPi se ha anunciado una actualización de Raspbian with Pixel que además de solucionar algunos fallos conlleva una modificación en la RaspberryPi enfocada a mejorar la seguridad de nuestro dispositivo.

1. Novedades


1.1 Interfaz SSH 

A partir de ahora la interfaz SSH de Raspbian estará por defecto desactivada. Para los que no lo sepan, esta interfaz se usa para controlar la RaspberryPi de forma remota (para más información aquí tenéis un post que publiqué anteriormente, RaspberryPi control remoto con SSH). 
Debido a los últimos ataques masivos dirigidos a dispositivos del IoT (Internet of Things) a través del usuario y password predeterminados de estos dispositivos, desde la fundación se ha decidido desactivar la interfaz del SSH por defecto, y así evitar que si nuestro dispositivo esta conectado a internet alguien pueda conectarse de forma remota y controlarlo.

lunes, 28 de noviembre de 2016

Controlar encendido de un LED con Python (Parte 1)

En este post os voy a mostrar como usar los puertos GPIO y un pequeño programa en Python para controlar el encendido y apagado de un led.

Para ello voy a usar una placa protoboard, cables de conexión, un led , una resistencia y mi RaspberryPi. Si sois nuevos en esto os aconsejo leer el anterior post (Conector GPIO principos basicos) en el que detallo los diferentes componentes, como usarlos y evitar quemar nuestros dispositivos.


1. Organización del circuito

En primer lugar vamos a ver como nos debe quedar nuestro circuito para poder encender y apagar un led. Aquí os dejo una imagen para que veáis la distribución que he usado yo.



Tened en cuenta que yo uso una RaspberryPi B+, y la distribución de los conectores GPIO puede variar respecto a otros modelos. Si tenéis dudas consultad el post anterior (Conector GPIO principos basicos), y si vuestro modelo de RaspberryPi no está consultad la documentación oficial.

miércoles, 23 de noviembre de 2016

Suse Linux Enterprise Server 64-bits para RaspberryPi

Si bien disponemos de una RaspberryPi 3 con arquitectura de 64 bits desde hace tiempo, hoy se ha anunciado el primer sistema operativo de una distribución oficial de 64 bits. Se trata de Suse Linux Enterprise Server.


Pese a que algunos desarrolladores ya habían puesto al servicio de la comunidad versiones con un kernel de 64 bits con Ubuntu y Fedora, en este caso se trata de una distribución oficial, Suse, y ello también significa que dispondremos de soporte oficial de esta distribución.

Esperemos que sea el principio de otros muchos sistemas operativos de 64 bits que nos permitan extraer todo el potencial de los nuevos modelos de RaspberryPi con esta arquitectura.

Aquí os dejo el link del post original


martes, 22 de noviembre de 2016

The MagPi, la primera revista oficial de RaspberryPi en Español


Hoy se ha anunciado que The MagPi, la revista oficial de RaspberryPi, a partir de este mes estará disponible en 4 nuevos lenguajes, y entre ellos está el Español que junto al Francés, Italiano y Hebreo dispondrán cada mes de un número de 20 páginas destinadas a complementos, programación, novedades, proyectos, reportajes...

Esperemos que nos sirva para mejorar nuestros conocimientos y que esta iniciativa se duradera y si es posible se amplíe aún más.

Aquí os dejo el link desde el que se puede acceder a todos los números de la revista, las ediciones espaciales y pos supuesto al primer número traducido (bajo el título de Translated Edition #1)



domingo, 13 de noviembre de 2016

Nueva versión OSMC para RaspberryPi


Para los que usáis la RaspberryPi como mediacenter, ya está lista la nueva versión de OSMC. Esta nueva versión trabaja con el núcleo de Kodi v17 (Krypton). Además tiene como gran novedad un nuevo entorno de escritorio muy atractivo como el que os muestro en la siguiente imagen
La versión incluye corrección de errores, mejoras para la experiencia del usuario, y diversas mejoras que os detallo a continuación



jueves, 10 de noviembre de 2016

Nuevas guías para principiantes de RaspberryPi

Hola a todos, desde esta semana en la web oficial de raspberrypi.org disponemos de unas nuevas guías de iniciación. Una vez en la web, haced click en el apartado HELP, disponemos de 6 guías actualizadas de los siguientes temas




Estas guías están pensadas para los principiantes y muestran de una forma sencilla y visual todo lo que necesitamos saber, están en inglés pero no creo sea un problema, ya que se entiende fácilmente. Os detallo los contenidos de cada una


1. Guía de Hardware


Aquí se nos explica que elementos necesitamos para poner en marcha nuestra RaspberryPi y como encenderla por primera vez, conectarla a internet, añadirle un disco duro o usb para tener un almacenaje extra y como conectar unos altavoces o cascos.

domingo, 6 de noviembre de 2016

Conector GPIO, principios básicos

Con este post voy a iniciar una serie dedicada a los conectores GPIO y el uso que podemos darles todos los post de programación y GPIO los encontraréis en el apartado Programación/GPIO del blog. Pero antes de empezar a usarlos es importante tener claros unos conceptos clave para no estropear vuestra RaspberryPi.

1. Conceptos generales

Para los no iniciados, los conectores GPIO (General-purpose input/putput) presentes en la RaspberryPi nos permiten conectar dispositivos electrónicos y controlarlos desde la RaspberryPi. Estos conectores son conexiones digitales que se pueden usar como entradas (input) o salidas (output) y que funcionan a 3,3 V. 

Los puertos GPIO al igual que la RaspberryPi han evolucionado, en los primeros modelos disponíamos de 26 conectores que posteriormente pasaron a 40. Cada uno de estos conectores se identifica mediante un número, cada uno de ellos tiene asignada una función predeterminada como por ejemplo los puertos TXD y RXD que se utilizan para conectar la RaspberryPi a otro PC mediante un cable de consola y poder acceder de forma remota.
Es importante saber el modelo de RaspberryPi que tenemos ya que algunos puertos tienen funciones diferentes y es muy importante no equivocarse ya que hay puertos con 3,3 V otros con 5 V a veces un error podría acabar con nuestro dispositivo.

1.1 Distribución puertos GPIO

Aquí tenéis unas imágenes de la distribución de los GPIO de algunos modelos. Fijaos que en las imágenes tenemos los pines numerados del 1 al 26 o del 1 al 40 según el modelo esta es la numeración BOARD de los pines (numeración que depende de la posición en la que están fijados en la placa). Pero además en los laterales tenemos unas etiquetas, estas corresponden al sistema BCM, en este caso no todos los pines tienen números, esta identificación es en base a la función por defecto que tiene cada pin GPIO.

RaspberryPi 1 Modelo B revisión 1.0


miércoles, 26 de octubre de 2016

Dirty Cow vulnerabilidad del kernel Linux

Hola a todos, desde ayer 25 de octubre de 2016, sabemos que se ha detectado un bug en el kernel de linux al que han llamado Dirty COW. La vulnerabilidad afecta al 'Copy-On-Write' del sistema también popularmente llamado COW.

Esta vulnerabilidad podría utilizarse para tomar el control de un dispositivo que ejecute dicha versión de Linux (Android, ordenadores, servidores y también nuestra RaspberryPi).
La solución a esta vulnerabilidad ha sido solucionada y la podemos obtener actualizando el Kernel de nuestra Raspberry.

Para solucionar la vulnerabilidad Dirty-COW tenemos que abrir un terminal (pantalla de línea de comandos) y introducid las siguientes órdenes:

sudo apt-get update

y presionamos Intro en el teclado (esto va a tardar un poco, paciencia...), una vez haya acabado introducimos la segunda orden

sudo apt-get install raspberrypi-kernel

luego presionamos Intro en el teclado (esto también va a tardar un poquito más que la anterior). Una vez finalizado reiniciad la RaspberryPi. Ya estáis fuera de peligro.

Has ta pronto.

viernes, 21 de octubre de 2016

RaspberryPi, Raspbian Jessie with Pixel, revisión 4

Hola, desde el día 28 de Septiembre disponemos de una revisión de la versión Raspbian, llamada Raspbian With Pixel con algunas mejoras y novedades que os detallo. He tardado un poco en publicar el post porque he tenido bastantes problemas para instalar RealVNC, así que he escrito otro post para que no perdáis horas como yo.

En la zona de descargas de la web oficial de raspberrypi.org, si accedemos al apartado Raspbian continuamos encontrando dos opciones Raspbian Jessie With Pixel y Raspbian Jessie Lite, que como ya expliqué es una versión reducida sin software añadido como Scratch, Wolfram, LibreOffice... es posible que encontréis a faltar algun programa y lo tengáis que descargar. En la versión anterior se detectó un problema para usar el paquete wicd (para configurar la conexión del dispositivo) si el problema permanece hay que eliminar el paquete dhcpcd5 con la línea de comandos, usando la orden

sudo apt-get remove dhcpcd5

después ya podéis usar wicd para configurar la conexión del dispositivo.

Dejando de lado la versión Lite las novedades son estas

1. Novedades


1.1 Entorno Pixel

La principal novedad de esta versión es el nuevo entorno de escritorio, llamado PIXEL, que son las siglas de (Pi Improved Xwindows Environment Lightweight) y esto conlleva una nueva imagen. 

1.1.1 Pantalla de presentación

Si actualizáis o flasheais una imagen al arrancar la Raspberry ya veremos el primer cambio, ya no aparecen las líneas de carga sino una imagen de presentación con la versión de Raspbian en la parte inferior derecha



Raspberry Pi with Pixel, cambiar el navegador predeterminado. Primeros pasos con Raspbian (XI)

Si disponéis de la última versión de Raspbian con el escritorio Pixel, ya sabréis que una de las nuevas incorporaciones es el navegador Chromium como navegador por defecto, en sustitución de Epiphany. El nuevo navegador lleva mejoras para poder ver vídeos correctamente en YouTube y un bloqueador de anuncios, si embargo en los modelos de Raspberry más modestos como el mío (RaspberryPi B+) funciona extremadamente lento.

La buena noticia es que el antiguo navegador epiphany continua instalado, si no os funcina bien Chromium y queréis usar Epiphany podéis cambiar el navegador por defecto. Aquí van los pasos

1. Cambiar el navegador por defecto en Raspbian

Abrid una ventana de terminal (línea de comandos) de Raspbian, primero vamos a ver los navegadores instalados que tenemos, usaremos la orden

update-alternatives --list x-www-browser

haced Intro en el teclado y se mostrará por pantalla algo parecido a esto

Raspberry Pi with Pixel, control remoto con RealVNC. Primeros pasos con Raspbian (X) parte4.


Si disponéis de la última versión de Raspbian con el escritorio Pixel, ya sabréis que una de las nuevas incorporaciones es el software RealVNC para conexión remota. Hasta ahora Raspbian no incluía ningún paquete para ello y normalmente recurríamos a TightVnc, tal y como muestro en otro post anterior

https://frambuesa-pi.blogspot.com.es/2015/10/raspberry-pi-primeros-pasos-con_21.html

sin embargo los chicos de Raspbian han decidido "facilitarnos" las cosas, incluyendo RealVnc por defecto en Raspbian. Pues bien de entrada os aviso que yo he flasheado la nueva versión (descargada de la web oficial) en una tarjeta, y RealVnc no funciona, o funciona de manera parcial (esto ya se ha solucionado en la actual versión disponible en la web de oficial de raspberrypi.org). 
Pero de todas formas he decidido crear este tutorial para que no perdáis las mismas horas que he perdido yo en el caso de que os encontréis con problemas. 
Yo tengo una Rapsberry Pi 3, con este modelo después de actualizar los paquetes de RealVNC me ha funcionado correctamente pero con el modelo de RaspberryPi B+, he tenido que crear de forma manual un fichero de arranque del VNC que genera un escritorio virtual al que me puedo conectar con RealVNC. 
Más abajo están todas las explicaciones para conectaros con una RaspberryPi B+ o una RaspberryPi 3.
Si no habéis leído el post anterior de actualización de versión, os recomiendo leerlo antes de continuar, en el apartado de Raspbian Primeros Pasos

jueves, 29 de septiembre de 2016

Programación Python XVI (ejecutar python desde la línea de comandos)

Este es otro post dedicado a programación en Python, encontraréis todos los posts de este tipo juntos en el apartado Programación del blog. Y si queréis aprender más podéis visitar la web oficial de www.python.org

En este post vamos a ver como ejecutar un programa en python desde la línea de comandosEn el primer post de python vimos como se podían ejecutar programas de python desde la línea de comandos Programación Python para RaspberryPi, Sin embargo hoy vamos a ver como crear un pequeño programa al que le pasaremos unos parámetros y lo ejecutaremos desde la línea de comandos de Raspbian




1 Crear un programa en Python

En los anteriores posts ya hemos visto muchos ejemplos de código así que vamos a crear un programa y guardarlo en un archivo para luego ejecutarlo. En primer lugar abrid el IDLE de python y luego abrid un nuevo archivo (tal y como vimos en el primer post Programación Python para RaspberryPi) añadiremos el siguiente código

# importamos el modulo sys
import sys
# creamos bucle para mostrar los argumentos enviados
for (i,value) in enumerate (sys.argv):
    print("arg: %d %s " % (i,value))
click aquí para descargar el código

ahora guardaremos el fichero en una ubicación conocida por ejemplo con el nombre programa_argumentos.py.

jueves, 15 de septiembre de 2016

Programación Python XV (clases)

Este es otro post dedicado a programación en Python, encontraréis todos los posts de este tipo juntos en el apartado Programación del blog. Y si queréis aprender más podéis visitar la web oficial de www.python.org

En este post vamos a ver como usar clases con python. Para pequeños programas generalmente no es necesario el uso de clases, pero si queréis desarrollar un programa algo más complejo las clases ayudan a organizar y simplificar el código.




1.1 Qué es una clase 

En los programas de cierta envergadura lo mas normal para trabajar en un lenguaje de programación es el uso de clases. Una clase nos sirve para crear un objeto con un conjunto de propiedades y/o funciones para trabajar con estas propiedades, con el objetivo de simplificar y ahorrar tiempo de programación, ya que podremos crear un objeto de la clase en cualquier momento y llamar a sus funciones sin tener que repetir código cada vez. Las clases se pueden guardar como un archivo python y pueden ser importados de la misma forma que importamos los módulos, tal y como vimos en un post anterior, Python X (módulos o bibliotecas), es recomendable que si creamos un archivo para cada clase que generamos lo guardemos con el mismo nombre de la clase de esta forma es muy fácil transformar una clase en un módulo.
En los siguientes ejemplos os mostraré como crear una clase para una agenda de clientes.

jueves, 1 de septiembre de 2016

Programación Python XIV (uso de archivos)

Este es otro post dedicado a programación en Python, encontraréis todos los posts de este tipo juntos en el apartado Programación del blog. Y si queréis aprender más podéis visitar la web oficial de www.python.org

En este post vamos a ver como usar archivos desde python, crear un archivo, escribir, leer los datos contenidos, etc.




1.1 Crear un archivo y guardar datos 

En primer lugar vamos a ver como abrir un archivo, escribir datos en este archivo y finalmente cerrarlo. Mirad el siguiente ejemplo

# abrimos el archivo asignándolo a una variable
archivo=open('/home/pi/Desktop/fichero.txt','w')
# escribimos en el fichero los datos
archivo.write('Primera línea del fichero\n')
archivo.write('Segunda línea del fichero\n')
# cerramos el fichero
archivo.close()
click aquí para descargar el código


jueves, 18 de agosto de 2016

Progamación Python XIII (control excepciones)

Este es otro post dedicado a programación en Python, encontraréis todos los posts de este tipo juntos en el apartado Programación del blog. Y si queréis aprender más podéis visitar la web oficial de www.python.org

En este post vamos a ver como controlar las excepciones con python. Seguramente si habéis seguido los anteriores post de python en algún momento al ejecutar el código python os ha devuelto un error o excepción, y el código no se ha ejecutado de forma correcta, bien porque hemos cometido un error al escribir o bien porque hemos provocado un error involuntario. El mensaje de error que devuelve python muchas veces no queremos mostrarlo tal cual al usuario, de manera que tendremos que controlar el error y devolver un mensaje concreto.




1. Control de excepciones con try ... except

1.1 Generar un error en python

Para poder ver como funciona el control de errores y/o excepciones lo primero que vamos a hacer es crear un código que genere un error, por ejemplo vamos a definir una lista de 9 elementos y vamos a intentar acceder al elemento núemero 10 (que no existe), lo que provocará un error de ejecución del programa. Seguid el ejemplo

# guardamos en una variable una lista de elementos
lista_numeros=[0,1,2,3,4,5,6,7,8]
# mostramos por pantalla el elemento 2 de la lista
print(lista_numeros[2])
# mostramos por pantalla el elemento 10 de la lista que no existe
print(lista_numeros[10])
# mostramos por pantalla el elemento 6 de la lista
print(lista_numeros[6])
click aquí para descargar el código
al ejecutar este código en la consola de python veremos por pantalla el elemento 2 de la lista y luego obtendremos un error IndexError, parecido a este

Traceback (most recent call last):
    File "<stdin>" , line 6, in <module>
    print(lista_numeros[10])
IndexError: list index out of range

domingo, 7 de agosto de 2016

Nueva RaspberryPi A+

Hace unos días se presentó un nuevo modelo de RaspberryPi A+, un producto más económico que el modelo de RaspberryPi B. Aunque no podemos destacar grandes mejoras, solamente que ahora dispondremos de 512 MB de memoria RAM. En definitiva se trata de una RaspberryPi Zero pero con conexiones de HDMI y alimentación normales (no nos hace falta un adaptador micro) y evidentemente su tamaño se mantiene igual, aquí os dejo una imagen.




El tamaño se mantiene 65x56mm, y el resto de especificaciones también excepto la RAM:
  • Soc Broadcom BCM2835
  • procesador a 700 Mhz
  • GPU VideoCore IV de doble núcleo
  • 512 MB RAM
  • Salida video HDMI (puerto inferior centro)
  • Ranura Micro SD
  • puerto micro USB para la alimentación (puerto inferior izquierdo 5V a 2 A)
  • puerto USB2 para datos (puerto derecho)
  • incorpora 40 Pin GPIO (en la parte superior)
  • Conexión para una cámara (puerto izquierdo)
Es una lástima que no incorpore también un puerto Ethernet o red WiFi, de manera que las mejoras son básicamente en el aumento de la RAM, a 512MB y en la eficiencia energética de la placa. Personalmente creo que por la diferencia de precio es mejor comprar el modelo de Raspberry Pi B+, mucho mas completo y con poca diferencia de tamaño.

Os dejo un enlace para ver con detalle todas las características

https://www.modmypi.com/raspberry-pi/model-a-plus/raspberry-pi-model-a-plus-new

Y aquí os dejo el enlace de la tabla comparativa de modelos:

jueves, 4 de agosto de 2016

Progamación Python XII (números aleatorios)

Este es otro post dedicado a programación en Python, encontraréis todos los posts de este tipo juntos en el apartado Programación del blog. Y si queréis aprender más podéis visitar la web oficial de www.python.org

En este post vamos a ver como obtener números aleatorios con python. Para ello vamos a necesitar importar módulos, tal y como vimos en un post anterior.





1 Módulo para obtener números aleatorios (random)

En Python podemos usar el módulo random para obtener lo que se define como números aleatorios, este módulo dispone de varios métodos, pero solo vamos a ver los más comunes. Para más información podéis visitar la web de referencia de python

https://docs.python.org/3/library/random.html#module-random


1.1 Números aleatorios con randint()

randint(inicio,fin) nos permite obtener un número aleatorio dentro de un rango de números (que podemos especificar), veamos un ejemplo

# importamos en modulo random
import random
# guardamos en una variable el numero aleatorio obtenido
numero_a=random.randint(1,6)
# mostramos por pantalla el numero aleatorio obtenido
print(numero_a)
click aquí para descargar el código
en este ejemplo obtendremos un número aleatorio comprendido entre 1 y 6 (ambos incluidos).

jueves, 28 de julio de 2016

Python XI (formato de fechas y calendario)

Este es otro post dedicado a programación en Python, encontraréis todos los posts de este tipo juntos en el apartado Programación del blog. Y si queréis aprender más podéis visitar la web oficial de www.python.org

En este post vamos a ver como trabajar y formatear las fechas y un calendario con python. Para ello vamos a necesitar importar módulos, tal y como vimos en el post anterior


1. Modulos para trabajar con fechas (módulo time y el módulo datetime)


Para trabajar con fechas los dos módulos principales de python son el módulo time y el módulo datetime. El primero es un módulo de bajo nivel con diversas funciones pero no todas ellas están disponibles en todas las plataformas. Por otro lado tenemos el módulo datetime que nos proporciona un abanico más amplio.

Me centraré directamente en el módulo datetime aunque si tenéis curiosidad aquí tenéis un enlace de referencia para el módulo time

https://docs.python.org/3/library/time.html


1.1 Módulo datetime 

Como ya he dicho este módulo porporciona un abanico más amplio para trabajar con fechas, vamos a ver algunas de las muchas opciones que podremos usar. 

jueves, 14 de julio de 2016

Python X (módulos o bibliotecas)

Este es otro post dedicado a programación en Python, encontraréis todos los posts de este tipo juntos en el apartado Programación del blog. Y si queréis aprender más podéis visitar la web oficial de www.python.org

En algunos de los próximos posts vamos a usar lo que en python se llaman módulos y/o bibliotecas. Por eso hoy vamos a ver como usarlos.



1. Qué es un módulo o bibliotecca de python

Un módulo es un archivo de python (con extensión .py) que contiene diferentes componentes, que pueden ser funciones variables y/o pequeños programas ejecutables. Además existen una gran cantidad de módulos para python en sus diferentes versiones (cuidado que algunos no son compatibles entre diferentes versiones). Cada unos de estos módulos tiene un nombre específico con el que lo podemos llamar, y como he dicho cada módulo puede contener múltiples componentes, variables, funciones o comandos ejecutables, cada uno también con un nombre específico. En muchos casos hay módulos con un componente con el mismo nombre, incluso diferentes módulos con componentes, variables y/o funciones con el mismo nombre, de forma que hay que tener cuidado al importarlos para no confundirnos.

Python lleva por defecto algunos de estos módulos ya incorporados (forman parte del núcleo para poder programar), sin embargo otros módulos deberemos descargarlos y/o instalarlos para poder usarlos. Muchos dispositivos de hardware, como por ejemplo los sensores, traen consigo sus propios módulos python para ayudarnos a programar con ellos de una forma sencilla. Aquí tenéis un link con la lista de módulos

https://docs.python.org/3/py-modindex.html


2. Como importar un módulo

Existen diferentes formas de importar un módulo, vamos a ver en qué se diferencian

lunes, 4 de julio de 2016

Python IX (formato de números)

Este es otro post dedicado a programación en Python, encontraréis todos los posts de este tipo juntos en el apartado Programación del blog. Y si queréis aprender más podéis visitar la web oficial de www.python.org

Hoy vamos a ver como dar formato a los números.




1. Formato de números


1.1 Formato de números

1.1.1 Definir el número de decimales

Para formatear un número usaremos la instrucción format, pero su uso es un poco complejo, la instrucción format va precedida del tipo de formato que deseamos aplicar al número entre { }, veamos un ejemplo

# asignamos a una variable un número de punto flotante
numero_pi=3.1416
# asignamos a la variable numero_final un número de punto flotante
# con dos decimales que formateamos con la instrucción "{:.2f}"
numero_final="{:.2f}".format(numero_pi)
# mostramos por pantalla el número final formateado
print(numero_final)
click aquí para descargar el código

jueves, 9 de junio de 2016

Python VIII (diccionarios)

Este es otro post dedicado a programación en Python, encontraréis todos los posts de este tipo juntos en el apartado Programación del blog. Y si queréis aprender más podéis visitar la web oficial de www.python.org

Hoy vamos a ver los diccionarios. Los diccionarios son parecidos a las listas, nos sirven para almacenar datos de forma "estructurada" gracias a una clave o índice. De esta forma conseguimos que una variable pueda almacenar múltiples valores en lugar de un solo valor, la ventaja que tienen sobre las listas es que en los diccionarios podemos acceder de forma rápida a un valor si conocemos su clave.




1. Definir un dicionario

Para crear un diccionario usaremos los claudators { }, tal y como se muestra en el siguiente ejemplo

# definimos un diccionario
capitales={'España':'Madrid', 'Francia':'Paris'}

click aquí para descargar el código
en este caso hemos creado un diccionario que hemos asignado a la variable capitales, la primera clave es España y su valor Madrid, la segunda clave es Francia y su valor Paris.
Al igual que en las listas las claves y los valores pueden ser de cualquier tipo de datos, como valores lógicos, números, etc. Pero también podemos crear diccionarios que tengan como valores otros diccionarios o listas, tal y como os muestro a continuación

jueves, 2 de junio de 2016

Python VII (listas o arrays)

Este es otro post dedicado a programación en Python, encontraréis todos los posts de este tipo juntos en el apartado Programación del blog. Y si queréis aprender más podéis visitar la web oficial de www.python.org

Hoy vamos a ver las listas. Las listas nos sirven para almacenar datos de forma "estructurada" en una variable. De esta forma conseguimos que una variable pueda almacenar múltiples valores en lugar de un solo valor, para los que ya sabéis algo de programación las listas son similares a lo que en otros lenguajes llamamos matrices.




1. Definir una lista

Para crear una lista usaremos variable=[..] dentro de los corchetes incluiremos los valores que queremos almacenar separados por coma. Veamos un ejemplo

# definimos una lista de valores y los asignamos a la variable lista_1
lista_1=[18,'Alex','2016',True,3.1416]
# mostramos los valores de la lista
print(lista_1)

click aquí para descargar el código

como podéis ver he creado una lista en una variable llamada lista_1, que contiene un total de 5 datos. Como veis los datos pueden ser de diferente tipo, números, texto, lógicos... y al contrario que en otros lenguajes no es necesario definir ni el tipo ni el tamaño de la lista.