Hallo, Ich bin nach einigen Jahren Pause wieder dabei mich mit dem Arduino zu befassen. Und wie es so oft ist, komme ich nicht weiter, und möchte hier um Hilfe bitten.
Jedoch klemmt es im nächsten Schritt. Ich möchte gern mehrere Module nacheinander auslesen.
In der Zeile "Adafruit_MAX31865 max = Adafruit_MAX31865(10);" wähle ich den CS_Pin für mein Hardware SPI aus in dem Fall Pin 10. Für das 2. Modul Sollte zb. CS_Pin 11 gewählt werden. Doch leider bekomme ich nicht den dreh raus wie ich diese im Loop nacheinander auslese.Ist die Library nur für einen Controller geschrieben? Hier ist der Code zum auslesen eines PT1000. Könnte mir jemand helfen wie ich weitere auslesen kann?
#include <Adafruit_MAX31865.h> Adafruit_MAX31865 max = Adafruit_MAX31865(10); #define RREF 4300.0 void setup() { Serial.begin(115200); Serial.println("Adafruit MAX31865 PT1000 Sensor Test!"); max.begin(MAX31865_2WIRE); // set to 2WIRE or 4WIRE as necessary } void loop() { uint16_t rtd = max.readRTD(); Serial.print("Temperature = "); Serial.println(max.temperature(1000, RREF)); }
Ok, Objektorientiert klingt für mich gut. Ich gebe zu, meine Programmierkenntnisse sind eher schlecht, vermutlich ist die Lösung auch recht einfach. Trotzdem, es löst sich für mich nicht auf. Wenn ich mehrere "Adafruit_MAX31865 max = Adafruit_MAX31865(XX); anlege geht es nicht, umbenennen geht nicht,..
Wie mache ich es mit der vorhandenen Library,das ich mehrere Objekte erzeugen kann?
Biele01:
Ok, Objektorientiert klingt für mich gut. Ich gebe zu, meine Programmierkenntnisse sind eher schlecht, vermutlich ist die Lösung auch recht einfach. Trotzdem, es löst sich für mich nicht auf. Wenn ich mehrere "Adafruit_MAX31865 max = Adafruit_MAX31865(XX); anlege geht es nicht, umbenennen geht nicht,..
Wie mache ich es mit der vorhandenen Library,das ich mehrere Objekte erzeugen kann?
Hast du dir das Beispiel in der Library angesehen ?
Der Aufruf des Objektes verlangt alle Pins des SPI, nicht nur CS.
Hey Guys.
I also had the problem using more than one MAX31865. I solved the problem with take over chip select to the MAX31865.cpp library.
I use one library because of the delay inside (10ms and 65ms).
due to problems with other functions they are time related, i had to make sure that pass through when time is not gone.
For reading 12 of MAX31865 breakeout from adafruit, with normal library, i solved like this.
Step is variable name in the header MAX31865.h under puplic:
[code]
float temperature(float RTDnominal, float refResistor);
int read_cs(int main_cs);//------------------------------------------------->
[code]
int NameTemp(int NameCounter){
switch (NameCounter) {
case 42:T_FW_VL=max.temperature(100, RREF);break;
case 43:T_FBH_VL=max.temperature(100, RREF);
case 44:T_Boiler=max.temperature(100, RREF);
case 45: T.....
case 59: T....
case 60: T....
[/code]
use the values however you want. --> in my case in the display (and logic for controll devices)
For example
Serial.print("Temperature is: ");
Serial.println(T_FW_VL);
You can also do other way to read out and save the values.
if you have the delay problem like me, then you have to do little bit more in the library and the main code.
i am not sure if this solution is important for other people, but if yes i can also share the code changes of the library and the code how i read the values.