ESP32-WROOM-32 met Oled SSD1306 en seriële monitor
4 berichten
• Pagina 1 van 1
ESP32-WROOM-32 met Oled SSD1306 en seriële monitor
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.
/*
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
Re: ESP32-WROOM-32 met Oled SSD1306 en seriële monitor
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
shooter@home.nl
Re: ESP32-WROOM-32 met Oled SSD1306 en seriële monitor
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
shooter@home.nl
Re: ESP32-WROOM-32 met Oled SSD1306 en seriële monitor
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
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
4 berichten
• Pagina 1 van 1
Wie is er online?
Gebruikers in dit forum: Geen geregistreerde gebruikers en 1 gast