Hallöchen liebe Bastler und Tüftler
ich möchte mit meinem UNO ein Heatbed ansteuern und ein kleines OLED Display auf welchem die Soll und Ist Temperatur angezeigt wird. Zusätzlich soll mit zwei Tastern die Soll- Temperatur verändert werden können.
Nun zu meinem eigentlichen Problem: Code wurde geschrieben, Display mit I2C Scanner gescannt Adresse: 0x3C (wird im Code als Fehler ausgegeben)
kann mir jemand helfen was hierbei Falsch sein soll?
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
// Pin, an dem der NTC-Sensor angeschlossen ist
const int ntcPin = A0;
// Pin für Taster zur Erhöhung und Verringerung der Soll-Temperatur
const int increaseTempButton = 2; // Verbinden Sie diesen mit dem Pin 2
const int decreaseTempButton = 3; // Verbinden Sie diesen mit dem Pin 3
// Pin für das Relais, um das Heizelement zu steuern
const int relayPin = 4; // Verbinden Sie dieses mit dem Steuerpin des Relais
// Widerstand des NTC-Sensors bei 25 Grad Celsius (in Ohm)
const double ntcResistance = 100000.0;
// Nennwiderstand des NTC-Sensors (in Ohm)
const double ntcNominal = 100000.0;
// Temperatur bei der der NTC-Sensor kalibriert wurde (in Grad Celsius)
const double ntcTempNominal = 25.0;
// Beta-Koeffizient des NTC-Sensors
const double beta = 3950.0;
// Display-Objekt
Adafruit_SSD1306 display(128, 64, &Wire);
// Soll-Temperatur
double targetTemperature = 25.0;
void setup() {
Wire.begin();
display.begin(SSD1306_I2C_ADDRESS, 0x3C); // Passen Sie die I2C-Adresse ggf. an
display.display();
delay(2000); // Kurze Verzögerung für den Display-Start
// Begrüßungstext auf dem Display
display.clearDisplay();
display.setTextSize(1);
display.setTextColor(SSD1306_WHITE);
display.setCursor(0, 0);
display.println("Soll-Temperatur:");
display.display();
delay(2000);
// Taster-Pins als Eingänge konfigurieren
pinMode(increaseTempButton, INPUT_PULLUP);
pinMode(decreaseTempButton, INPUT_PULLUP);
// Relais-Pin als Ausgang konfigurieren
pinMode(relayPin, OUTPUT);
digitalWrite(relayPin, LOW); // Relais ausschalten
}
void loop() {
// Taster für die Soll-Temperatur ändern
if (digitalRead(increaseTempButton) == LOW) {
targetTemperature += 1.0; // Temperatur erhöhen um 1 Grad
delay(200); // Entprellzeit für den Taster
}
if (digitalRead(decreaseTempButton) == LOW) {
targetTemperature -= 1.0; // Temperatur verringern um 1 Grad
delay(200); // Entprellzeit für den Taster
}
// Lese den ADC-Wert vom NTC-Sensor
int adcValue = analogRead(ntcPin);
// Berechne die Widerstand des NTC-Sensors
double ntcResistance = 10000.0 / (1023.0 / adcValue - 1.0);
// Berechne die Temperatur in Grad Celsius
double steinhart = ntcResistance / ntcNominal; // (R/Ro)
steinhart = log(steinhart); // ln(R/Ro)
steinhart /= beta; // 1/B * ln(R/Ro)
steinhart += 1.0 / (ntcTempNominal + 273.15); // + (1/To)
steinhart = 1.0 / steinhart; // Invertieren
steinhart -= 273.15; // Umrechnen in Grad Celsius
// Anzeige der Soll- und Ist-Temperatur auf dem Display
display.clearDisplay();
display.setTextSize(1);
display.setTextColor(SSD1306_WHITE);
display.setCursor(0, 0);
display.print("Soll-Temp: ");
display.print(targetTemperature, 1); // Zeige Soll-Temperatur auf 1 Dezimalstelle
display.print(" C");
display.setCursor(0, 16);
display.print("Ist-Temp: ");
display.print(steinhart, 2); // Zeige Ist-Temperatur auf 2 Dezimalstellen
display.print(" C");
display.display();
// Heizelement steuern
if (steinhart < targetTemperature) {
digitalWrite(relayPin, HIGH); // Relais einschalten
} else {
digitalWrite(relayPin, LOW); // Relais ausschalten
}
delay(1000); // Eine Sekunde warten
}
Fehlermeldung:
'SSD1306_I2C_ADDRESS' was not declared in this scope