Guten Abend,
freut mich das ich hier sein darf um mein Projekt voran zu bringen und mehr über Arduino und die Programmiersprache zu lernen. Im Anhang ist ein Projekt einer PID Temperaturreglung mit Ampel Temperaturüberwachung enthalten. Die beiden Schalter für Temperatur 1 und Temperatur 2 vorgesehen. Die Schalter müssen für Stufe 2 beide aktiviert werden. Dabei komme ich schon zum Problem. Wenn Schalter 1 eingeschaltet wird flackert die LED HEAT (gelb, rechts) und hat nicht konstant 3 Volt.
Ich weiß der Complier wird einige fehler ausspucken aber das Projekt ist auf dem Steckbrett vor mir und funktioniert. Lediglich das flackern bekomme ich nicht weg. Wenn jemand Zeit hat und es auf Tinkercad o.ä. nachbauen kann wäre es wohl am Sinnvollsten.
Vielen Dank für eure Zeit
Grüße
CODE
int SW95 = 7;
int SW130 = 6;
int green = 5;
int yellow = 4;
int red = 3;
int HEAT = 2;
int buttonState1 = 0;
int buttonState2 = 0;
int TMP36 = A0;
int sensorwert;
int temperatur = 0;
int t=500; //
void setup() {
pinMode(HEAT, OUTPUT);
pinMode(SW95, INPUT_PULLUP);
pinMode(SW130, INPUT_PULLUP);
pinMode (green, OUTPUT);
pinMode (yellow, OUTPUT);
pinMode (red, OUTPUT);
Serial.begin(9600);
}
void loop()
{
sensorwert=analogRead(TMP36);
temperatur= map(sensorwert, 0, 410, -50, 150);
delay(t);
Serial.print(temperatur);
Serial.println(" Grad Celsius");
buttonState1 = digitalRead(SW95);
buttonState2 = digitalRead(SW130);
digitalWrite(green, HIGH == temperatur<=22);
digitalWrite(yellow, HIGH == temperatur>=23&&temperatur<=25);
digitalWrite(red, HIGH == temperatur>=26);
if
(buttonState1 == LOW&&temperatur<=96)
{
digitalWrite(HEAT, HIGH);
}
else
{
digitalWrite(HEAT, LOW);
}
if
(buttonState1 == LOW&&buttonState2 ==LOW&&temperatur<=123)
{
digitalWrite(HEAT, HIGH);
}
else
{
digitalWrite(HEAT, LOW);
}
}
Dein Flackern wird u.a. durch dein delay() hervor gerufen.
Das solltest du entfernen und evtl. durch eine Funktion mit millis() aufbauen.
Sieh dir dazu das Beispiel BlinkWithoutDelay in der IDE an.
danke für die schnelle Rückmeldung. Ich habe deinen Rat befolgt und es mit einem millis() anstatt delay() versucht. Die HEAT Diode flackert dann zwar nicht mehr, sendet aber kein vollen 3 Volt bzw. leuchtet nur schwach. Ich bin Anfänger und lerne gerne dazu wenn es konstruktive Kritik gibt. Mein letzter Post war nicht an dich gerichtet.
Hallo fony,
ich gebe zu das sieht wirr aus und ist nur eine Warnung. Das sagt mein Complier auch. Aber es funktioniert. Und das witzige oder wie auch immer ist, dass wenn ich die drei Zeilen mit "//" deaktiviere flackert die besagte LED noch immer... alles leider schon veruscht. Ich werde es nochmal versuchen zu überarbeiten und zu vereinfachen und bis ich es nicht gelöst habe aus dem Sketch nehmen.