Hallo Ich versuche seit Donnerstag dem arduino das laufen mit 2 verschindende Sensoren auf zudrucken. Nur irgend wo ist noch ein Fehler der das auf spielen unterbindet. Ich habe alle sensoren angeben. Ich habe alle pins fest gelegt. Habe es mit andern vorlagen verglichen nix. #include <OneWire.h> #include <DallasTemperature.h> #include "DHT.h" #define DHTPIN = 10; //Am2301 #define OneWire ds(2); // ds18B20 DeviceAddress sensor1 = { 0x28, 0xFF, 0x86, 0x2E, 0x74, 0x16, 0x3, 0xAF }; DeviceAddress sensor2 = { 0x28, 0xFF, 0x5, 0x72, 0x74, 0x16, 0x3, 0xE0 }; DeviceAddress sensor3 = { 0x28, 0xFF, 0x2B, 0x3F, 0x73, 0x16, 0x5, 0x60 }; DeviceAddress sensor4 = { 0x28, 0xFF, 0xC5, 0x11, 0x73, 0x16, 0x5, 0x7D }; DeviceAddress sensor5 = { 0x28, 0xFF, 0xC, 0x68, 0x74, 0x16, 0x3, 0x30 }; char sensor1Name[] = "Temp1: "; char sensor2Name[] = "Temp2: "; char sensor3Name[] = "Temp3: "; char sensor4Name[] = "Temp4: "; char sensor5Name[] = "Temp5: "; void setup(void) { Serial.begin(9600); dht.begin(); } void writeTimeToScratchpad(byte* address) { ds.reset(); ds.select(address); scratchpad ds.write(0x44,1); delay(2500); } void readTimeFromScratchpad(byte* address, byte* data) { ds.reset(); ds.select(address); ds.write(0xBE); for (byte i=0;i<9;i++){ data[i] = ds.read(); } } float getTemperature(byte* address) { int tr; byte data[12]; writeTimeToScratchpad(address); readTimeFromScratchpad(address,data); //put in temp all the 8 bits of LSB (least significant byte) tr = data[0]; if (address[0] == 0x10) // DS18S20 { //check for negative temperature if (data[1] > 0x80) { tr = !tr + 1; //two’s complement adjustment tr = tr * -1; //flip value negative. } //drop bit 0 tr = tr >> 1; //COUNT PER Celsius degree (10h) int cpc = data[7]; //COUNT REMAIN (0Ch) int cr = data[6]; return tr - (float)0.25 + (cpc - cr)/(float)cpc; } else // DS18B20 { return ((data[1] << 8) + tr) * (float)0.0625; } } void loop(void) { float temp1 = getTemperature(sensor1); float temp2 = getTemperature(sensor2); float temp3 = getTemperature(sensor3); float temp4 = getTemperature(sensor4); float temp5 = getTemperature(sensor5); Serial.print(sensor1Name); Serial.print(temp1); Serial.println(" C"); Serial.print(sensor2Name); Serial.print(temp2); Serial.println(" C"); Serial.print(sensor3Name); Serial.print(temp3); Serial.println(" C"); Serial.print(sensor4Name); Serial.print(temp4); Serial.println(" C"); Serial.print(sensor5Name); Serial.print(temp5); Serial.println(" C"); delay(2000); float h = dht.readHumidity(); float t = dht.readTemperature(); // Check if any reads failed and exit early (to try again). if (isnan(h) || isnan(t) || isnan(f)) { Serial.println("Failed to read from DHT sensor!"); return; } float hif = dht.computeHeatIndex(f, h); float hic = dht.computeHeatIndex(t, h, false); Serial.print("Humidity: "); Serial.print(h); Serial.print(" %\t"); Serial.print("Temperature: "); Serial.print(t); Serial.print(" *C "); Serial.print("Heat index: "); Serial.print(hic); Serial.print(" *C "); } Fehlermeldung ist diesen hier: ES läuft immer wieder auf das >ds< raus was ich aber mit Pin 2 oben verbunden habe. ------------------------------------------------------------------------ - In function 'void setup()': error: 'dht' was not declared in this scope dht.begin(); ^ In function 'void writeTimeToScratchpad(byte*)': error: 'ds' was not declared in this scope ds.reset(); ^ In function 'void readTimeFromScratchpad(byte*, byte*)': error: 'ds' was not declared in this scope ds.reset(); ^ In function 'void loop()': error: 'dht' was not declared in this scope float h = dht.readHumidity(); ^ error: 'f' was not declared in this scope if (isnan(h) || isnan(t) || isnan(f)) { ^ error: 'f' was not declared in this scope float hif = dht.computeHeatIndex(f, h); ^ exit status 1 'dht' was not declared in this scope Ware SUPER wenn mir einer Hilfe Stellung geben kann. Vielen DANK.
Moin. Du legst nirgends eine Variable dht an.Deswegen kennt er die nicht. Das da makro ist auch kein Highlight. Da solltest du sicherlich eine Variable anlegen.
DAVID -. schrieb: > In function 'void setup()': > > error: 'dht' was not declared in this scope > > dht.begin(); Da steht doch, wo das Problem liegt: Du sagst dem Compiler, er möge die Methode begin() des Objektes dht ausführen. Der Compiler weiss aber gar nicht, was für ein Objekt dht ist, da Du es nicht deklariert hast.
ein Blick in das example (das wohl jeder arduino lib beiliegt) offenbart folgendes
1 | // Initialize DHT sensor.
|
2 | // Note that older versions of this library took an optional third parameter to
|
3 | // tweak the timings for faster processors. This parameter is no longer needed
|
4 | // as the current DHT reading algorithm adjusts itself to work on faster procs.
|
5 | DHT dht(DHTPIN, DHTTYPE); |
dht ist keine Veriable die du "hinterlegst", sondern ein Objekt das du instanzierst ... etwas Beschäftigung mit den Grundlagen des Systems, das du verwenden willst wäre angebracht.
:
Bearbeitet durch User
Meint ihr das so ? #include <OneWire.h> #include <DallasTemperature.h> #include "DHT.h" #define OneWire ds(2); #define DHT dht(10, Am2301); Ändert auch nichts leider. oder wo oder muss ich das setzten ?
sag mal, wie wäre es tatsächlich mal mit einem Blick ins Beispiel??? "Menüleiste->Datei/Beispiele/DHT/DHT Tester" (oder so ähnlich) Solche Aussagen wie "Habe es mit andern vorlagen verglichen nix." sind somit leicht als Lüge enttarnt...
Ich habe die letzten tage damit zugebracht ist also NICHT gelogen ich habe beispiele vom Programm aber auch von Webseiten versucht. Habe sogar in einer Verzweiflungstat alle verweise mal angefugt aber selbst damit gehts nicht. #include <OneWire.h> #include <DallasTemperature.h> #include "DHT.h" #include "dht.h" #define OneWire ds(10); #define DHT.PIN (2): #define DHTTYPE.DHT21; #define DHT dht(DHTPIN, DHTTYPE); Die beispiele einzeln laufen zusammen aber nicht mehr.
ich habe dir einige Posts oberhalb sogar den relevanten Teil aus dem Beispiel rauskopiert. Siehst du dort irgendwo ein "#define" ??? Wo die/eine korrekte Stelle (es gibt keine eindeutige) dafür ist kannst du selber aus dem Beispiel eruieren.
AHHH die Rätselslösung: #include <OneWire.h> #include <DallasTemperature.h> #include "DHT.h" OneWire ds(10); #define DHTPIN 2 #define DHTTYPE DHT21 DHT dht(DHTPIN, DHTTYPE); Jetzt gehts! SUPER DANKE Du weist nicht auch noch wie ich von ein Loop in den nächsten springen kann ?
DAVID -. schrieb: > #include <OneWire.h> > #include <DallasTemperature.h> > #include "DHT.h" > OneWire ds(10); > #define DHTPIN 2 > #define DHTTYPE DHT21 > DHT dht(DHTPIN, DHTTYPE); Gruselig.
Es gibt doch jetzt sogar C++ Bücher frei im Internet. Warum liest die keiner mehr? Warum glaubt jeder er könne programmieren, indem er copy und paste von ein paar Codebeispielen macht.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.