#include <Adafruit_SSD1306.h>
#include <BluetoothSerial.h>

#define BUTTON_UP_PIN 12      // pin for UP button 
#define BUTTON_SELECT_PIN 2   // pin for SELECT button
#define BUTTON_DOWN_PIN 4     // pin for DOWN button

Adafruit_SSD1306 display(128, 64, &Wire, -1);

BluetoothSerial SerialBT; // Objeto Bluetooth

// Variables
String Name = "Esp32_Blu";
String clientName = "ESP32_Bluetooth"; //Nombre al que se va a conectar
bool Master;
bool connected;

#define BT_DISCOVER_TIME  10000
static bool btScanSync = true;               

void setup() {

  pinMode(BUTTON_UP_PIN, INPUT_PULLUP);     // up button
  pinMode(BUTTON_SELECT_PIN, INPUT_PULLUP); // select button
  pinMode(BUTTON_DOWN_PIN, INPUT_PULLUP);   // down button

  Serial.begin(115200);

  display.begin(SSD1306_SWITCHCAPVCC, 0x3C);  // Inicializar pantalla OLED

  //BT.begin("ESP32_LED_Control"); // Nombre de su dispositivo Bluetooth y en modo esclavo
  //BT.begin("ESP32_client", true); // Nombre de su dispositivo Bluetooth y en modo maestro
  
  SerialBT.begin("ESP32_client");

  // Mostrar mensaje de bienvenida

  if (btScanSync) {
    BtScan ();
  }
}

void loop() {
  Screen();
}

void Screen() {
  display.clearDisplay();
  display.setCursor(0, 0);
  display.setTextSize(1);
  display.setTextColor(WHITE);
  display.print("Bluetooth...");

  display.setCursor(0, 10);
  if (digitalRead(BUTTON_UP_PIN) == LOW) {
    display.print("Boton Up: Pulsado");
  } else {
    display.print("Boton Up: No");
  }

  display.setCursor(0, 20);
  if (digitalRead(BUTTON_SELECT_PIN) == LOW) {
    display.print("Boton Enter: Pulsado");
  } else {
    display.print("Boton Enter: No");
  }

  display.setCursor(0, 30);
  if (digitalRead(BUTTON_DOWN_PIN) == LOW) {
    display.print("Boton Down: Pulsado");
  } else {
    display.print("Boton Down: No");
  }

  display.display();
}

void BtScan() {
  Serial.println("Escaneando Bluetooth...");
  BTScanResults *pResults = SerialBT.discover(BT_DISCOVER_TIME);
  if (pResults)
    pResults->dump(&Serial);
  else
    Serial.println("Error en Scaneo BT, sin resultados!");

}
esp:0
esp:2
esp:4
esp:5
esp:12
esp:13
esp:14
esp:15
esp:16
esp:17
esp:18
esp:19
esp:21
esp:22
esp:23
esp:25
esp:26
esp:27
esp:32
esp:33
esp:34
esp:35
esp:3V3
esp:EN
esp:VP
esp:VN
esp:GND.1
esp:D2
esp:D3
esp:CMD
esp:5V
esp:GND.2
esp:TX
esp:RX
esp:GND.3
esp:D1
esp:D0
esp:CLK
Loading
ssd1306
btn1:1.l
btn1:2.l
btn1:1.r
btn1:2.r
btn2:1.l
btn2:2.l
btn2:1.r
btn2:2.r
btn3:1.l
btn3:2.l
btn3:1.r
btn3:2.r