/**************************************************************************
Visualización de caracteres en una pantalla monocromática OLED SSD1306
La página de códigos tiene un bug. Para quitarlo: display.cp437(true);
(https://learn.adafruit.com/adafruit-gfx-graphics-library/graphics-primitives)
Para imprimir la cadena "España":
(ver https://github.com/esphome/feature-requests/issues/1766)
en octal: display.print("Espa""\244""a");
en hexadecimal: display.print("Espa""\xA4""a");
**************************************************************************/
// by 2024 raphik
#include <SPI.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#define SCREEN_WIDTH 128 // OLED display width, in pixels
#define SCREEN_HEIGHT 64 // OLED display height, in pixels
// Declaration for an SSD1306 display connected to I2C (SDA, SCL pins)
//#define OLED_RESET 4 // Reset pin # (or -1 if sharing Arduino reset pin)
//Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire);
uint8_t i, milisegundos;
void setup() {
Serial.begin(9600);
if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3D)) { // Address 0x3D for 128x64
Serial.println(F("SSD1306 allocation failed"));
for(;;); // Don't proceed, loop forever
}
pinMode(2, INPUT_PULLUP);
pinMode(3, INPUT_PULLUP);
pinMode(4, INPUT_PULLUP);
pinMode(5, INPUT_PULLUP);
pinMode(6, INPUT_PULLUP);
pinMode(7, INPUT_PULLUP);
display.cp437(true);
display.setRotation(1);
display.setTextColor( WHITE, BLACK );
display.clearDisplay();
}
void loop() {
if( digitalRead(2) == 0 ) { i--; milisegundos = 25; }
if( digitalRead(3) == 0 ) { i--; milisegundos = 250; }
if( digitalRead(4) == 0 ) { i--; milisegundos = 1000; }
if( digitalRead(5) == 0 ) { i++; milisegundos = 1000; }
if( digitalRead(6) == 0 ) { i++; milisegundos = 250; }
if( digitalRead(7) == 0 ) { i++; milisegundos = 25; }
display.setTextSize(1);
display.setCursor(1,3);
display.print(" ");
display.setCursor(1,3);
display.print("OCTAL: ");
display.print(i,8);
display.setTextSize(10);
display.setCursor(4,22);
display.print((char)i);
display.display();
delay(milisegundos);
}