Liebes Forum,
ich bin neu hier. Ich habe nun schon eine Menge mitgelesen, nun sitze ich vor meinem ersten "Problem" und hoffe es weiß jemand rat. Ich habe inzwischen einiges an Code Umstellung und Variablen-Änderungen ausprobiert, aber es findet sich keine Lösung da ich den Fehler nicht klar reproduzieren kann und es mehr wie ein Zufall wirkt (Wäre komisch, scheint aber so).
Zum Projekt/Idee:
Ich habe im Keller einen Pufferspeicher stehen (speichert warmes Wasser in unterschiedlichen Schichten/Temperaturen). Dieser bekommt sein warmes Wasser aus einem Kaminofen im Erdgeschoss. Wenn der Ofen brennt wird durch Pumpen kaltes Wasser unten aus dem Speicher entnommen und als warmes Wasser wieder oben "aufgeschichtet". Im Idealfall heize ich den Ofen nur solange bis ausreichend warmes Wasser im Speicher vorhanden ist. ->dieser versorgt dann die Heizkreise im Haus mit Wärme durch entnähme des warmen Wassers oben und zurückgeben des kalten Wassers unten.
Ich würde gerne am Speicher 8 Messpunkte mit Thermistoren anlegen. Diese werden dann vom Arduino in Celsius Temperaturen umgerechnet und einmal in der seriellen Schnittstelle ausgegeben, sowie je Messpunkt an einer RGB-LED in einer Farbrange von Blau (0°C) bis Rot (100°C). Diese sollen später im Erdgeschoss den Speicher Füllstand als Farbverlauf anzeigen. Aktuell arbeite ich mit RGB-LED später soll es ein adressable RGB-Strip werden.
Das hat auch alles funktioniert -> Nun möchte ich aber das es nur angezeigt wird wenn ich eine Abfrage im EG mache. Dazu habe ich einen Infrarot Obstacle Avoidance Module an PIN 2, sowie die sleep Funktion verwendet.
Das funktioniert auch ab und zu. Manchmal schaltet das Board aber ab und die RGB-LED leuchtet noch blau oder blau+rot. Wenn man den Näherungssensor aktiviert springt es immer auf die richtige Farbe, aber es geht eben nicht immer aus, tut es auch ab und zu, aber eben nicht zuverlässig.
#include <avr/sleep.h>
#define beta 3950 // beta des thermistor
#define resistance 10 //the value of the pull-up resistor
#define INT_PIN 2
/* Hier werden alle 8 LED definiert (aktuell nur 1 in Verwendung) */
byte R_1, G_1, B_1;
byte R_2, G_2, B_2;
byte R_3, G_3, B_3;
byte R_4, G_4, B_4;
byte R_5, G_5, B_5;
byte R_6, G_6, B_6;
byte R_7, G_7, B_7;
byte R_8, G_8, B_8;
void INT_PINisr(void)
/* ISR fuer Pin 2 */
{
/* detach Interrupt, damit er nur einmal auftritt */
detachInterrupt(0);
}
void enter_sleep(void)
{
attachInterrupt(0, INT_PINisr, LOW);
/* Arduino schlafen legen */
set_sleep_mode(SLEEP_MODE_PWR_DOWN);
sleep_enable();
sleep_mode();
sleep_disable();
}
void setup() {
Serial.begin(9600);
Serial.println("Starte ...");
/* Pin 2 als Interrupt-Pin, Pullup einschalten */
pinMode(INT_PIN, INPUT);
digitalWrite(INT_PIN, HIGH);
Serial.println("Init erfolgt ...");
delay(100);
}
void loop()
{
/* warten, bis der Interrupt-Eingang wieder frei ist */
while (digitalRead(INT_PIN) == LOW)
{
Serial.println("*** Schalte ab in spätestens 5 Sekunden ***");
delay(5000);
}
Serial.println("Abfrage beendet");
delay(100);
enter_sleep();
Serial.println("Abfrage gestartet");
delay(100);
/* Messung und Ausgabe LED1 */
pinMode(R_1, OUTPUT); // Rote LED als Ausgabe
pinMode(G_1, OUTPUT); // Grüne LED als Ausgabe - aktuell nicht in Verwendung
pinMode(B_1, OUTPUT); // Blaue LED als Ausgabe
long a_1 = analogRead(A0);
int temperature_1 = (beta / (log((1025.0 * 10 / a_1 - 10) / 10) + beta / 298.0) - 273.0) * 2.55 ; // Berechnung auf Celcius in Scala 255
G_1 = 0;
R_1 = 255-temperature_1; // 255 für 100°C, 0 für 0°C
B_1 = temperature_1/2.55; // 0 für 100°C, 255 für 0°C
float temp_1 = beta / (log((1025.0 * 10 / a_1 - 10) / 10) + beta / 298.0) - 273.0;
Serial.print("Die Temperatur an Messpunkt 1 beträgt: ");
Serial.print(temp_1); Serial.println("° Celsius");
delay(200);
analogWrite( 9, R_1);
analogWrite(10, G_1);
analogWrite(11, B_1);
}
Wenn ich es so zum laufen bekomme wurde ich im nächsten Schritte auf adressable RGB-Strip umstellen und dann die Kommunikation zwischen Keller und EG per Bluetooth lösen.
Ziel:
1 Board im Keller mit 8 analogen Ports mit Thermistoren + Bluetooth-Sender
1 Board im EG mit Näherungssensor und RGB-Strip + Bluetooth-Empfänger
Aber Schritt für Schritt ist mein erstes "Projekt"....
Ich hoffe damit kann man etwas anfangen und ich habe weder zu kurz noch zu lang beschrieben.