Cómo cambiar el código de OLED SSD1306 A un SH1106

Qué tal gente, soy un nuevo en programar con Arduino y tengo un pequeño problema. Resulta qué mi OLED sólo funciona con SH1106 y tengo un código en SSD1306 y lamentablemente no me la quieren cambiar, alguien sabe cómo podría cambiar el siguiente código para una pantalla OLED SH1106.

#include <Adafruit_SSD1306.h>
#include <SPI.h>
#include <Adafruit_GFX.h>
#define ANCHO_PANTALLA 128 // ancho pantalla OLED
#define ALTO_PANTALLA 64 // alto pantalla OLED
Adafruit_SSD1306 display(ANCHO_PANTALLA, ALTO_PANTALLA, &Wire, -1);
const int Trigger1 = 2; //Pin digital 2 para el Trigger1 del sensor
const int Echo1 = 3; //Pin digital 3 para el Echo1 del sensor
const int Trigger2 = 7; //Pin digital 7 para el Trigger2 del sensor
const int Echo2 = 8; //Pin digital 8 para el Echo2 del sensor
const int ledPIN_G = 6;
const int ledPIN_Y = 10;
const int ledPIN_R = 9;
const int pinBuzzer = 11;
long t1, t2; //tiempo que tarda en llegar el eco
long d1, d2; //distancia en centimetros
int media = 5;
int alta = 10;
int cont;
int muro;
void mostrar() {
Serial.print("Han pasado: ");
Serial.print(cont);
Serial.println(" personas.");
// Limpiar buffer
display.clearDisplay();
// Tamaño del texto
display.setTextSize(5);
// Color del texto
display.setTextColor(SSD1306_WHITE);
// Posición del texto
display.setCursor(54, 20);
// Escribir texto
display.println(cont);
// Enviar a pantalla
display.display();
if (cont < 5){
digitalWrite(ledPIN_G , HIGH);
digitalWrite(ledPIN_Y , LOW);
digitalWrite(ledPIN_R , LOW);
}
else if (cont >= media && cont < alta){
digitalWrite(ledPIN_G , LOW);
digitalWrite(ledPIN_Y , HIGH);
digitalWrite(ledPIN_R , LOW);
}
else {
digitalWrite(ledPIN_G , LOW);
digitalWrite(ledPIN_Y , LOW);
digitalWrite(ledPIN_R , HIGH);
}
delay(2000);
}

void setup() {
Serial.begin(9600);//iniciailzamos la comunicación

pinMode(Trigger1, OUTPUT); //pin como salida
pinMode(Echo1, INPUT); //pin como entrada

digitalWrite(Trigger1, LOW); //Inicializamos el pin con 0
digitalWrite(Trigger1, HIGH);

delayMicroseconds(10); //Enviamos un pulso de 10us

digitalWrite(Trigger1, LOW);

t1 = pulseIn(Echo1, HIGH); //obtenemos el ancho del pulso1

pinMode(Trigger2, OUTPUT); //pin como salida
pinMode(Echo2, INPUT); //pin como entrada

digitalWrite(Trigger2, LOW); //Inicializamos el pin con 0
digitalWrite(Trigger2, HIGH);

delayMicroseconds(10); //Enviamos un pulso de 10us

digitalWrite(Trigger2, LOW);

t2 = pulseIn(Echo2, HIGH); //obtenemos el ancho del pulso2

d1 = t1/59; //escalamos el tiempo a una distancia en cm
d2 = t2/59; //escalamos el tiempo a una distancia en cm
Serial.print("Distancia inicial muro: ");
muro = min(d1,d2);
Serial.println(muro);
cont = 0;

digitalWrite(ledPIN_G , HIGH);
digitalWrite(ledPIN_Y , LOW);
digitalWrite(ledPIN_R , LOW);

if (!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) {
Serial.println("No se encuentra la pantalla OLED");
}
display.clearDisplay();
display.display();
}

void loop()
{
digitalWrite(Trigger1, HIGH);
delayMicroseconds(10); //Enviamos un pulso de 10us
digitalWrite(Trigger1, LOW);

t1 = pulseIn(Echo1, HIGH); //obtenemos el ancho del pulso

digitalWrite(Trigger2, HIGH);
delayMicroseconds(10); //Enviamos un pulso de 10us
digitalWrite(Trigger2, LOW);

t2 = pulseIn(Echo2, HIGH); //obtenemos el ancho del pulso

d1 = t1/59; //escalamos el tiempo a una distancia en cm
d2 = t2/59; //escalamos el tiempo a una distancia en cm

//Serial.println(d2);

if (d1 < muro-8){
Serial.println("Ha pasado alguien sensor 1.");
cont = cont + 1;
if (cont >= alta){
tone(pinBuzzer, 320, 200);
}
mostrar();
}
else if (d2 < muro-8){
Serial.println("Ha pasado alguien sensor 2.");
cont = cont - 1;
mostrar();
}
delay(100); //Hacemos una pausa de 100ms
}

Su publicacion se MUEVE a su ubicacion actual ya que es mas adecuada.

Moderador:
Por favor, lee las Normas del foro y edita tu código/error usando etiquetas de código.
Ve a edición, luego selecciona todo el código que has publicado, lo cortas y click en (<CODE/>)
Agrega también auto formato con tu IDE para que luzca como corresponde, es decir con separación desde margen izquierdo que permite mejor lectura.




Si posteas en el foro en inglés usa ese idioma.
Si escribes en español debes usar el foro Arduino en español

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.