Hallo zusammen,
ich habe ein merkwürdiges Problem auf das ich momentan keine Lösung finde. Und zwar habe ich ein Programm welches zwei Klassen benutzt. Bei instantiiert die eine Klasse die andere Klasse mehrfach. Durch Initialisierungsfunktionen werden beide Klassen dann später korrekt "gestartet" wobei sie eigentlich einen Status via Serial.Print() ausgeben sollen.
Das interessante ist nun das das Programm nicht durchläuft, bzw sich aufhängt wenn ich es so definiere wie unten beschrieben.
Kommentiere ich jedoch die folgende Zeile aus: "Serial.println("CurrentArrayPosition:aaaaaaaaaaaaaaaaaaaaaaaaaaa");" funktioniert es.
#include <vector>
#include "DHT.h"
using std::vector;
//--------------------------------------------------------------------------------------------------------------------------------------------------------
class TemperatureSensor
{
public:
TemperatureSensor(unsigned int sensorPin, unsigned int amountOfTempValues);
void init();
private:
DHT* m_sensor;
unsigned int m_sensorPin;
float m_defaultTempValue;
double m_defaultTimeStampValue;
unsigned int m_amountOfTempValues;
vector<double> m_timeStamp;
vector<float> m_temperature;
vector<bool> m_temperatureFailure;
unsigned int m_currentArrayPosition;
};
TemperatureSensor::TemperatureSensor(unsigned int sensorPin, unsigned int amountOfTempValues) :
m_sensorPin(sensorPin), m_amountOfTempValues(amountOfTempValues), m_defaultTempValue(-999.9), m_defaultTimeStampValue(1000.0)
{
m_temperature.assign(m_amountOfTempValues, m_defaultTempValue);
m_timeStamp.assign(m_amountOfTempValues, m_defaultTimeStampValue);
m_sensor = new DHT(m_sensorPin, DHT11);
}
void TemperatureSensor::init()
{
m_sensor->begin();
Serial.println(" started.");
Serial.println("CurrentArrayPosition:aaaaaaaaaaaaaaaaaaaaaaaaaaa");
Serial.println("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa");
Serial.println("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa");
}
//--------------------------------------------------------------------------------------------------------------------------------------------------------
class TemperatureMeasurement
{
public:
TemperatureMeasurement(unsigned int amoutOfSensors, unsigned int temperatureSensorPins[], unsigned int amountOfTempValues);
void init();
private:
vector <unsigned int> m_sensorPinArray;
vector <TemperatureSensor> m_temperatureSensor;
unsigned int m_amountOfSensors;
unsigned int m_amountOfTempValues;
};
TemperatureMeasurement::TemperatureMeasurement(unsigned int amountOfSensors, unsigned int temperatureSensorPins[], unsigned int amountOfTempvalues) :
m_amountOfSensors(amountOfSensors), m_amountOfTempValues(amountOfTempvalues)
{
for (int i = 0; i < amountOfSensors; ++i)
{
unsigned int Zwischenwert = temperatureSensorPins[i];
m_sensorPinArray.push_back(Zwischenwert);
m_temperatureSensor.push_back(TemperatureSensor(Zwischenwert, m_amountOfTempValues));
}
}
void TemperatureMeasurement::init()
{
for (int i = 0; i < m_amountOfSensors; ++i)
{
m_temperatureSensor[i].init();
}
//Serial.print("Temperature Measurement: Measurement started with ");
//Serial.print(m_amountOfSensors);
//Serial.println(" Temperature Sensors");
Serial.println("ab");
}
//--------------------------------------------------------------------------------------------------------------------------------------------------------
unsigned int amoutOfSensors=3;
unsigned int temperatureSensorPins[] = { 2,3,4 };
unsigned int amountOfTempValues=10;
TemperatureMeasurement TestObjekt(amoutOfSensors, temperatureSensorPins, amountOfTempValues);
void setup()
{
Serial.begin(9600);
Serial.println("Before Init");
TestObjekt.init();
Serial.println("After Init");
}
void loop()
{
Serial.println("Loop");
}
Ich verzweifle gerade ein wenig. Auch wenn die Lösung es einfach Auskommentiert zu lassen wäre natürlich nahe liegend, jedoch würde ich gerne den Grundfehler kennen.
Beste Grüße