INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.

Antwort schreiben 
 
Themabewertung:
  • 0 Bewertungen - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
ESP32 Board und LCDKeypadShield
04.01.2021, 22:50
Beitrag #1
ESP32 Board und LCDKeypadShield
Hallo zusammen,

seit einigen Tagen habe ich ein ESP32 D1 R32 Board (https://www.amazon.de/gp/product/B08BV3L92G ) und die ersten Minisketches gehen auch, wobei man schon einiges anpassen muss um von Uno auf ESP umzusteigen....aber gut.

Daneben habe ich ein LCDKeypadShield (https://www.amazon.de/gp/product/B07DDHG93C ) und nach ein wenig Recherche und Vergleiche bin ich mir sicher, dass die vom Shield verwendeten Pins beim UNO und beim ESP gleich sind (gleich sein müssten).

Aber oh Graus, wenn ich das Sketch auf den ESP hochlade (ohne gestecktes Shield, ich weiß), und dann das Shield wieder aufstecke, passiert nix.
Das gleiche Sketch läuft auf meinem UNO einwandfrei

Also wo ist mein Denkfehler oder Problem oder oder oder?

Danke schon mal....

Kai

Code:
#include <LiquidCrystal.h>

LiquidCrystal lcd(8, 9, 4, 5, 6, 7);

int Taster = 0;
int Analogwert = 0;
#define Tasterrechts 0
#define Tasteroben 1
#define Tasterunten 2
#define Tasterlinks 3
#define Tasterselect 4
#define KeinTaster 5

int Tasterstatus()
{
    Analogwert = analogRead(A0);
    if (Analogwert > 1000) return KeinTaster;
    if (Analogwert < 50) return Tasterrechts;
    if (Analogwert < 195) return Tasteroben;
    if (Analogwert < 380) return Tasterunten;
    if (Analogwert < 555) return Tasterlinks;
    if (Analogwert < 790) return Tasterselect;
    return KeinTaster;
}

void setup()
{
    lcd.begin(16, 2);
    lcd.setCursor(0,0);
    lcd.print("Schau mer moi");
}

void loop()
{
    lcd.setCursor(12,1);
    lcd.print(millis()/1000);
    lcd.setCursor(0,1);
    Taster = Tasterstatus();
    switch (Taster)
    {
        case Tasterrechts:
        {
            lcd.print("Rechts      ");
            break;
        }
        case Tasterlinks:
        {
            lcd.print("Links       ");
            break;
        }
        case Tasteroben:
        {
            lcd.print("Oben        ");
            break;
        }
        case Tasterunten:
        {
            lcd.print("Unten       ");
            break;
        }
        case Tasterselect:
        {
            lcd.print("SELECT      ");
            break;
        }
        case KeinTaster:
        {
            lcd.print("Keine Taste ");
            break;
        }
    } //switch-case Befehl beenden
}
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
04.01.2021, 23:10 (Dieser Beitrag wurde zuletzt bearbeitet: 04.01.2021 23:11 von nbk83.)
Beitrag #2
RE: ESP32 Board und LCDKeypadShield
Moin Kai,
als erstes würde ich mal serielle ausgaben überall reinsetzen, wo auch eine Displayausgabe erfolgen soll, um zu sehen, ob er wirklich nix macht oder nur ein bisschen nix.
Die (10Bit-UNO) analogRead-Werte musst Du in die 12Bit vom ADC des ESP's anpassen für die Tasterauswertung.
Und dann weiss ich nicht, ob das Display überhaupt mit den 3,3V Signalen arbeiten kann oder nur mit 5V.
Gruß Jan
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
04.01.2021, 23:12
Beitrag #3
RE: ESP32 Board und LCDKeypadShield
Pin 0 beim ESP heißt GPIO 0, nicht D0, wie beim Arduino. Ebenso für die LCD.

Gruß Tommy

"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
05.01.2021, 12:15
Beitrag #4
RE: ESP32 Board und LCDKeypadShield
Moin zusammen.

@Jan:
Stimmt, dass ich mit der Serial Ausgabe nicht drauf gekommen bin...Dodgy

Und siehe da: Reboot-Schleife

Also nochmals recherchiert (und vermutlich das Benamsungs-Chaos begriffen) neu verkabelt und es gibt neue Erkenntnisse, wobei ich das Shield jetzt mit Kabeln am ESP anschließe.
1) Ist das Shield mit 5V versorgt, kann die IDE das Sketch nicht hochladen
2) Ist das Shield mit 3,3V versorgt (und nach dem Ermitteln der richtigen Analogwerte) werden die Taster (bis auf SELECT) erkannt, die Hintergrundbeleuchtung des LCDs ist an, aber sonst kommt nix (vermutlich wegen 3,3V an den digitalen Ports)
3) Shield stromlos -> IDE kann hochladen -> Shield mit 5V
Analogwerte (natürlich andere, aber ermittelt) werden richtig für alle (!) Tasten ausgegeben, aber kryptische Zeichen auf dem LCD.

Vergleichstest am UNO:
- Mit 5V alles super
- Mit 3,3V Tasten (mit vorher richtig ermittelten Werten) werden alle(!) erkannt, aber Display zeigt nix an (außer Hintergrundbeleuchtung)

Ich werde mich jetzt auf Fall 3 konzentrieren und in meiner Bastelkiste den Pegelwandler 3,3 auf 5 V suchen, mal sehen was passiert.

Eines ist aber sicher: der ESP ist nur vom Formfaktor identisch, die Pins woanders.
So ist A0 bei ESP da, wo A4 beim UNO ist.
Wo beim UNO A0 ist, ist beim ESP A2 vom zweiten ADC (welcher aber bei aktiven WLAN eh nicht geht).

Wers mal nachspielen will, hier das neue Sketch (mit allen ermittelten Analogwerten als defines).
Code:
#include <LiquidCrystal.h>

// Pins für Uno
#define D4 4
#define D5 5
#define D6 6
#define D7 7
#define D8 8
#define D9 9

// Pins für ESP
/*
#define D4 17
#define D5 16
#define D6 27
#define D7 14
#define D8 12
#define D9 13
*/

// Analogreferenzwerte für UNO 3,3
#define rawk 650
#define rawr 50
#define rawo 100
#define rawu 240
#define rawl 350
#define raws 500

// Analogreferenzwerte für UNO 5V
/*
#define rawk 1000
#define rawr 50
#define rawo 195
#define rawu 380
#define rawl 555
#define raws 790
*/

// Analogreferenzwerte für ESP 3,3V
/*
#define rawk 4000
#define rawr 50
#define rawo 400
#define rawu 1100
#define rawl 1800
#define raws 3000
*/

// Analogreferenzwerte für ESP 5V
/*
#define rawk 4000
#define rawr 50
#define rawo 650
#define rawu 1700
#define rawl 2700
#define raws 3000
*/

LiquidCrystal lcd(D8, D9, D4, D5, D6, D7);

// erstellen einiger Variablen
int Taster = 0;
int Analogwert = 0;
#define Tasterrechts 0
#define Tasteroben 1
#define Tasterunten 2
#define Tasterlinks 3
#define Tasterselect 4
#define KeinTaster 5


// Ab hier wird ein neuer Programmblock mit dem Namen "Tasterstatus" erstellt. Hier wird ausschließlich geprüft, welcher Taster gedrückt ist.
int Tasterstatus()
{
Analogwert = analogRead(A0); // Auslesen der Taster am Analogen Pin A0.
Serial.print("Analogwert: ");
Serial.println(Analogwert);
if (Analogwert > rawk) return KeinTaster;
if (Analogwert < rawr) return Tasterrechts;
if (Analogwert < rawo) return Tasteroben;
if (Analogwert < rawu) return Tasterunten;
if (Analogwert < rawl) return Tasterlinks;
if (Analogwert < raws) return Tasterselect;

return KeinTaster; // Ausgabe wenn kein Taster gedrückt wurde.
}
// Hier wird der Programmblock "Tasterstatus" abeschlossen.


void setup()
{
  Serial.begin(115200);
  lcd.begin(16, 2); // Starten der Programmbibliothek.
  lcd.setCursor(0,0); // Angabe des Cursorstartpunktes oben links.
  lcd.print("Moin Chef"); // Ausgabe des Textes "Nachricht".
  Serial.print("Moin Chef");
}

void loop()
{
  lcd.setCursor(12,1); // Bewegt den Cursor in Zeile 2 (Line0=Zeile1 und Line1=Zeile2) and die Stelle "12".
  lcd.print(millis()/1000); // Zeigt die Sekunden seit Start des Programms in Sekunden an.
  lcd.setCursor(0,1); // Bewegt den Cursor and die Stelle "0" in Zeile 2.
  Serial.println(millis()/1000);
  Taster = Tasterstatus(); //Hier springt der Loop in den oben angegebenen Programmabschnitt "Tasterstatus" und liest dort den gedrückten Taster aus.

  switch (Taster) // Abhängig von der gedrückten Taste wird in dem folgenden switch-case Befehl entschieden, was auf dem LCD angezeigt wird.
  {
    case Tasterrechts: // Wenn die rechte Taste gedrückt wurde...
    {
      lcd.print("Rechts      ");
      Serial.println("Rechts");
      break;
    }
    case Tasterlinks:
    {
      lcd.print("Links       ");
      Serial.println("Links");
      break;
    }
    case Tasteroben:
    {
      lcd.print("Oben        ");
      Serial.println("Oben");
      break;
    }
    case Tasterunten:
    {
      lcd.print("Unten       ");
      Serial.println("Unten");
      break;
    }
    case Tasterselect:
    {
      lcd.print("SELECT      ");
      Serial.println("Select");
      break;
    }
    case KeinTaster:
    {
      lcd.print("Keine Taste ");
//      Serial.println("Keine Taste");
      break;
    }
  } //switch-case Befehl beenden
} //Loop beenden
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
05.01.2021, 13:48 (Dieser Beitrag wurde zuletzt bearbeitet: 05.01.2021 13:50 von nbk83.)
Beitrag #5
RE: ESP32 Board und LCDKeypadShield
Könntest Du mal versuchen die Zeile LiquidCrystal lcd(D8, D9, D4, D5, D6, D7); in LiquidCrystal lcd(12, 13, 17, 16, 27, 14); zu ändern?
(das müssten dann örtlich die Pins wie beim UNO sein)
Gruß Jan
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
05.01.2021, 14:08
Beitrag #6
RE: ESP32 Board und LCDKeypadShield
(05.01.2021 13:48)nbk83 schrieb:  Könntest Du mal versuchen die Zeile LiquidCrystal lcd(D8, D9, D4, D5, D6, D7); in LiquidCrystal lcd(12, 13, 17, 16, 27, 14); zu ändern?
(das müssten dann örtlich die Pins wie beim UNO sein)
Gruß Jan

Hab ich ja bereits, auch wenns im hier gezeigten Sketch nicht ersichtlich ist.
Damit ich nicht andauernd alles neu eintippen muss habe ich für beide Boards sowohl die Pins als auch die analogen Werte "defined" und je nach Variante Board / Spannung wird kommentiert bzw. auskommentiert.

Ergenis: siehe Ergebnisse 2 und 3
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
05.01.2021, 14:44
Beitrag #7
RE: ESP32 Board und LCDKeypadShield
Hallo,
hast du das Shield schon am Laufen ?

Ich vermute mal nein. Und ich vermute mal, du bekommst es auch nicht zum Laufen.
Das Display ist für 5Volt Betriebsspannung gebaut und funktioniert nicht so einfach an 3,3Volt. Die meisten, mir bekannten Displays mit dem Treiber-IC laufen def. nicht mit 3,3 Volt.

Nicht die Pinnummern sind das Problem, sondern die Spannung.

Es gibt spezielle Displays mit dem Treiber, die noch zusätzlich einen On-Board Spannungswandler drauf haben. Dieser erzeugt aus den 3,3V die nötigen 5Volt fürs Display. Das wird vermutlich auf deinem Display nicht drauf sein.

Mein Tipp:
Bevor du den ESP32 zerstörst, besorge dir ein Display für 3,3Volt und das wird funktionieren. Am besten ein I2C-Display und dann neu anfangen.

Gruß Dieter

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. Cool
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
05.01.2021, 14:48
Beitrag #8
RE: ESP32 Board und LCDKeypadShield
(05.01.2021 14:44)hotsystems schrieb:  Hallo,
hast du das Shield schon am Laufen ?

Ich vermute mal nein. Und ich vermute mal, du bekommst es auch nicht zum Laufen.
Das Display ist für 5Volt Betriebsspannung gebaut und funktioniert nicht so einfach an 3,3Volt. Die meisten, mir bekannten Displays mit dem Treiber-IC laufen def. nicht mit 3,3 Volt.

Nicht die Pinnummern sind das Problem, sondern die Spannung.

Es gibt spezielle Displays mit dem Treiber, die noch zusätzlich einen On-Board Spannungswandler drauf haben. Dieser erzeugt aus den 3,3V die nötigen 5Volt fürs Display. Das wird vermutlich auf deinem Display nicht drauf sein.

Mein Tipp:
Bevor du den ESP32 zerstörst, besorge dir ein Display für 3,3Volt und das wird funktionieren. Am besten ein I2C-Display und dann neu anfangen.

Mein ESP-Board liefert 3,3 und 5V.
Die 5V lege ich an das LCD-Keypad-Shield an und vom Problem abgesehen, dass ich bei "versorgten" Shield das Sketch nicht uploaden kann (Lösung: abklemmen, hochladen, anklemmen, resetten) ist ja alles gut, bis auf die kryptrischen Symbole.
Deswegen will ich ja einen Pegelwandler zwischen den digitalen Ausgängen des Boards (liefern 3,3V) und den Eingängen des Shields (verlangen 5V) schalten.
Muss ihn nur noch finden....Cool
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  Fehler beim Kompilieren für das Board ESP32 Dev Module. FoxFactoy 17 751 06.03.2021 21:56
Letzter Beitrag: bm-magic
Question esp32 Cam Blynk Busterflex 2 333 04.03.2021 19:23
Letzter Beitrag: Tommy56
  ESP32 Lora Wetterdaten 4711engel 27 1.565 01.03.2021 20:14
Letzter Beitrag: Bitklopfer
  ESP32 / DeepSleep / Akkulaufzeit ? Steinspiel 23 1.011 27.02.2021 20:20
Letzter Beitrag: Steinspiel
  ESP32 über OTA luemar 67 3.871 23.02.2021 22:55
Letzter Beitrag: hotsystems
  ESP32 und HC05 gk_1 5 829 22.02.2021 10:53
Letzter Beitrag: gk_1
  ESP32: Sensor via GPIO deaktivieren DivingJoe 21 1.309 18.02.2021 22:15
Letzter Beitrag: hotsystems
  Fehler beim Kompilieren für das Board Schnigge5 13 768 17.02.2021 00:03
Letzter Beitrag: rev.antun
  Erfahrungen mit ESP32 und WLAN/MQTT oder was ich beobachtet habe... Arduino4Fun 22 2.562 08.02.2021 15:34
Letzter Beitrag: ardu_arne
  ESP32 BT Master MarcelN 1 1.098 08.02.2021 01:34
Letzter Beitrag: Corvus

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste