Hydrogreeen
Neuer Benutzer
Hey ich bin kurz vorm Ziel für meine Technikerarbeit und komme trotzdem nicht weiter.
Es geht um eine Lüftersteuerung von 2 Lüftern, die mithilfe von Temperatursensoren mit einander kabellos kommunizieren.
Plattform Nummer 1 funktioniert Tadellos.
Die 2. jedoch nicht ganz, da läuft der Lüfter die ganze Zeit.
Ich hoffe mir kann einer Sagen wieso das so ist.
Quellcode:
Das hier ist quasi der Senderteil (der an sich autark funktioniert)
Es geht um eine Lüftersteuerung von 2 Lüftern, die mithilfe von Temperatursensoren mit einander kabellos kommunizieren.
Plattform Nummer 1 funktioniert Tadellos.
Die 2. jedoch nicht ganz, da läuft der Lüfter die ganze Zeit.
Ich hoffe mir kann einer Sagen wieso das so ist.
Quellcode:
C++:
#include <SPI.h>
#include <LiquidCrystal_I2C.h>
#include <nRF24L01.h>
#include <RF24.h>
#include <OneWire.h>
#include <DallasTemperature.h>
#define ONE_WIRE_BUS 2
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
#define TEMPERATURE_PRECISION 9
unsigned long lastMillis1;
unsigned long lastMillis2;
unsigned long lastMillis3;
float temp1;
float temp2;
int innenTemp1;
RF24 radio(9, 10); // CE, CSN
const byte addresses [][6] = {"00002", "00001"};
int fan_pin = 3;
boolean fan_state1;
void setup() {
pinMode(fan_pin, OUTPUT);
radio.begin(); //Starting the radio communication
radio.setDataRate( RF24_250KBPS );
radio.setChannel(75);
radio.setAutoAck(1);
radio.openWritingPipe(addresses[1]);
radio.openReadingPipe(1, addresses[0]);
radio.setPALevel(RF24_PA_MIN);
sensors.begin();
Wire.begin(0);
Serial.begin(9600);
lastMillis1 = millis(); //Temp. einlesen
lastMillis2 = millis(); //Daten senden
lastMillis3 = millis(); //Daten lesen
}
void loop()
{
radio.stopListening();
if ((millis() - lastMillis1) >= 1000) {
sensors.requestTemperatures();
temp1 = sensors.getTempCByIndex(0);
innenTemp1 = temp1 * 100;
Serial.print("Temp1: ");
Serial.print(innenTemp1);
Serial.print(" °C\n");
lastMillis1 = millis();
}
radio.write(&innenTemp1, sizeof(innenTemp1));
radio.startListening();
if(radio.available()) { radio.read(&fan_state1, sizeof(fan_state1));
}
if (fan_state1 = true) { digitalWrite(fan_pin, HIGH); }
if (fan_state1 = false) { digitalWrite(fan_pin, LOW); }
radio.stopListening();
}
Das hier ist quasi der Senderteil (der an sich autark funktioniert)
C++:
radio.stopListening();
if (innenTemp1 > aussenTemp2) { fan_state1 = true; digitalWrite(fan_pin, HIGH); }
if (innenTemp1 < aussenTemp2) { digitalWrite(fan_pin, LOW); }
radio.startListening();
}
Zuletzt von einem Moderator bearbeitet: