ESP32-WROOM-32 met Oled SSD1306 en seriële monitor

Software vragen voor ESP chip familie
Berichten: 47
Geregistreerd: 02 Dec 2018, 12:19

ESP32-WROOM-32 met Oled SSD1306 en seriële monitor

Berichtdoor Looitje » 24 Nov 2022, 12:35

Goede middag, ik gebruik volgende schets:
/*
GIOP22 I2C SCL
GIOP21 I2C SDA
*/

#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>

#define SCREEN_WIDTH 128 // OLED width, in pixels
#define SCREEN_HEIGHT 64 // OLED height, in pixels

// create an OLED display object connected to I2C
Adafruit_SSD1306 oled(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, +1);

#define outputB 2 // DATA signal
#define outputA 4 // CLOCK signal

int counter = 0;
int aState;
int aLastState;

void setup() {
pinMode (outputA,INPUT);
pinMode (outputB,INPUT);

Serial.begin (115200);
Serial.print("Position: ");
Serial.println(counter);
// Reads the initial state of the outputA
aLastState = digitalRead(outputA);

// initialize OLED display with I2C address 0x3C
if (!oled.begin(SSD1306_SWITCHCAPVCC, 0x3C)) {
Serial.println(F("failed to start SSD1306 OLED"));
while (1);
}

delay(2000); // wait two seconds for initializing
oled.clearDisplay(); // clear display

oled.setTextSize(5); // set text size
oled.setTextColor(WHITE); // set text color
oled.setCursor(0, 10); // set position to display
oled.println(counter); // set text
oled.display(); // display on OLED
}

void loop() {
aState = digitalRead(outputA); // Reads the "current" state of the outputA
// If the previous and the current state of the outputA are different, that means a Pulse has occured
if (aState != aLastState){
// If the outputB state is different to the outputA state, that means the encoder is rotating clockwise
if (digitalRead(outputB) != aState) {
counter ++;
} else {
counter --;
}
Serial.print("Position: ");
Serial.println(counter);

oled.clearDisplay(); // clear display
//oled.setTextSize(3); // set text size
//oled.setTextColor(WHITE); // set text color
oled.setCursor(0, 10); // set position to display
oled.println(counter); // set text
oled.display(); // display on OLED

}
aLastState = aState; // Updates the previous state of the outputA with the current state
}

Werkt wel met de oled display en de rotary encoder KY-040 maar op de seriële monitor komt niets.
Ik veronderstel dat dit komt doordat de display aangesloten is op poorten G21 en G22.
Hoe kan ik de display en de seriële monitor toch laten samenwerken?
Alvast bedankt en vriendelijke groet.
Met vriendelijke groet, Looitje

Advertisement

Berichten: 4096
Geregistreerd: 16 Okt 2013, 14:31
Woonplaats: s hertogenbosch

Re: ESP32-WROOM-32 met Oled SSD1306 en seriële monitor

Berichtdoor shooter » 24 Nov 2022, 17:57

als je een mega gebruikt zijn het 20 en 21 of gebruik je iets anders, en denk dat er wat fout gaat met de timers
paul deelen
shooter@home.nl

Berichten: 4096
Geregistreerd: 16 Okt 2013, 14:31
Woonplaats: s hertogenbosch

Re: ESP32-WROOM-32 met Oled SSD1306 en seriële monitor

Berichtdoor shooter » 24 Nov 2022, 17:57

als je een mega gebruikt zijn het 20 en 21 of gebruik je iets anders, en denk dat er wat fout gaat met de timers
paul deelen
shooter@home.nl

Berichten: 47
Geregistreerd: 02 Dec 2018, 12:19

Re: ESP32-WROOM-32 met Oled SSD1306 en seriële monitor

Berichtdoor Looitje » 25 Nov 2022, 14:41

Goedemiddag Shooter, ik gebruik de ESP32-WROOM-32 en dus de poorten 21 en 22 om de oled display aan te sturen en die doet het prima.
Maar de seriële monitor blijft leeg.
Ik denk dat het komt omdat ik bibliotheek #include <Adafruit_SSD1306.h> gebruik en daar de poorten 21 en 22 ingesteld zullen staan.
Ik denk dat ik om de seriële monitor aan te sturen andere poorten moet gebruiken maar hoe moet ik de schets of de bibliotheek aanpassen?
Met vriendelijke groet, Looitje

Ondertussen heb ik de fout gevonden,
de regel:
Adafruit_SSD1306 oled(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, +1);
moet zijn:
Adafruit_SSD1306 oled(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1);
dus die +1 achter &Wire moet -1 zijn, probleem opgelost
Met vriendelijke groet, Looitje

Terug naar ESP Software

Wie is er online?

Gebruikers in dit forum: Geen geregistreerde gebruikers en 1 gast