Raspberry pi 3: Controlando una pantalla OLED (SPI)

Holi el día de hoy vamos a controlar una pequeña pantalla OLED de 128×64 pixeles monocroma utilizando la raspberry pi 3, python y librerías de nuestros amigos de Adafruit. Con esta pantallita super barata y ademas fácil de utilizar podemos tener una forma de desplegar datos sin tener que tener una pantalla (tv o monitor), conectada a nuestra raspberry pi, ademas de que hace las cosas mas pequeñas. Ojo lo que vamos a mostrar serán datos de un programa en python no el sistema operativo.

Requerimientos:
Raspberry pi 3, con raspbian stretch (este estoy utilizando)
python 2.7
OLED ssd1306 monochrome 0.96″

Circuito:

Ahora solo debemos de conectarlo de la siguiente manera.

OLED—Rpi
GND —> GND
VCC  —> 5V
SCL —> SPI_CLK
SDA —> SPI_MOSI
RES —> Cualquier pin libre. Yo usare el 2
DC —>  Cualquier pin Libre. Yo usare el 3

Instalando dependencias

Lo primero que vamos a hacer sera instalar las dependencias necesarias para poder compilar y luego ejecutar nuestro código.

sudo apt-get update
sudo apt-get install build-essential python-dev python-pip
sudo pip install RPi.GPIO

Ahora vamos a instalar la  librería Python Imaging Library,

sudo apt-get install python-imaging python-smbus

Ahora vamos a clonar la librería ssd1306 de adafruit:

sudo apt-get install git
git clone https://github.com/adafruit/Adafruit_Python_SSD1306.git
cd Adafruit_Python_SSD1306
sudo python setup.py install

Cool, ya tenemos todas las dependencias y el circuito armado nos toca ver código :3

Codigo

 

#Codigo demostrativo para el uso de una pantalla oled en raspberry pi 3 
#Yeffri J. Salazar
#Importamos librerias necesarias
import time 
import Adafruit_GPIO.SPI as SPI
import Adafruit_SSD1306
from PIL import Image
from PIL import ImageDraw
from PIL import ImageFont
#definimos variables 
RST = 2 #numero de pin donde esta conectado el pin RESET de la pantalla oled 
DC = 2 #numero de pin donde esta conectado el pin DC de la pantalla oled
SPI_PORT = 0 #puerto SPI
SPI_DEVICE = 0 #dispositivo SPI
#creamos el objeto controlador
oled= Adafruit_SSD1306.SSD1306_128_64(rst=2, dc=3, spi=SPI.SpiDev(SPI_PORT, SPI_DEVICE, max_speed_hz=8000000))
#definimos altura y anchura de la pantalla
anchura = oled.width
altura = oled.height
#creamos un objeto imagen sobre el cual vamos a dibujar usando PIL
image = Image.new('1', (anchura,altura))
draw = ImageDraw.Draw(image)
#inicializamos la pantalla
oled.begin()
#limpiamos la pantalla
oled.clear()
#.display es la funcion que mostrara los cambios a la pantalla
oled.display()
#escogemos una fuente, en este caso la predefinida
font = ImageFont.load_default()
#escribimos algo de texto
draw.text((0,0),'Holi :3',font=font,fill=255)
draw.text((30,10),'No olvides comentar',font=font,fill=255)
draw.text((00,20),'ThemicrofControl.wordpress.com',font=font,fill=255)
#mostramos la pantalla con ambos comandos
oled.image(image)
oled.display()
#esperamos 1 segundo
time.sleep(2)
draw.rectangle((0,0,anchura,altura), outline=0, fill=0)
#mostramos la pantalla con ambos comandos
oled.display()
#Mas texto
draw.text((0,0),'Felicidades, lo has',font=font,fill=255)
draw.text((30,10),'Hecho',font=font,fill=255)
draw.text((00,20),'Muy bien :3 ',font=font,fill=255)
#mostramos la pantalla con ambos comandos
oled.image(image)
oled.display()

Entonces nos tendria que salir dos mensajes diferentes si lo hicimos bien. Esta guia esta basada en la guia oficial de Adafruit

Si tienes problemas con esto no dudes en contactarde.

Saludos desde la tierra de la eterna primavera

y recuerden:
Solo necesitan una excusa para cambiar el mundo .

 

 

 

 

 

 

Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión /  Cambiar )

Google photo

Estás comentando usando tu cuenta de Google. Cerrar sesión /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión /  Cambiar )

Conectando a %s

A %d blogueros les gusta esto: