#include <SPI.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include <Wire.h> // biblioteca para conexión I2C
#include <Adafruit_GFX.h> // biblioteca para gráficos
#include <Adafruit_SSD1306.h> // biblioteca para el controlador del OLED
#define ANCHO 128
#define ALTO 64
#define SSD1306_I2C_ADDRESS 0x3C
#define OLED_RESET -1
#define POTE_auto A1
#define POTE_control A3
// crea el objeto OLED con conexión I2C
Adafruit_SSD1306 oled(ANCHO, ALTO, &Wire, OLED_RESET);
void setup() {
pinMode (POTE_auto, INPUT);
pinMode (POTE_control, INPUT);
Serial.begin(9600); // inicializa puerto serie
// initialize OLED display with I2C address 0x3C
if (!oled.begin(SSD1306_SWITCHCAPVCC, 0x3C)) { // Si la conexion I2C con el OLED falla
Serial.println(F("Falla conexión con SSD1306 OLED")); // imprime en monitor serie
while (1);
}
delay(2000); // espera 2 segundo para la inicialización
/*oled.clearDisplay(); // borra la pantalla
oled.setTextSize(1); // selecciona tamaño de texto
oled.setTextColor(WHITE); // selecciona color de texto
oled.setCursor(0,1);
oled.println("Auto:");
oled.setCursor(0,12);
oled.println("Control:");
oled.drawRect(30, 0, 20, 10, SSD1306_WHITE);
oled.drawRect(50, 12, 20, 10, SSD1306_WHITE);
oled.display();*/
}
void loop(){
oled.clearDisplay(); // borra la pantalla
oled.setTextSize(1); // selecciona tamaño de texto
oled.setTextColor(WHITE); // selecciona color de texto
oled.setCursor(0,1);
oled.println("Auto:");
oled.setCursor(0,12);
oled.println("Control:");
oled.drawRect(50, 0, 20, 10, SSD1306_WHITE);
oled.drawRect(70, 3, 2, 4, SSD1306_WHITE);
//oled.drawRect();
oled.drawRect(50, 12, 20, 10, SSD1306_WHITE);
oled.drawRect(70, 15, 2, 4, SSD1306_WHITE);
int porcentajeA = nivelBateriaAuto();
oled.fillRect(50, 0, porcentajeA, 10, SSD1306_WHITE);
int porcentajeC = nivelBateriaControl();
oled.fillRect(50, 12, porcentajeC, 10, SSD1306_WHITE);
oled.display();
}
int nivelBateriaAuto(){
//auto:
int batAuto = (analogRead(POTE_auto)/1023.0)*5;
int pa;
if(batAuto==5){
pa = 20;
}
if(batAuto<5 and batAuto>=4){
pa = 15;
}
if(batAuto<4 and batAuto>=3){
pa = 10;
}
if(batAuto<3 and batAuto>=2){
pa = 5;
}
if(batAuto<2 and batAuto>=1){
pa = 3;
}
if(batAuto<1 and batAuto>=0){
pa = 0;
}
return pa;
}
int nivelBateriaControl(){
//auto:
int batControl = (analogRead(POTE_control)/1023.0)*5;
int pc;
if(batControl==5){
pc = 20;
}
if(batControl<5 and batControl>=4){
pc = 15;
}
if(batControl<4 and batControl>=3){
pc = 10;
}
if(batControl<3 and batControl>=2){
pc = 5;
}
if(batControl<2 and batControl>=1){
pc = 3;
}
if(batControl<1 and batControl>=0){
pc = 0;
}
return pc;
}