Advertisement
Abelsor

OLED_Proyecto_2

Apr 24th, 2025
355
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include <Adafruit_GenericDevice.h>
  2. #include <Adafruit_I2CDevice.h>
  3. #include <Adafruit_GFX.h>
  4. #include <Adafruit_SSD1306.h>
  5. #include <Wire.h>
  6. #include<math.h>
  7.  
  8. #define ANCHO 128  // Ancho de la pantalla OLED (píxeles)
  9. #define ALTO 64  // Alto de la pantalla OLED (píxeles)
  10.  
  11. // Declaración del objeto OLED (usando I2C)
  12. Adafruit_SSD1306 display(ANCHO, ALTO, &Wire, -1);
  13.  
  14. const byte pinPotenciometro = 34;
  15.  
  16. const int k = 20; // Margen externo
  17. const int a = 40; // Ancho externo
  18. const int m = 3; //
  19. const int s = 2; // Espaciado entre barras de carga
  20.  
  21. // Medidas de la punta de la pila
  22. const int a1 = 16;
  23. const int b1 = 5;
  24.  
  25. /////////////////////////
  26.   int Xo = k;
  27.   int Yo = (64-a)/2;
  28.   int Ao = 128-2*k;
  29.   int Lo = a;
  30.  
  31.   int X1 = Xo+m;
  32.   int Y1 = Yo+m;
  33.   int A1 = Ao-2*m;
  34.   int L1 = Lo-2*m;
  35.  
  36.   int X2 = X1+s;
  37.   int Y2 = Y1+s;
  38.   int A2 = ((A1)-4*s)/3;
  39.   int L2 = L1-2*s;
  40.  
  41. void setup() {
  42.   Serial.begin(9600);
  43.   Wire.begin();
  44.  
  45.   // Inicializar pantalla OLED con dirección I2C 0x3C (común en estas pantallas)
  46.   if (!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) {
  47.     Serial.println("¡Error al iniciar la pantalla OLED!");
  48.     while (true);  // Detener ejecución si falla
  49.   }
  50.  
  51.   // Limpiar buffer y mostrar mensaje inicial
  52. display.clearDisplay();
  53.  
  54. }
  55.  
  56.  
  57. void loop() {
  58.  
  59.     int lectura = analogRead(pinPotenciometro);
  60.  
  61.     int val = map(lectura,0,4095,0,100);
  62.  
  63.     if(val>=0 && val<10){
  64.       frame();
  65.       display.display();
  66.     }
  67.     else if(val>=10 && val<33)
  68.     {
  69.       low();
  70.       display.display();
  71.     }
  72.     else if(val>=33 && val<66)
  73.     {
  74.       mid();
  75.       display.display();
  76.     }
  77.     else{
  78.       full();
  79.       display.display();
  80.     }
  81.  
  82.   delay(50);
  83. }
  84.  
  85. void frame()
  86. {
  87.   display.clearDisplay();
  88.   display.fillRect(Xo,Yo,Ao,Lo, WHITE);
  89.   display.fillRect(Xo+Ao,Yo+(Lo-a1)/2,b1,a1, WHITE);
  90.   display.fillRect(X1,Y1,A1,L1, BLACK);
  91. }
  92. void low()
  93. {
  94.   frame();
  95.   display.fillRect(X2,Y2,A2,L2, WHITE);
  96. }
  97. void mid()
  98. {
  99.   low();
  100.   display.fillRect(X2+A2+s,Y2,A2,L2, WHITE);
  101. }
  102.  
  103. void full()
  104. {
  105.   mid();
  106.   display.fillRect(X2+2*(A2+s),Y2,A2+s,L2, WHITE);
  107. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement