Du hast wahrscheinlich mall die ESP Core installiert, seit der Zeit ist der Compiler sehr empfindlich
Ich habe schon einiges mt dem ADS1115 getestet. Meist mit nem Oled, war einfacher. Aber ich werde es in kürze auch mit einem TFT testen.
Daher hätte ich gern gewusst, welchen Controller der TO verwendet , um ähnliche Verhältnisse zu schaffen.
Aber wer nicht will, der hat schon.
Da kommt doch gleich die Aussage: "wurde nur zum testen rausgenommen"
Seit den letzten ESP-cores würde das nicht mehr als warnung durchgehen, wenns auf nem ESP compiliert.
Aber ich sehe ja schon nicht, was da angezeigt werden soll, denn die Variable ist nicht mal gefüllt wurde...
Stimmt das sollte jedoch angezeigt werden
tft.setTextColor(ST77XX_WHITE);
tft.setTextSize(2);
tft.print("Voltage: ");
Das unten sollte tun
#include <Adafruit_ST7789.h> // Hardware-spezifische Bibliothek für ST7789
#include <SPI.h>
#include <Adafruit_ADS1X15.h>
Adafruit_ADS1115 ads; /* Use this for the 16-bit version */
// Display
#define TFT_CS 5
#define TFT_RST 7
#define TFT_DC 4
Adafruit_ST7789 tft = Adafruit_ST7789(TFT_CS, TFT_DC, TFT_RST);
void setup() {
Serial.begin(9600);
if (!ads.begin()) {
Serial.println("Failed to initialize ADS.");
while (1);
}
tft.init(240, 280); // Init ST7789 280x240
tft.fillScreen(ST77XX_BLACK);
tft.setRotation(2);
tft.invertDisplay(true);
}
void loop() {
int16_t adc0;//, adc1;
float volts0;//, volts1;
adc0 = ads.readADC_SingleEnded(0);
//adc1 = ads.readADC_SingleEnded(1);
volts0 = ads.computeVolts(adc0);
//volts1 = ads.computeVolts(adc1);
// Display aktualisieren
tft.setCursor(20, 20);
tft.setTextColor(ST77XX_WHITE);
tft.setTextSize(2);
// tft.print("Voltage: ");
// tft.print(volts0, 1);
//tft.println(" V");
Serial.print("U = ");
Serial.print(volts0, 1);
Serial.println(" V ");
delay(1000); // 1 Sekunde warten
}
Nein.
Auch Du versuchst den Inhalt eine Variablen anzuzeigen, die nicht initialisiert und mit keinem Wert gefüllt ist
Evtl. bricht der Upload ja schon mit einer Fehlermeldung ab und sieht diese nicht, weil nicht aktiviert ist.
Aber der Text "Voltage:" sollte zu sehen sein, wenn ein Upload richtig funktioniert.
Bei fehlerhaftem Code ist nicht ausgeschlossen, dass da irgendwas unvorhergesehenes passiert.
Ich würd das immer erstmal so hinbiegen, dass es sauber kompiliert und dann sehen, wie man an die vollständige Funktion kommt.
Nee
Jedoch der ganzer Sketch ist falsch abgekupfert wie ich sehe. Jetzt sollte jedoch was angezeigt werden, wen die Lib nicht gegeneinander arbeiten.
vorher sollte Mindens "Voltage" in Weis erschien.
Bei nicht lesbaren Werten blockt der ADC nicht.
Jedoch so lange @stefangem sitzt in der Ecke und hat Verbot zum Antworten ist Ende für mich, wollte schon was aufbauen, nur mit ESP32,
Das stimmt allerdings.
Was wird mit diesem Code auf dem SerMon ausgegeben?
#include <Adafruit_ST7789.h> // Hardware-spezifische Bibliothek für ST7789
#include <SPI.h>
#include <Adafruit_ADS1X15.h>
Adafruit_ADS1115 ads; /* Use this for the 16-bit version */
// Display
#define TFT_CS 5
#define TFT_RST 7
#define TFT_DC 4
Adafruit_ST7789 tft = Adafruit_ST7789(TFT_CS, TFT_DC, TFT_RST);
int16_t adc0;
float volts0;
void setup()
{
Serial.begin(9600);
Serial.println(F("Start ..."));
if (!ads.begin())
{
Serial.println("Failed to initialize ADS.");
while (1);
}
tft.init(240, 280); // Init ST7789 280x240
tft.fillScreen(ST77XX_BLACK);
tft.setRotation(2);
tft.invertDisplay(true);
Serial.println(F("Ende Setup"));
}
void loop()
{
adc0 = ads.readADC_SingleEnded(0);
Serial.print(F("ADC: "));
Serial.println(adc0);
//adc1 = ads.readADC_SingleEnded(1);
Serial.print(F("Voltage: "));
volts0 = ads.computeVolts(adc0);
Serial.println(volts0);
//volts1 = ads.computeVolts(adc1);
// Display aktualisieren
tft.setCursor(20, 20);
tft.setTextColor(ST77XX_WHITE);
tft.setTextSize(2);
tft.print("Voltage: ");
tft.print(volts0, 1);
tft.println(" V");
delay(1000); // 1 Sekunde warten
}
Jetzt sehe noch was
Im Setup
tft.fillScreen(ST77XX_BLACK);
tft.setRotation(2);
tft.invertDisplay(true);
im Loop
tft.setCursor(20, 20);
tft.setTextColor(ST77XX_WHITE);
tft.setTextSize(2);
tft.print("Voltage: ");
weis auf weis schreiben na ja
Für @stefangem wen man schwarz invertiert wird es weis
Bei Color "zB. tft.setTextColor(ST77XX_RED); " kann man invertieren, um was hervorheben, es wird dennoch sichtbar.
Dazu ist das nicht das erste Display des TO.
So, Kindergeburtstag hat mich aufgehalten
habe jetzt mal alle librarys raus geschmissen und neu installiert.
ESP32 Core ist auch weg.
nur noch ADS Library ist jetzt von Robb Tilarar und die Adafruit gfx und st7789 library drin
Ich nutze ein selbst entwickeltes Board wo ich den Atmega 328p nehme also komplett identisch wie der UNO auch mit demselben Bootloader.
Es läuft alles mit 5V
Display verträgt 3,3- 5V ( 1,69" mit 240 x 280)
hab den Code jetzt mal abgeändert:
#include <Adafruit_ST7789.h> // Hardware-spezifische Bibliothek für ST7789
#include <SPI.h>
#include "ADS1X15.h"
ADS1115 ADS(0x48);
// Display
#define TFT_CS 5
#define TFT_RST 7
#define TFT_DC 4
Adafruit_ST7789 tft = Adafruit_ST7789(TFT_CS, TFT_DC, TFT_RST);
void setup() {
//Serial.begin(9600);
Wire.begin();
ADS.begin();
tft.init(240, 280); // Init ST7789 280x240
tft.fillScreen(ST77XX_WHITE);
tft.setRotation(2);
}
void loop() {
tft.setCursor(20, 20);
tft.setTextSize(2);
tft.setTextColor(ST77XX_BLACK);
tft.print("Spannung");
delay (5000);
ADS.setGain(0);
int16_t Messwert = ADS.readADC(0);
float f = ADS.toVoltage(1); // voltage factor
tft.fillScreen(ST77XX_WHITE);
tft.setCursor(50, 20);
tft.setTextSize(2);
tft.setTextColor(ST77XX_BLACK);
tft.print(Messwert * f,1);
delay (5000);
}
auf den Display wird spannung angezeigt und nach den 5s delay nichts weiter.
hab den fillscreen rein gesetzt damit ich sehe das sich was verändert.
Aber nichts ändert sich.
Hab die ADS Bibliothek auch einzeln getestet, werte werden abgerufen.
es kommt auch keine Fehlermeldung im Compiler und es wird auch sauber rauf geladen.
NEIN...das TFT verträgt nur 3,3Volt.
Wenn es bisher überlebt hat, hast du Glück.
Ok
Das mit der AZ Beschreibung ist misst hoch² = typischer AZ Unsinn
Hie stecht das wichtigste
Es ist ganz einfach alle wirklich alle TFT LCD arbeiten intern mit 3,3V
damit die 5V Tolerant sind fehlt ein IC, ein Level Shifter was reduziert die 5V auf 3,3V.
Fast alle Verkäufer unterschlagen das den das Display arbeitet auch mit 5V Signalen (Pegel), jedoch wie lange steht in den Sternen.
hier überschreibst du alles = du löscht das ganze Display,
ändere
tft.fillScreen(ST77XX_WHITE);
auf
// tft.fillScreen(ST77XX_WHITE);
Dein Spannungsproblem hat erst mal nichts mit dem Fehler zu tun. Das müssen wir aktuell noch prüfen woran das liegt.
Anschließend wird doch text in schwarz geschrieben.
Das sollte doch klappen.