#include <SPI.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
// D1, D0, DC,RES, CS
// SDA,SCL, DC,RES, CS
// MOSI,CLK, DC,RES, CS
Adafruit_SSD1306 display (128,64,23,22,21,19,18); //en ESP32 (Ancho, Alto, D1, D0, DC
byte cuenta=0;
void setup() {
Serial.begin(115200);
if(!display.begin(SSD1306_SWITCHCAPVCC)){
Serial.println(F("Pantalla asignada Fallo"));
for(;;); //No procede, hace ciclo infinito
}
else Serial.println(F("Conexion exitosa!!"));
inicio();
}
void loop() {
//if(cuenta==0) inicio();
if(Serial.available()>0){
char Dato=Serial.read();
if(Dato=='A'){
cuenta++;
Dato=0;
if(cuenta==11) cuenta=0;
}
if(Dato=='B'){
cuenta--;
Dato=0;
if(cuenta==0) cuenta=11;
}
switch(cuenta){
case 1:
//Escribe texto
Serial.println(F("1.- Pantalla Escribe texto"));
display.display();
display.clearDisplay();
display.setTextSize(1);
display.setTextColor(WHITE);
display.setCursor(10,5);
display.println("Inicia Prueba");
display.setCursor(10,15);
display.println("Funciones en");
display.setCursor(10,25);
display.println("Display OLED");
display.display();
break;
case 2:
// dibujar un punto
Serial.println(F("2.- Pantalla dibuja un punto"));
display.display();
display.clearDisplay();
display.drawPixel(64,32,WHITE); //(X,Y,Color);
display.display();
delay(1000);
break;
case 3:
// dibujar una linea
Serial.println(F("3.- Pantalla dibuja una linea"));
display.display();
display.clearDisplay();
display.drawLine(0,0,64,16,WHITE); //(Ax,by,X,Y,WHITE);
display.display();
delay(1000);
break;
case 4:
// dibujar un cuadro
Serial.println(F("4.- Pantalla dibuja un cuadro"));
display.display();
display.clearDisplay();
display.drawRect(10,0,30,20,WHITE); //(Posicion,B,A,Color);
display.display();
delay(1000);
break;
case 5:
// dibujar un cuadro relleno
Serial.println(F("5.- Pantalla dibuja un cuadro relleno"));
display.display();
display.clearDisplay();
display.fillRect(30,10,60,40,WHITE); //(Posicion,B,A,Color);
display.display();
delay(1000);
break;
case 6:
// dibujar un cuadro redondeado
Serial.println(F("6.- Pantalla dibuja un cuadro redondeado"));
for(byte i=0;i<=64;i++){
display.display();
display.clearDisplay();
display.drawRoundRect(5,i,30,30,6,WHITE); //(Posicion,Posicion,Tamaño,tamaño,pix radio rectangulo,Color);
display.display();
delay(50);
}
break;
case 7:
// dibujar un cuadro relleno redondeado
Serial.println(F("7.- Pantalla dibuja un cuadro relleno redondeado"));
for(byte i=0;i<=64;i++){
display.display();
display.clearDisplay();
display.fillRoundRect(10,i,50,50,10,WHITE); //(Posicion,Posicion,Tamaño,tamaño,pix radio rectangulo,Color);
display.display();
delay(50);
}
break;
case 8:
// dibujar un circulo
Serial.println(F("8.- Pantalla dibuja un circulo"));
display.display();
display.clearDisplay();
display.drawCircle(15,15,10,WHITE); //(Posicion,posicion,tamaño pix radio,Color);
display.display();
delay(1000);
break;
case 9:
// dibujar un circulo relleno
Serial.println(F("9.- Pantalla dibuja un circulo relleno"));
display.display();
display.clearDisplay();
display.fillCircle(15,15,10,WHITE); //(Posicion,posicion,tamaño pix radio,Color);
display.display();
delay(1000);
break;
case 10:
// dibujar ambas figuras en una misma pantalla
Serial.println(F("10.- Pantalla dibuja ambas figuras en una misma pantalla"));
display.display();
display.clearDisplay();
display.drawCircle(15,15,10,WHITE); //(Posicion,posicion,tamaño pix radio,Color);
display.fillCircle(15,15,10,WHITE); //(Posicion,posicion,tamaño pix radio,Color);
display.display();
delay(1000);
break;
case 11:
// dibujar un triangulo
Serial.println(F("11.- Pantalla dibuja un triangulo"));
for(byte i=0;i<64;i++){
display.display();
display.clearDisplay();
display.drawTriangle(15,15,15,50,i,50,WHITE); //fillTriangle(15,15,15,50,i,50,WHITE); (A,B,C,Color);
display.display();
delay(50);
}
break;
}
}
}// Fin de loop
void inicio(){
display.display();
display.clearDisplay();
display.setTextSize(1);
display.setTextColor(WHITE);
display.setCursor(30,5);
display.println("Hello Mr.");
display.setCursor(30,25);
display.println("Jozef");
display.setCursor(30,35);
display.println("Reyes");
display.display();
delay(1000);
}