Naps Tecnología y educación

Programación del display 128×32 en Arduino

En éste artículo veremos cómo realizar la programación del display 128×32 en Arduino. Se muestra el montaje del prototipo, las librerías que se necesitarán, el escaneo de puertos I2C, cómo imprimir pixeles, líneas y rectángulos, cómo mover un pixel dentro del display y cómo imprimir texto y números en el display.

Parte 1. Montaje del prototipo

Conecte GND (en el display) con GND (en Arduino)

Conecte VCC (en el display) con 3.3V (en Arduino). Si no funciona con 3.3, conectar con 5V.

Conecte SCL (en el display) con A5 (en Arduino)

Conecte SDA (en el display) con A4 (en Arduino)

Parte 2. Instale librerías

En el IDE Arduino:

Clic en menú Herramientas -> Administrar Bibliotecas

Busque la librería 1306

Seleccione (e instale) la librería Adafruit SSD1306

Si solicita instalar Adafruit GFX, instálela. 

Parte 3. Scanear el puerto I2C de su display

Utilice el siguiente código para scanear el puerto I2C en el que está conectado su display.

Abra el monitor serial para ver y anotar el puerto. Por lo general el puerto es 0x3c.

#include <Wire.h>


void setup()
{
  Wire.begin();

  Serial.begin(9600);
  while (!Serial);             // Leonardo: wait for serial monitor
  Serial.println("\nI2C Scanner");
}


void loop()
{
  byte error, address;
  int nDevices;

  Serial.println("Scanning...");

  nDevices = 0;
  for(address = 1; address < 127; address++ ) 
  {
    // The i2c_scanner uses the return value of
    // the Write.endTransmisstion to see if
    // a device did acknowledge to the address.
    Wire.beginTransmission(address);
    error = Wire.endTransmission();

    if (error == 0)
    {
      Serial.print("I2C device found at address 0x");
      if (address<16) 
        Serial.print("0");
      Serial.print(address,HEX);
      Serial.println("  !");

      nDevices++;
    }
    else if (error==4) 
    {
      Serial.print("Unknown error at address 0x");
      if (address<16) 
        Serial.print("0");
      Serial.println(address,HEX);
    }    
  }
  if (nDevices == 0)
    Serial.println("No I2C devices found\n");
  else
    Serial.println("done\n");

  delay(5000);           // wait 5 seconds for next scan
}

En el monitor serial observará algo así:

Programación del display 128×32 en Arduino

Parte 4. Inicialización de su display y pantalla de bienvenida

El siguiente código inicializará su display y mostrará una pantalla de bienvenida con el logo de Adafruit.

#include <SPI.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>

// Esto indica que nuestro display no tiene pin de reset
Adafruit_SSD1306 display(-1);

void setup() {
  // Inicializamos el display
  display.begin(SSD1306_SWITCHCAPVCC,0x3C);  
  // Borramos el display
  display.clearDisplay(); 
  // Mostramos la pantalla de bienvenida
  display.display();
}

void loop() {
  // put your main code here, to run repeatedly:

}

 

Parte 5. Imprimir pixeles, líneas y rectángulos

El siguiente código dibujará un pixel, una línea y dos rectángulos, uno de ellos con color de relleno.

#include <SPI.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>



// Esto indica que nuestro display no tiene pin de reset
Adafruit_SSD1306 display(-1);

void setup() {
  // Inicializamos el display
  display.begin(SSD1306_SWITCHCAPVCC,0x3C);  
  // Borramos el display
  display.clearDisplay(); 
  // Dibujamos un pixel en la coordenada 10,10
  display.drawPixel(10,10,WHITE);
  // Dibujamos una linea que va de 5,15 a 60,15
  display.drawLine(10,15,60,15,WHITE);
  // Dibujamos un rectángulo en 10,20 de 20 de ancho y 10 de alto
  display.drawRect(10,20,20,10,WHITE);
  // Dibujamos un rectángulo lleno, en 40,20 de 20 de ancho y 10 de alto
  display.fillRect(40,20,20,10,WHITE);
  display.display();
}

void loop() {
  // put your main code here, to run repeatedly:

}

El display muestra lo que le indicamos.

Parte 6. Pixel que se mueve en el display

El siguiente código dibuja un pixel en una coordenada x,y. Luego modifica el valor de x, se borra toda la pantalla y vuelve a dibujar el pixel en la nueva coordenada x,y.

#include <SPI.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>



// Esto indica que nuestro display no tiene pin de reset
Adafruit_SSD1306 display(-1);
int i=1;
int direccion=0; // 0 va hacia la derecha
void setup() {
  // Inicializamos el display
  display.begin(SSD1306_SWITCHCAPVCC,0x3C);  
  // Borramos el display
  display.clearDisplay(); 
  
  display.display();
}

void loop() {
  for (i=0; i<=127; i++){
    display.clearDisplay();
    display.drawPixel(i,16,WHITE);
    display.display();
  }
  for (i=127; i>=1; i--){
    display.clearDisplay();
    display.drawPixel(i,16,WHITE);
    display.display();
  }
    
}

 

Parte 7. Imprimir texto y números

El siguiente código imprimer un “Hola, mundo” en el display. Imprime un valor numérico y un valor de texto en un tamaño de letra mayor.

#include <SPI.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>



// Esto indica que nuestro display no tiene pin de reset
Adafruit_SSD1306 display(-1);

void setup() {
  // Inicializamos el display
  display.begin(SSD1306_SWITCHCAPVCC,0x3C);  
  // Borramos el display
  display.clearDisplay(); 
  
  
  display.display();
}

void loop() {

  display.setTextSize(1);
  display.setTextColor(WHITE);
  display.setCursor(0,0);
  display.println("Hola, mundo");
  display.setTextColor(BLACK, WHITE);
  display.println(3.1416);
  display.setTextSize(2);
  display.setTextColor(WHITE);
  display.println("Iniciar");
  display.display();
  

}

El display mostrará lo siguiente:

Espero que éstos ejemplo que permitan iniciarte en la programación del display 128×32 en Arduino.

¿Qué te pareció este artículo?
  • No era lo que buscaba ()
  • Regular ()
  • Interesante ()
  • Excelente ()
  • Poco informativo ()
(Visto 1.565 veces)

Tu comentario

opiniones