Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <Adafruit_GenericDevice.h>
- #include <Adafruit_I2CDevice.h>
- #include <Adafruit_GFX.h>
- #include <Adafruit_SSD1306.h>
- #include <Wire.h>
- #include<math.h>
- #define ANCHO 128 // Ancho de la pantalla OLED (píxeles)
- #define ALTO 64 // Alto de la pantalla OLED (píxeles)
- // Declaración del objeto OLED (usando I2C)
- Adafruit_SSD1306 display(ANCHO, ALTO, &Wire, -1);
- const byte pinPotenciometro = 34;
- const int k = 20; // Margen externo
- const int a = 40; // Ancho externo
- const int m = 3; //
- const int s = 2; // Espaciado entre barras de carga
- // Medidas de la punta de la pila
- const int a1 = 16;
- const int b1 = 5;
- /////////////////////////
- int Xo = k;
- int Yo = (64-a)/2;
- int Ao = 128-2*k;
- int Lo = a;
- int X1 = Xo+m;
- int Y1 = Yo+m;
- int A1 = Ao-2*m;
- int L1 = Lo-2*m;
- int X2 = X1+s;
- int Y2 = Y1+s;
- int A2 = ((A1)-4*s)/3;
- int L2 = L1-2*s;
- void setup() {
- Serial.begin(9600);
- Wire.begin();
- // Inicializar pantalla OLED con dirección I2C 0x3C (común en estas pantallas)
- if (!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) {
- Serial.println("¡Error al iniciar la pantalla OLED!");
- while (true); // Detener ejecución si falla
- }
- // Limpiar buffer y mostrar mensaje inicial
- display.clearDisplay();
- }
- void loop() {
- int lectura = analogRead(pinPotenciometro);
- int val = map(lectura,0,4095,0,100);
- if(val>=0 && val<10){
- frame();
- display.display();
- }
- else if(val>=10 && val<33)
- {
- low();
- display.display();
- }
- else if(val>=33 && val<66)
- {
- mid();
- display.display();
- }
- else{
- full();
- display.display();
- }
- delay(50);
- }
- void frame()
- {
- display.clearDisplay();
- display.fillRect(Xo,Yo,Ao,Lo, WHITE);
- display.fillRect(Xo+Ao,Yo+(Lo-a1)/2,b1,a1, WHITE);
- display.fillRect(X1,Y1,A1,L1, BLACK);
- }
- void low()
- {
- frame();
- display.fillRect(X2,Y2,A2,L2, WHITE);
- }
- void mid()
- {
- low();
- display.fillRect(X2+A2+s,Y2,A2,L2, WHITE);
- }
- void full()
- {
- mid();
- display.fillRect(X2+2*(A2+s),Y2,A2+s,L2, WHITE);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement